diff --git a/apps/permission/tables.py b/apps/permission/tables.py index 2ba80505..161e5bb1 100644 --- a/apps/permission/tables.py +++ b/apps/permission/tables.py @@ -2,8 +2,12 @@ # SPDX-License-Identifier: GPL-3.0-or-later import django_tables2 as tables +from django.contrib.auth.models import User from django.urls import reverse_lazy from django.utils.html import format_html +from django.utils.translation import gettext_lazy as _ +from django_tables2 import A + from member.models import Membership from note_kfet.middlewares import get_current_authenticated_user from permission.backends import PermissionBackend @@ -48,3 +52,18 @@ class RightsTable(tables.Table): template_name = 'django_tables2/bootstrap4.html' fields = ('user.last_name', 'user.first_name', 'user', 'club', 'roles', ) model = Membership + + +class SuperuserTable(tables.Table): + username = tables.LinkColumn( + "member:user_detail", + args=[A("pk")], + ) + + class Meta: + model = User + fields = ('last_name', 'first_name', 'username', ) + attrs = { + 'class': 'table table-condensed table-striped table-hover', + 'style': 'table-layout: fixed;' + } diff --git a/apps/permission/templates/permission/all_rights.html b/apps/permission/templates/permission/all_rights.html index 6aec5af1..f1fc3e85 100644 --- a/apps/permission/templates/permission/all_rights.html +++ b/apps/permission/templates/permission/all_rights.html @@ -1,92 +1,117 @@ {% extends "base.html" %} {% comment %} -SPDX-License-Identifier: GPL-3.0-or-later + SPDX-License-Identifier: GPL-3.0-or-later {% endcomment %} {% load i18n %} {% load render_table from django_tables2 %} {% block contenttitle %}{% endblock %} {% block content %} -{% if user.is_authenticated %} -
-

- {% trans "Users that have surnormal rights" %} -

- {% render_table special_memberships_table %} -
-{% endif %} - -
-

- {% trans "Roles description" %} -

-
{% if user.is_authenticated %} -
- -
- {% endif %} -
-
- {% regroup active_memberships by roles as memberships_per_role %} - {% for role in roles %} -
- - -
-
- {% if role.clubs %} -
- {% trans "Own this role in the clubs" %} {{ role.clubs|join:", " }} -
- {% endif %} -
    - {% for permission in role.permissions.all %} -
  • - {{ permission }} ({{ permission.get_type_display }} - {{ permission.model }}{% if permission.permanent %}, - {% trans "permanent" %}{% endif %})
  • - {% empty %} - {% trans "No associated permission" %} - {% endfor %} -
+
+

+ {% trans "Users that have surnormal rights" %} +

+
+
+ +
+ {% render_table superusers %} +
+
+
+
+ +
+ {% render_table special_memberships_table %} +
+
+
+
+ {% endif %} + +
+

+ {% trans "Roles description" %} +

+
+ {% if user.is_authenticated %} +
+ +
+ {% endif %} +
+
+ {% regroup active_memberships by roles as memberships_per_role %} + {% for role in roles %} +
+ + +
+
+ {% if role.clubs %} +
+ {% trans "Own this role in the clubs" %} {{ role.clubs|join:", " }} +
+ {% endif %} +
    + {% for permission in role.permissions.all %} +
  • + {{ permission }} ({{ permission.get_type_display }} + {{ permission.model }}{% if permission.permanent %}, + {% trans "permanent" %}{% endif %}) +
  • + {% empty %} + {% trans "No associated permission" %} + {% endfor %} +
