Browse Source

Bugfix and remove magic number.

Rafał Pitoń 11 years ago
parent
commit
30b5f7c399
2 changed files with 13 additions and 6 deletions
  1. 4 1
      misago/forums/models.py
  2. 9 5
      misago/forums/views.py

+ 4 - 1
misago/forums/models.py

@@ -6,6 +6,9 @@ from misago.admin import site
 from misago.core.utils import subset_markdown, slugify
 
 
+FORUMS_TREE_ID = 1
+
+
 class ForumManager(TreeManager):
     def private_threads(self):
         return self.get(special_role='private_threads')
@@ -14,7 +17,7 @@ class ForumManager(TreeManager):
         return self.get(special_role='root_category')
 
     def all_forums(self, include_root=False):
-        qs = self.filter(tree_id=1)
+        qs = self.filter(tree_id=FORUMS_TREE_ID)
         if not include_root:
             qs = self.filter(lft__gt=3)
         return qs.order_by('lft')

+ 9 - 5
misago/forums/views.py

@@ -4,7 +4,7 @@ from django.shortcuts import redirect
 from django.utils.translation import ugettext_lazy as _
 from misago.acl import cachebuster
 from misago.admin.views import generic
-from misago.forums.models import Forum
+from misago.forums.models import FORUMS_TREE_ID, Forum
 from misago.forums.forms import ForumFormFactory, DeleteFormFactory
 
 
@@ -16,7 +16,11 @@ class ForumAdmin(generic.AdminBaseMixin):
 
     def get_target(self, kwargs):
         target = super(ForumAdmin, self).get_target(kwargs)
-        if target.pk and (target.tree_id != 1 or target.special_role):
+
+        target_is_special = bool(target.special_role)
+        target_not_in_forums_tree = target.tree_id != FORUMS_TREE_ID
+
+        if target.pk and (target_is_special or target_not_in_forums_tree):
             raise Forum.DoesNotExist()
         else:
             return target
@@ -29,15 +33,15 @@ class ForumsList(ForumAdmin, generic.ListView):
     def process_context(self, request, context):
         context['items'] = [f for f in context['items']]
 
-        levels_lists = {}
+        children_lists = {}
 
         for i, item in enumerate(context['items']):
             item.level_range = range(item.level - 1)
             item.first = False
             item.last = False
-            levels_lists.setdefault(item.level, []).append(item)
+            children_lists.setdefault(item.parent_id, []).append(item)
 
-        for level_items in levels_lists.values():
+        for level_items in children_lists.values():
             level_items[0].first = True
             level_items[-1].last = True