Ralfp 12 лет назад
Родитель
Сommit
cce3501140
3 измененных файлов с 17 добавлено и 27 удалено
  1. 6 6
      misago/threads/acl.py
  2. 4 9
      misago/threads/views/list.py
  3. 7 12
      misago/threads/views/posting.py

+ 6 - 6
misago/threads/acl.py

@@ -134,9 +134,9 @@ class ThreadsACL(BaseACL):
     def can_start_threads(self, forum):
         try:
             forum_role = self.acl[forum.pk]
-            if not forum_role['can_read_threads'] or not not forum_role['can_read_threads']:
+            if forum_role['can_read_threads'] == 0 or forum_role['can_start_threads'] == 0:
                 return False
-            if forum.closed and not forum_role['can_close_threads']:
+            if forum.closed and forum_role['can_close_threads'] == 0:
                 return False
             return True
         except KeyError:
@@ -145,9 +145,9 @@ class ThreadsACL(BaseACL):
     def allow_new_threads(self, forum):
         try:
             forum_role = self.acl[forum.pk]
-            if not forum_role['can_read_threads'] or not not forum_role['can_read_threads']:
+            if forum_role['can_read_threads'] == 0 or forum_role['can_start_threads'] == 0:
                 raise ACLError403(_("You don't have permission to start new threads in this forum."))
-            if forum.closed and not forum_role['can_close_threads']:
+            if forum.closed and forum_role['can_close_threads'] == 0:
                 raise ACLError403(_("This forum is closed, you can't start new threads in it."))
         except KeyError:
             raise ACLError403(_("You don't have permission to start new threads in this forum."))
@@ -196,8 +196,8 @@ def build_forums(acl, perms, forums, forum_roles):
                 for p in forum_role:
                     if p in ['attachment_size', 'attachment_limit'] and role[p] == 0:
                         forum_role[p] = 0
-                    elif role[p] > forum_role[p]:
-                        forum_role[p] = role[p]
+                    elif int(role[p]) > forum_role[p]:
+                        forum_role[p] = int(role[p])
             except KeyError:
                 pass
         acl.threads.acl[forum.pk] = forum_role

+ 4 - 9
misago/threads/views/list.py

@@ -10,15 +10,8 @@ from misago.views import error403, error404
 
 class List(BaseView):
     def fetch_forum(self, forum):
-        try:
-            self.forum = Forum.objects.get(pk=forum, type='forum')
-            self.request.acl.forums.check_forum(self.forum)
-        except Forum.DoesNotExist:
-            return error404(self.request)
-        except ACLError404 as e:
-            return error404(self.request, e.message)
-        except ACLError403 as e:
-            return error403(self.request, e.message)
+        self.forum = Forum.objects.get(pk=forum, type='forum')
+        self.request.acl.forums.check_forum(self.forum)
         
     def fetch_threads(self, page):
         self.threads = Thread.objects.filter(forum=self.forum).order_by('-last').all()
@@ -28,6 +21,8 @@ class List(BaseView):
         try:
             self.fetch_forum(forum)
             self.fetch_threads(page)
+        except Forum.DoesNotExist:
+            return error404(self.request)
         except ACLError403 as e:
             return error403(args[0], e.message)
         except ACLError404 as e:

+ 7 - 12
misago/threads/views/posting.py

@@ -16,25 +16,20 @@ from misago.utils import slugify
 
 class Posting(BaseView):
     def fetch_forum(self, kwargs):
-        try:
-            self.forum = Forum.objects.get(pk=kwargs['forum'], type='forum')
-            self.request.acl.forums.check_forum(self.forum)
-            self.request.acl.threads.allow_new_threads(self.forum)
-        except Forum.DoesNotExist:
-            return error404(self.request)
-        except ACLError404 as e:
-            return error404(self.request, e.message)
-        except ACLError403 as e:
-            return error403(self.request, e.message)
+        self.forum = Forum.objects.get(pk=kwargs['forum'], type='forum')
+        self.request.acl.forums.check_forum(self.forum)
+        self.request.acl.threads.allow_new_threads(self.forum)
         
     def __call__(self, request, **kwargs):
         self.request = request
         try:
             self.fetch_forum(kwargs)
+        except Forum.DoesNotExist:
+            return error404(self.request)
         except ACLError403 as e:
-            return error403(args[0], e.message)
+            return error403(request, e.message)
         except ACLError404 as e:
-            return error404(args[0], e.message)
+            return error404(request, e.message)
         
         message = request.messages.get_message('threads')
         if request.method == 'POST':