mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 09:12:11 +01: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