Browse Source

removed CATEGORY_TREE_ID

Rafał Pitoń 9 years ago
parent
commit
c19bdb192d

+ 2 - 4
misago/categories/admin.py

@@ -2,11 +2,9 @@ from django.conf.urls import url
 from django.utils.translation import ugettext_lazy as _
 
 from misago.categories.views.categoriesadmin import (
-    CategoriesList, NewCategory, EditCategory, MoveDownCategory,
-    MoveUpCategory, DeleteCategory)
+    CategoriesList, NewCategory, EditCategory, MoveDownCategory, MoveUpCategory, DeleteCategory)
 from misago.categories.views.permsadmin import (
-    CategoryRolesList, NewCategoryRole, EditCategoryRole, DeleteCategoryRole,
-    CategoryPermissions, RoleCategoriesACL)
+    CategoryRolesList, NewCategoryRole, EditCategoryRole, DeleteCategoryRole, CategoryPermissions, RoleCategoriesACL)
 
 
 class MisagoAdminExtension(object):

+ 4 - 3
misago/categories/forms.py

@@ -1,13 +1,13 @@
 from django.db import models
 from django.utils.html import conditional_escape, mark_safe
 from django.utils.translation import ugettext_lazy as _
-
 from mptt.forms import *  # noqa
 
 from misago.core import forms
 from misago.core.validators import validate_sluggable
+from misago.threads.threadtypes import trees_map
 
