mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-21 18:08:21 +02:00
Each table can be sorted (with a few exceptions)
This commit is contained in:
@ -12,6 +12,7 @@ from django.forms import HiddenInput
|
||||
from django.http import Http404
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views.generic import UpdateView, TemplateView, CreateView
|
||||
from django_tables2 import MultiTableMixin
|
||||
from member.models import Membership
|
||||
|
||||
from .backends import PermissionBackend
|
||||
@ -107,10 +108,31 @@ class ProtectedCreateView(LoginRequiredMixin, CreateView):
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
|
||||
class RightsView(TemplateView):
|
||||
class RightsView(MultiTableMixin, TemplateView):
|
||||
template_name = "permission/all_rights.html"
|
||||
extra_context = {"title": _("Rights")}
|
||||
|
||||
tables = [
|
||||
lambda data: RightsTable(data, prefix="clubs-"),
|
||||
lambda data: SuperuserTable(data, prefix="superusers-"),
|
||||
]
|
||||
|
||||
def get_tables_data(self):
|
||||
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="Bureau de club"))
|
||||
& Q(weirole__isnull=True))))\
|
||||
.order_by("club__name", "user__last_name")\
|
||||
.distinct().all()
|
||||
return [
|
||||
special_memberships,
|
||||
User.objects.filter(is_superuser=True).order_by("last_name"),
|
||||
]
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
@ -128,19 +150,9 @@ class RightsView(TemplateView):
|
||||
role.clubs = [membership.club for membership in active_memberships if role in membership.roles.all()]
|
||||
|
||||
if self.request.user.is_authenticated:
|
||||
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="Bureau de club"))
|
||||
& Q(weirole__isnull=True))))\
|
||||
.order_by("club__name", "user__last_name")\
|
||||
.distinct().all()
|
||||
context["special_memberships_table"] = RightsTable(special_memberships, prefix="clubs-")
|
||||
context["superusers"] = SuperuserTable(User.objects.filter(is_superuser=True).order_by("last_name").all(),
|
||||
prefix="superusers-")
|
||||
tables = context["tables"]
|
||||
for name, table in zip(["special_memberships_table", "superusers"], tables):
|
||||
context[name] = table
|
||||
|
||||
return context
|
||||
|
||||
|
Reference in New Issue
Block a user