From abb2918d77f03dc6348ccac82efe8b9b10a949f3 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Thu, 7 Mar 2019 17:17:24 +0100 Subject: [PATCH] Improve forum detail permissions handling --- forums/templates/forums/forum_detail.html | 53 +++++++++++-------- .../templates/forums/forum_permissions.html | 4 +- forums/urls.py | 5 ++ forums/views.py | 18 ++++--- 4 files changed, 49 insertions(+), 31 deletions(-) diff --git a/forums/templates/forums/forum_detail.html b/forums/templates/forums/forum_detail.html index 7ffaf8e84..000f5fb3c 100644 --- a/forums/templates/forums/forum_detail.html +++ b/forums/templates/forums/forum_detail.html @@ -19,32 +19,39 @@ <div class="col-12"> <h3 class="highlight">{{ forum.name }}</h3> - <div> - {% if perms.forums.add_forum or "can_change_forum" in user_perms %} - <h4 class="highlight">Permissions on this Forum instance</h4> - - <p>Groups with permissions [click on the Group's name to manage permissions]:</p> - <ul> - {% for group in groups_with_perms %} - {% get_obj_perms group for forum as "group_perms" %} - <li><a href="{% url 'forums:forum_permissions' slug=forum.slug group_id=group.id %}">{{ group.name }}</a>: {{ group_perms }}</li> - {% empty %} - <li>No group has permissions on this Forum</li> - {% endfor %} - </ul> - - <p>Users with permissions:</p> - <ul> - {% for u in users_with_perms %} - {% get_obj_perms u for forum as "u_perms" %} - <li>{{ u.first_name }} {{ u.last_name }}: {{ u_perms }}</li> - {% endfor %} - </ul> - </div> - + {% if perms.forums.add_forum or "can_change_forum" in user_perms %} <ul> <li><a href="{% url 'forums:forum_create' parent_model='forum' parent_id=forum.id %}">Create a (sub)Forum within this one</a></li> </ul> + + <div class="card"> + <div class="card-header"> + Permissions on this Forum instance + <button class="btn btn-link small" data-toggle="collapse" data-target="#permissionsCard"> + View/manage</button> + </div> + <div class="card-body collapse" id="permissionsCard"> + <p><a href="{% url 'forums:forum_permissions' slug=forum.slug %}">Grant permissions to a new group</a></p> + <p>Groups with permissions [click on the Group's name to manage permissions]:</p> + <ul> + {% for group in groups_with_perms %} + {% get_obj_perms group for forum as "group_perms" %} + <li><a href="{% url 'forums:forum_permissions' slug=forum.slug group_id=group.id %}">{{ group.name }}</a>: {{ group_perms }}</li> + {% empty %} + <li>No group has permissions on this Forum</li> + {% endfor %} + </ul> + + <p>Users with permissions:</p> + <ul> + {% for u in users_with_perms %} + {% get_obj_perms u for forum as "u_perms" %} + <li>{{ u.first_name }} {{ u.last_name }}: {{ u_perms }}</li> + {% endfor %} + </ul> + </div> + </div> + {% endif %} {% for post in forum.posts.all %} diff --git a/forums/templates/forums/forum_permissions.html b/forums/templates/forums/forum_permissions.html index 5a4ed9333..55f0c5580 100644 --- a/forums/templates/forums/forum_permissions.html +++ b/forums/templates/forums/forum_permissions.html @@ -18,9 +18,9 @@ <div class="row"> <div class="col-12"> - <h3 class="highlight">{{ forum.name }}: permissions for Group {{ group.name }}</h3> + <h3 class="highlight">{{ forum.name }}: permissions{% if group %} for Group {{ group.name }}{% endif %}</h3> - <form action="{% url 'forums:forum_permissions' slug=forum.slug group_id=group.id %}" method="post"> + <form action="{% url 'forums:forum_permissions' slug=forum.slug %}" method="post"> {% csrf_token %} {{ form|bootstrap }} <input type="submit" value="Assign permissions" class="btn btn-primary"> diff --git a/forums/urls.py b/forums/urls.py index 486cbdeec..5a99fd280 100644 --- a/forums/urls.py +++ b/forums/urls.py @@ -27,6 +27,11 @@ urlpatterns = [ views.ForumPermissionsView.as_view(), name='forum_permissions' ), + url( + r'^(?P<slug>[\w-]+)/permissions/$', + views.ForumPermissionsView.as_view(), + name='forum_permissions' + ), url( r'^$', views.ForumListView.as_view(), diff --git a/forums/views.py b/forums/views.py index cb7093352..d96a99905 100644 --- a/forums/views.py +++ b/forums/views.py @@ -65,16 +65,22 @@ class ForumPermissionsView(PermissionRequiredMixin, UpdateView): def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) - context['group'] = get_object_or_404(Group, pk=self.kwargs.get('group_id')) + try: + context['group'] = Group.objects.get(pk=self.kwargs.get('group_id')) + except Group.DoesNotExist: + pass return context def get_initial(self, *args, **kwargs): initial = super().get_initial(*args, **kwargs) - group = get_object_or_404(Group, pk=self.kwargs.get('group_id')) - perms = get_perms (group, self.object) - initial['group'] = group.id - initial['can_view'] = 'can_view_forum' in perms - initial['can_post'] = 'can_post_to_forum' in perms + try: + group = Group.objects.get(pk=self.kwargs.get('group_id')) + perms = get_perms (group, self.object) + initial['group'] = group.id + initial['can_view'] = 'can_view_forum' in perms + initial['can_post'] = 'can_post_to_forum' in perms + except Group.DoesNotExist: + pass return initial def form_valid(self, form): -- GitLab