-from misago.categories.models import CATEGORIES_TREE_ID, Category, CategoryRole
+from misago.categories.models import THREADS_ROOT_NAME, Category, CategoryRole
 
 
 """
@@ -18,7 +18,8 @@ class AdminCategoryFieldMixin(object):
         self.base_level = kwargs.pop('base_level', 1)
         kwargs['level_indicator'] = kwargs.get('level_indicator', '- - ')
 
-        queryset = Category.objects.filter(tree_id=CATEGORIES_TREE_ID)
+        threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
+        queryset = Category.objects.filter(tree_id=threads_tree_id)
         if not kwargs.pop('include_root', False):
             queryset = queryset.exclude(special_role="root_category")
 

+ 6 - 4
misago/categories/models.py

@@ -11,11 +11,12 @@ from misago.acl.models import BaseRole
 from misago.conf import settings
 from misago.core.cache import cache
 from misago.core.utils import slugify
+
 from misago.threads.threadtypes import trees_map
 
 
 CACHE_NAME = 'misago_categories_tree'
-CATEGORIES_TREE_ID = 1
+THREADS_ROOT_NAME = 'root_category'
 
 
 class CategoryManager(TreeManager):
@@ -35,10 +36,11 @@ class CategoryManager(TreeManager):
         return special_category
 
     def all_categories(self, include_root=False):
-        qs = self.filter(tree_id=CATEGORIES_TREE_ID)
+        tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
+        queryset = self.filter(tree_id=tree_id)
         if not include_root:
-            qs = qs.filter(level__gt=0)
-        return qs.order_by('lft')
+            queryset = queryset.filter(level__gt=0)
+        return queryset.order_by('lft')
 
     def get_cached_categories_dict(self):
         categories_dict = cache.get(CACHE_NAME, 'nada')

+ 6 - 6
misago/categories/tests/test_category_model.py

@@ -2,8 +2,9 @@ from django.utils import timezone
 
 from misago.core.testutils import MisagoTestCase
 from misago.threads import testutils
+from misago.threads.threadtypes import trees_map
 
-from misago.categories.models import CATEGORIES_TREE_ID, Category
+from misago.categories.models import THREADS_ROOT_NAME, Category
 
 
 class CategoryManagerTests(MisagoTestCase):
@@ -39,7 +40,8 @@ class CategoryManagerTests(MisagoTestCase):
         test_dict = Category.objects.get_categories_dict_from_db()
 
         for category in Category.objects.all():
-            if category.tree_id == CATEGORIES_TREE_ID:
+            threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
+            if category.tree_id == threads_tree_id:
                 self.assertIn(category.id, test_dict)
             else:
                 self.assertNotIn(category.id, test_dict)
@@ -165,10 +167,8 @@ class CategoryModelTests(MisagoTestCase):
         self.assertEqual(self.category.last_thread_title, new_thread.title)
         self.assertEqual(self.category.last_thread_slug, new_thread.slug)
         self.assertEqual(self.category.last_poster, new_thread.last_poster)
-        self.assertEqual(self.category.last_poster_name,
-                         new_thread.last_poster_name)
-        self.assertEqual(self.category.last_poster_slug,
-                         new_thread.last_poster_slug)
+        self.assertEqual(self.category.last_poster_name, new_thread.last_poster_name)
+        self.assertEqual(self.category.last_poster_slug, new_thread.last_poster_slug)
 
     def test_empty_last_thread(self):
         """empty_last_thread empties last category thread"""

+ 6 - 4
misago/categories/views/categoriesadmin.py

@@ -2,12 +2,12 @@ from django.contrib import messages
 from django.shortcuts import redirect
 from django.utils.translation import ugettext_lazy as _
 
-from misago.admin.views import generic
 from misago.acl import version as acl_version
+from misago.admin.views import generic
+from misago.threads.threadtypes import trees_map
 
-from misago.categories.models import (
-    CATEGORIES_TREE_ID, Category, RoleCategoryACL)
 from misago.categories.forms import CategoryFormFactory, DeleteFormFactory
+from misago.categories.models import THREADS_ROOT_NAME, Category, RoleCategoryACL
 
 
 class CategoryAdmin(generic.AdminBaseMixin):
@@ -19,8 +19,10 @@ class CategoryAdmin(generic.AdminBaseMixin):
     def get_target(self, kwargs):
         target = super(CategoryAdmin, self).get_target(kwargs)
 
+        threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
+
         target_is_special = bool(target.special_role)
-        target_not_in_categories_tree = target.tree_id != CATEGORIES_TREE_ID
+        target_not_in_categories_tree = target.tree_id != threads_tree_id
 
         if target.pk and (target_is_special or target_not_in_categories_tree):
             raise Category.DoesNotExist()

+ 2 - 4
misago/categories/views/permsadmin.py

@@ -8,10 +8,8 @@ from misago.acl.forms import get_permissions_forms
 from misago.acl.models import Role
 from misago.acl.views import RoleAdmin, RolesList
 
-from misago.categories.forms import (CategoryRoleForm, CategoryRolesACLFormFactory,
-                                 RoleCategoryACLFormFactory)
-from misago.categories.views.categoriesadmin import (
-    CategoryAdmin, CategoriesList)
+from misago.categories.forms import CategoryRoleForm, CategoryRolesACLFormFactory, RoleCategoryACLFormFactory
+from misago.categories.views.categoriesadmin import CategoryAdmin, CategoriesList
 from misago.categories.models import Category, CategoryRole, RoleCategoryACL
 
 

+ 5 - 2
misago/threads/api/threadendpoints/merge.py

@@ -5,13 +5,14 @@ from django.utils.translation import gettext as _, ungettext
 from rest_framework.response import Response
 
 from misago.acl import add_acl
-from misago.categories.models import CATEGORIES_TREE_ID, Category
+from misago.categories.models import THREADS_ROOT_NAME, Category
 from misago.categories.permissions import can_see_category, can_browse_category
 
 from misago.threads.events import record_event
 from misago.threads.models import Thread
 from misago.threads.permissions import can_see_thread
 from misago.threads.serializers import ThreadListSerializer, MergeThreadsSerializer
+from misago.threads.threadtypes import trees_map
 from misago.threads.utils import add_categories_to_threads
 
 
@@ -66,9 +67,11 @@ def clean_threads_for_merge(request):
             MERGE_LIMIT)
         raise MergeError(message % {'limit': MERGE_LIMIT})
 
+    threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
+
     threads_queryset = Thread.objects.filter(
         id__in=threads_ids,
-        category__tree_id=CATEGORIES_TREE_ID,
+        category__tree_id=threads_tree_id,
     ).select_related('category').order_by('-id')
 
     threads = []

+ 14 - 13
misago/threads/api/threads.py

@@ -1,13 +1,12 @@
 from django.core.exceptions import PermissionDenied
 from django.db import transaction
 from django.utils.translation import gettext as _
-
 from rest_framework import viewsets
 from rest_framework.decorators import detail_route, list_route
 from rest_framework.response import Response
 
 from misago.acl import add_acl
-from misago.categories.models import CATEGORIES_TREE_ID, Category
+from misago.categories.models import THREADS_ROOT_NAME, Category
 from misago.categories.permissions import allow_see_category, allow_browse_category
 from misago.core.shortcuts import get_int_or_404, get_object_or_404
 from misago.readtracker.categoriestracker import read_category
@@ -18,6 +17,7 @@ from misago.threads.api.threadendpoints.patch import thread_patch_endpoint
 from misago.threads.models import Subscription
 from misago.threads.moderation import threads as moderation
 from misago.threads.subscriptions import make_subscription_aware
+from misago.threads.threadtypes import trees_map
 from misago.threads.viewmodels.thread import ForumThread
 
 
@@ -48,13 +48,23 @@ class ViewSet(viewsets.ViewSet):
         else:
             raise PermissionDenied(_("You don't have permission to delete this thread."))
 
+
+class ThreadViewSet(ViewSet):
+    thread = ForumThread
+
+    @list_route(methods=['post'])
+    def merge(self, request):
+        return threads_merge_endpoint(request)
+
     @list_route(methods=['post'])
     def read(self, request):
         if request.query_params.get('category'):
+            threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
+
             category_id = get_int_or_404(request.query_params.get('category'))
-            category = get_object_or_404(Category.objects,
+            category = get_object_or_404(Category,
                 id=category_id,
-                tree_id=self.TREE_ID,
+                tree_id=threads_tree_id,
             )
 
             allow_see_category(request.user, category)
@@ -64,12 +74,3 @@ class ViewSet(viewsets.ViewSet):
 
         read_category(request.user, category)
         return Response({'detail': 'ok'})
-
-
-class ThreadViewSet(ViewSet):
-    thread = ForumThread
-    TREE_ID = CATEGORIES_TREE_ID
-
-    @list_route(methods=['post'])
-    def merge(self, request):
-        return threads_merge_endpoint(request)

+ 5 - 4
misago/threads/serializers/moderation.py

@@ -1,21 +1,22 @@
 from django.forms import ValidationError
 from django.utils.translation import ugettext as _
-
 from rest_framework import serializers
 
 from misago.acl import add_acl
-from misago.categories.models import CATEGORIES_TREE_ID, Category
+from misago.categories.models import THREADS_ROOT_NAME, Category
 from misago.categories.permissions import can_see_category, can_browse_category
 
 from misago.threads.models import THREAD_WEIGHT_DEFAULT, THREAD_WEIGHT_GLOBAL
 from misago.threads.permissions import allow_start_thread
+from misago.threads.threadtypes import trees_map
 from misago.threads.validators import validate_title
 
 
 def validate_category(user, category_id, allow_root=False):
     try:
+        threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
         category = Category.objects.get(
-            tree_id=CATEGORIES_TREE_ID,
+            tree_id=threads_tree_id,
             id=category_id,
         )
     except Category.DoesNotExist:
@@ -80,4 +81,4 @@ class MergeThreadsSerializer(serializers.Serializer):
         if is_closed and not self.category.acl.get('can_close_threads'):
             raise ValidationError(_("You don't have permission to close "
                                     "threads in this category."))
-        return is_closed
+        return is_closed

+ 5 - 2
misago/threads/tests/test_threads_api.py

@@ -2,17 +2,20 @@ import json
 
 from misago.acl.testutils import override_acl
 from misago.users.testutils import AuthenticatedUserTestCase
-from misago.categories.models import CATEGORIES_TREE_ID, Category
+from misago.categories.models import THREADS_ROOT_NAME, Category
 
 from misago.threads import testutils
 from misago.threads.models import Thread
+from misago.threads.threadtypes import trees_map
 
 
 class ThreadsApiTestCase(AuthenticatedUserTestCase):
     def setUp(self):
         super(ThreadsApiTestCase, self).setUp()
 
-        self.root = Category.objects.get(tree_id=CATEGORIES_TREE_ID, level=0)
+        threads_tree_id = trees_map.get_tree_id_for_root(THREADS_ROOT_NAME)
+
+        self.root = Category.objects.get(tree_id=threads_tree_id, level=0)
         self.category = Category.objects.get(slug='first-category')
 
         self.thread = testutils.post_thread(category=self.category)