Browse Source

small cleanup and basic category acl exposition to frontend js

Rafał Pitoń 9 years ago
parent
commit
a1899a6f6d

+ 11 - 1
misago/categories/permissions.py

@@ -93,7 +93,17 @@ def add_acl_to_category(user, target):
 
 
 
 
 def serialize_categories_alcs(serialized_acl):
 def serialize_categories_alcs(serialized_acl):
-    serialized_acl.pop('categories')
+    categories_acl = []
+    for category, acl in serialized_acl.pop('categories').items():
+        if acl['can_browse']:
+            categories_acl.append({
+                'id': category,
+                'can_start_threads': acl.get('can_start_threads', False),
+                'can_reply_threads': acl.get('can_reply_threads', False),
+                'can_pin_threads': acl.get('can_pin_threads', 0),
+                'can_close_threads': acl.get('can_close_threads', False),
+            })
+    serialized_acl['categories'] = categories_acl
 
 
 
 
 def register_with(registry):
 def register_with(registry):

+ 3 - 3
misago/threads/permissions/threads.py

@@ -217,12 +217,12 @@ def build_acl(acl, roles, key_name):
     for category in categories:
     for category in categories:
         category_acl = acl['categories'].get(category.pk, {'can_browse': 0})
         category_acl = acl['categories'].get(category.pk, {'can_browse': 0})
         if category_acl['can_browse']:
         if category_acl['can_browse']:
-            acl['categories'][category.pk] = build_category_acl(
+            category_acl = acl['categories'][category.pk] = build_category_acl(
                 category_acl, category, categories_roles, key_name)
                 category_acl, category, categories_roles, key_name)
 
 
-            if acl['categories'][category.pk].get('can_see_reports'):
+            if category_acl.get('can_see_reports'):
                 acl['can_see_reports'].append(category.pk)
                 acl['can_see_reports'].append(category.pk)
-            if acl['categories'][category.pk].get('can_approve_content'):
+            if category_acl.get('can_approve_content'):
                 approve_in_categories.append(category)
                 approve_in_categories.append(category)
 
 
     return acl
     return acl

+ 1 - 0
misago/users/serializers/user.py

@@ -84,6 +84,7 @@ class AuthenticatedUserSerializer(serializers.ModelSerializer):
                 'misago:api:user-change-password', kwargs={'pk': obj.pk}),
                 'misago:api:user-change-password', kwargs={'pk': obj.pk}),
         }
         }
 
 
+
 class AnonymousUserSerializer(serializers.Serializer):
 class AnonymousUserSerializer(serializers.Serializer):
     id = serializers.ReadOnlyField()
     id = serializers.ReadOnlyField()
     acl = serializers.SerializerMethodField()
     acl = serializers.SerializerMethodField()