Rafał Pitoń 11 лет назад
Родитель
Сommit
4099149a27
3 измененных файлов с 26 добавлено и 7 удалено
  1. 3 3
      misago/forums/forms.py
  2. 17 1
      misago/forums/views/forumsadmin.py
  3. 6 3
      misago/forums/views/permsadmin.py

+ 3 - 3
misago/forums/forms.py

@@ -104,7 +104,7 @@ class ForumFormBase(forms.ModelForm):
                 raise forms.ValidationError(message)
 
         if data['role'] == 'redirect':
-            if not data.get('redirect'):
+            if not data.get('redirect_url'):
                 message = _("This forum is redirect, yet you haven't "
                             "specified URL to which it should redirect "
                             "after click.")
@@ -128,8 +128,8 @@ def ForumFormFactory(instance):
             empty_label=None),
         'copy_permissions': ForumChoiceField(
             label=_("Copy permissions"),
-            help_text=_("You can override this forum permissions with "
-                        "permissions of other forum selected here."),
+            help_text=_("You can replace this forum permissions with "
+                        "permissions copied from forum selected here."),
             queryset=Forum.objects.all_forums(),
             empty_label=_("Don't copy permissions"),
             base_level=1,

+ 17 - 1
misago/forums/views/forumsadmin.py

@@ -4,7 +4,7 @@ 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.forums.models import FORUMS_TREE_ID, Forum
+from misago.forums.models import FORUMS_TREE_ID, Forum, RoleForumACL
 from misago.forums.forms import ForumFormFactory, DeleteFormFactory
 
 
@@ -63,6 +63,22 @@ class ForumFormMixin(object):
                                     position='last-child',
                                     save=True)
 
+        if form.cleaned_data.get('copy_permissions'):
+            form.instance.forum_role_set.all().delete()
+            copy_from = form.cleaned_data['copy_permissions']
+
+            copied_acls = []
+            for acl in copy_from.forum_role_set.all():
+                copied_acls.append(RoleForumACL(
+                    role_id=acl.role_id,
+                    forum=form.instance,
+                    forum_role_id=acl.forum_role_id))
+
+            if copied_acls:
+                RoleForumACL.objects.bulk_create(copied_acls)
+
+            acl_version.invalidate()
+
         messages.success(request, self.message_submit % target.name)
 
 

+ 6 - 3
misago/forums/views/permsadmin.py

@@ -6,7 +6,8 @@ from misago.acl import version as acl_version
 from misago.acl.forms import get_permissions_forms
 from misago.acl.models import Role
 from misago.acl.views import RoleAdmin, RolesList
-from misago.forums.forms import ForumRoleForm, RoleForumACLFormFactory
+from misago.forums.forms import (ForumRoleForm, ForumRolesACLFormFactory,
+                                 RoleForumACLFormFactory)
 from misago.forums.views.forumsadmin import ForumAdmin, ForumsList
 from misago.forums.models import Forum, ForumRole, RoleForumACL
 
@@ -88,7 +89,8 @@ add link to it in forums list
 """
 templates_dir = 'misago/admin/forumroles'
 class ForumPermissions(ForumAdmin, generic.ModelFormView):
-    template = 'permissions.html'
+    templates_dir = 'misago/admin/forumroles'
+    template = 'forumroles.html'
 
     def real_dispatch(self, request, target):
         forum_roles = ForumRole.objects.order_by('name')
@@ -151,7 +153,8 @@ ForumsList.add_item_action(
 
 
 """
-Create forums perms view for perms role and register it in other admin
+Create role forums view for assinging forums to role,
+add link to it in user roles list
 """
 class RoleForumsACL(RoleAdmin, generic.ModelFormView):
     templates_dir = 'misago/admin/forumroles'