1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-06-21 01:48:21 +02:00

Fix broken WEI permissions

This commit is contained in:
Yohann D'ANELLO
2020-04-24 14:03:25 +02:00
parent edf2f793e2
commit 16079e3cc5
4 changed files with 232 additions and 46 deletions

View File

@ -11,7 +11,7 @@ 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, Count
from django.db.models.functions import Lower
from django.db.models.functions.text import Lower
from django.forms import HiddenInput
from django.http import HttpResponse
from django.shortcuts import redirect
@ -540,6 +540,9 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update
model = WEIRegistration
form_class = WEIRegistrationForm
def get_queryset(self, **kwargs):
return WEIRegistration.objects
def dispatch(self, request, *args, **kwargs):
wei = self.get_object().wei
today = date.today()
@ -702,7 +705,9 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Crea
if "preferred_team_pk" in information and len(information["preferred_team_pk"]) == 1:
form["team"].initial = Bus.objects.get(pk=information["preferred_team_pk"][0])
if "preferred_roles_pk" in information:
form["roles"].initial = WEIRole.objects.filter(pk__in=information["preferred_roles_pk"]).all()
form["roles"].initial = WEIRole.objects.filter(
Q(pk__in=information["preferred_roles_pk"]) | Q(name="Adhérent WEI")
).all()
return form
def form_valid(self, form):
@ -749,7 +754,12 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Crea
membership.roles.set(WEIRole.objects.filter(name="1A").all())
membership.save()
return super().form_valid(form)
ret = super().form_valid(form)
membership.refresh_from_db()
membership.roles.add(WEIRole.objects.get("Adhérent WEI"))
return ret
def get_success_url(self):
self.object.refresh_from_db()
@ -845,10 +855,11 @@ class MemberListRenderView(LoginRequiredMixin, View):
qs = qs.filter(club__pk=self.kwargs["wei_pk"]).order_by(
Lower('bus__name'),
Lower('team__name'),
'roles',
'user__profile__promotion',
Lower('user__last_name'),
Lower('user__first_name'),
).distinct()
'id',
)
if "bus_pk" in self.kwargs:
qs = qs.filter(bus__pk=self.kwargs["bus_pk"])
@ -856,7 +867,7 @@ class MemberListRenderView(LoginRequiredMixin, View):
if "team_pk" in self.kwargs:
qs = qs.filter(team__pk=self.kwargs["team_pk"] if self.kwargs["team_pk"] else None)
return qs
return qs.distinct()
def get(self, request, **kwargs):
qs = self.get_queryset()