+
+
+
+ {% endfor %}
-
- {% endfor %} -
-
{% endblock %} {% block extrajavascript %} - + checkbox.change(update); + update(); + }); + {% endblock %} \ No newline at end of file diff --git a/apps/permission/views.py b/apps/permission/views.py index 17d236b9..ec6d941c 100644 --- a/apps/permission/views.py +++ b/apps/permission/views.py @@ -4,6 +4,7 @@ from datetime import date from django.contrib.auth.mixins import LoginRequiredMixin +from django.contrib.auth.models import User from django.core.exceptions import PermissionDenied from django.db.models import Q from django.forms import HiddenInput @@ -13,7 +14,7 @@ from member.models import Membership from .backends import PermissionBackend from .models import Role -from .tables import RightsTable +from .tables import RightsTable, SuperuserTable class ProtectQuerysetMixin: @@ -114,12 +115,13 @@ class RightsView(TemplateView): special_memberships = Membership.objects.filter( date_start__lte=date.today(), date_end__gte=date.today(), - ).filter(roles__in=Role.objects.filter(~(Q(name="Adhérent BDE") - | Q(name="Adhérent Kfet") - | Q(name="Membre de club") - | Q(name="Adhérent WEI") - | Q(name="1A")))).order_by("club", "user__last_name")\ + ).filter(roles__in=Role.objects.filter((~(Q(name="Adhérent BDE") + | Q(name="Adhérent Kfet") + | Q(name="Membre de club") + | Q(name="Bureau de club")) + & Q(weirole__isnull=True)))).order_by("club", "user__last_name")\ .distinct().all() - context["special_memberships_table"] = RightsTable(special_memberships) + context["special_memberships_table"] = RightsTable(special_memberships, prefix="clubs-") + context["superusers"] = SuperuserTable(User.objects.filter(is_superuser=True).all(), prefix="superusers-") return context diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index c8df0dec..788c3c17 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-08-31 20:32+0200\n" +"POT-Creation-Date: 2020-08-31 21:07+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -885,6 +885,7 @@ msgid "Add" msgstr "" #: apps/member/templates/member/club_detail.html:13 +#: apps/permission/templates/permission/all_rights.html:30 msgid "Club managers" msgstr "" @@ -1566,7 +1567,7 @@ msgid "" msgstr "" #: apps/permission/models.py:183 -#: apps/permission/templates/permission/all_rights.html:63 +#: apps/permission/templates/permission/all_rights.html:87 msgid "permanent" msgstr "" @@ -1597,7 +1598,7 @@ msgid "" "of model {app_label}.{model_name}." msgstr "" -#: apps/permission/signals.py:73 apps/permission/views.py:88 +#: apps/permission/signals.py:73 apps/permission/views.py:89 #, python-brace-format msgid "" "You don't have the permission to add an instance of model {app_label}." @@ -1615,53 +1616,57 @@ msgstr "" msgid "Users that have surnormal rights" msgstr "" -#: apps/permission/templates/permission/all_rights.html:21 +#: apps/permission/templates/permission/all_rights.html:19 +msgid "Superusers" +msgstr "" + +#: apps/permission/templates/permission/all_rights.html:43 msgid "Roles description" msgstr "" -#: apps/permission/templates/permission/all_rights.html:28 +#: apps/permission/templates/permission/all_rights.html:50 msgid "Filter with roles that I have in at least one club" msgstr "" -#: apps/permission/templates/permission/all_rights.html:44 +#: apps/permission/templates/permission/all_rights.html:67 msgid "Owned" msgstr "" -#: apps/permission/templates/permission/all_rights.html:54 +#: apps/permission/templates/permission/all_rights.html:78 msgid "Own this role in the clubs" msgstr "" -#: apps/permission/templates/permission/all_rights.html:60 +#: apps/permission/templates/permission/all_rights.html:84 msgid "Mask:" msgstr "" -#: apps/permission/templates/permission/all_rights.html:60 +#: apps/permission/templates/permission/all_rights.html:84 msgid "Query:" msgstr "" -#: apps/permission/templates/permission/all_rights.html:65 +#: apps/permission/templates/permission/all_rights.html:90 msgid "No associated permission" msgstr "" -#: apps/permission/views.py:55 +#: apps/permission/views.py:56 #, python-brace-format msgid "" "You don't have the permission to update this instance of the model " "\"{model}\" with these parameters. Please correct your data and retry." msgstr "" -#: apps/permission/views.py:59 +#: apps/permission/views.py:60 #, python-brace-format msgid "" "You don't have the permission to create an instance of the model \"{model}\" " "with these parameters. Please correct your data and retry." msgstr "" -#: apps/permission/views.py:95 note_kfet/templates/base.html:106 +#: apps/permission/views.py:96 note_kfet/templates/base.html:106 msgid "Rights" msgstr "" -#: apps/permission/views.py:100 +#: apps/permission/views.py:101 msgid "All rights" msgstr "" diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index bb024544..f6b207f0 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-08-31 20:32+0200\n" +"POT-Creation-Date: 2020-08-31 21:07+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -910,6 +910,7 @@ msgid "Add" msgstr "Ajouter" #: apps/member/templates/member/club_detail.html:13 +#: apps/permission/templates/permission/all_rights.html:30 msgid "Club managers" msgstr "Bureau du club" @@ -1611,7 +1612,7 @@ msgstr "" "l'utilisateur est expirée." #: apps/permission/models.py:183 -#: apps/permission/templates/permission/all_rights.html:63 +#: apps/permission/templates/permission/all_rights.html:87 msgid "permanent" msgstr "permanent" @@ -1646,7 +1647,7 @@ msgstr "" "Vous n'avez pas la permission de modifier le champ {field} sur l'instance du " "modèle {app_label}.{model_name}." -#: apps/permission/signals.py:73 apps/permission/views.py:88 +#: apps/permission/signals.py:73 apps/permission/views.py:89 #, python-brace-format msgid "" "You don't have the permission to add an instance of model {app_label}." @@ -1668,35 +1669,39 @@ msgstr "" msgid "Users that have surnormal rights" msgstr "Liste des utilisateurs ayant des droits surnormaux" -#: apps/permission/templates/permission/all_rights.html:21 +#: apps/permission/templates/permission/all_rights.html:19 +msgid "Superusers" +msgstr "Super-utilisateurs" + +#: apps/permission/templates/permission/all_rights.html:43 msgid "Roles description" msgstr "Description de tous les rôles" -#: apps/permission/templates/permission/all_rights.html:28 +#: apps/permission/templates/permission/all_rights.html:50 msgid "Filter with roles that I have in at least one club" msgstr "Filtrer les rôles que je possède dans au moins un club" -#: apps/permission/templates/permission/all_rights.html:44 +#: apps/permission/templates/permission/all_rights.html:67 msgid "Owned" msgstr "Possédé" -#: apps/permission/templates/permission/all_rights.html:54 +#: apps/permission/templates/permission/all_rights.html:78 msgid "Own this role in the clubs" msgstr "Possède ce rôle dans les clubs" -#: apps/permission/templates/permission/all_rights.html:60 +#: apps/permission/templates/permission/all_rights.html:84 msgid "Mask:" msgstr "Masque :" -#: apps/permission/templates/permission/all_rights.html:60 +#: apps/permission/templates/permission/all_rights.html:84 msgid "Query:" msgstr "Requête :" -#: apps/permission/templates/permission/all_rights.html:65 +#: apps/permission/templates/permission/all_rights.html:90 msgid "No associated permission" msgstr "Pas de permission associée" -#: apps/permission/views.py:55 +#: apps/permission/views.py:56 #, python-brace-format msgid "" "You don't have the permission to update this instance of the model " @@ -1705,7 +1710,7 @@ msgstr "" "Vous n'avez pas la permission de modifier cette instance du modèle « {model} " "» avec ces paramètres. Merci de les corriger et de réessayer." -#: apps/permission/views.py:59 +#: apps/permission/views.py:60 #, python-brace-format msgid "" "You don't have the permission to create an instance of the model \"{model}\" " @@ -1714,11 +1719,11 @@ msgstr "" "Vous n'avez pas la permission d'ajouter une instance du modèle « {model} » " "avec ces paramètres. Merci de les corriger et de réessayer." -#: apps/permission/views.py:95 note_kfet/templates/base.html:106 +#: apps/permission/views.py:96 note_kfet/templates/base.html:106 msgid "Rights" msgstr "Droits" -#: apps/permission/views.py:100 +#: apps/permission/views.py:101 msgid "All rights" msgstr "Tous les droits"