Просмотр исходного кода

Better order of visibility checks in thread views

Rafał Pitoń 10 лет назад
Родитель
Сommit
a56f472a38
1 измененных файлов с 8 добавлено и 4 удалено
  1. 8 4
      misago/threads/views/generic/base.py

+ 8 - 4
misago/threads/views/generic/base.py

@@ -46,7 +46,6 @@ class ThreadMixin(object):
     """
     def get_thread(self, request, lock=False, **kwargs):
         thread = self.fetch_thread(request, lock, **kwargs)
-        self.check_forum_permissions(request, thread.forum)
         self.check_thread_permissions(request, thread)
 
         if kwargs.get('thread_slug'):
@@ -71,8 +70,11 @@ class ThreadMixin(object):
         return get_object_or_404(queryset, **where)
 
     def check_thread_permissions(self, request, thread):
+        add_acl(request.user, thread.forum)
         add_acl(request.user, thread)
+
         allow_see_thread(request.user, thread)
+        allow_see_forum(request.user, thread.forum)
 
 
 class PostMixin(object):
@@ -81,10 +83,7 @@ class PostMixin(object):
 
         post.thread.forum = post.forum
 
-        self.check_forum_permissions(request, post.forum)
-        self.check_thread_permissions(request, post.thread)
         self.check_post_permissions(request, post)
-
         return post
 
     def fetch_post(self, request, lock=False, select_related=None,
@@ -109,8 +108,13 @@ class PostMixin(object):
         return get_object_or_404(queryset, **where)
 
     def check_post_permissions(self, request, post):
+        add_acl(request.user, post.forum)
+        add_acl(request.user, post.thread)
         add_acl(request.user, post)
+
         allow_see_post(request.user, post)
+        allow_see_thread(request.user, post.thread)
+        allow_see_forum(request.user, post.forum)
 
 
 class ViewBase(ForumMixin, ThreadMixin, PostMixin, View):