From ba6a6338f5cfcbd3c586f6681ca338d7d6580605 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Tue, 11 May 2021 16:40:18 +0200 Subject: [PATCH] Fix permissions for final tournament --- apps/participation/views.py | 16 ++++++++++++---- apps/registration/views.py | 4 +++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/participation/views.py b/apps/participation/views.py index 95b3a52..f29d099 100644 --- a/apps/participation/views.py +++ b/apps/participation/views.py @@ -164,7 +164,9 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView) if user.registration.is_admin or user.registration.participates and \ user.registration.team and user.registration.team.pk == kwargs["pk"] \ or user.registration.is_volunteer \ - and self.object.participation.tournament in user.registration.interesting_tournaments: + and (self.object.participation.tournament in user.registration.interesting_tournaments + or self.object.participation.final + and Tournament.final_tournament() in user.registration.interesting_tournaments): return super().get(request, *args, **kwargs) raise PermissionDenied @@ -292,7 +294,9 @@ class TeamUpdateView(LoginRequiredMixin, UpdateView): if user.registration.is_admin or user.registration.participates and \ user.registration.team and user.registration.team.pk == kwargs["pk"] \ or user.registration.is_volunteer \ - and self.get_object().participation.tournament in user.registration.interesting_tournaments: + and (self.get_object().participation.tournament in user.registration.interesting_tournaments + or self.get_object().participation.final + and Tournament.final_tournament() in user.registration.interesting_tournaments): return super().dispatch(request, *args, **kwargs) raise PermissionDenied @@ -373,7 +377,9 @@ class TeamAuthorizationsView(LoginRequiredMixin, DetailView): if not user.is_authenticated: return super().handle_no_permission() if user.registration.is_admin or user.registration.is_volunteer \ - and self.get_object().participation.tournament in user.registration.interesting_tournaments: + and (self.get_object().participation.tournament in user.registration.interesting_tournaments + or self.get_object().participation.final + and Tournament.final_tournament() in user.registration.interesting_tournaments): return super().dispatch(request, *args, **kwargs) raise PermissionDenied @@ -479,7 +485,9 @@ class ParticipationDetailView(LoginRequiredMixin, DetailView): and user.registration.team.participation \ and user.registration.team.participation.pk == kwargs["pk"] \ or user.registration.is_volunteer \ - and self.get_object().tournament in user.registration.interesting_tournaments: + and (self.get_object().tournament in user.registration.interesting_tournaments + or self.get_object().final + and Tournament.final_tournament() in user.registration.interesting_tournaments): return super().dispatch(request, *args, **kwargs) raise PermissionDenied diff --git a/apps/registration/views.py b/apps/registration/views.py index 4564d75..c20e05a 100644 --- a/apps/registration/views.py +++ b/apps/registration/views.py @@ -242,7 +242,9 @@ class UserDetailView(LoginRequiredMixin, DetailView): user = self.get_object() if user == me or me.registration.is_admin or me.registration.is_volunteer \ and user.registration.participates and user.registration.team \ - and user.registration.team.participation.tournament in me.registration.organized_tournaments.all() \ + and (user.registration.team.participation.tournament in me.registration.organized_tournaments.all() + or user.registration.team.participation.final + and Tournament.final_tournament() in me.registration.organized_tournaments.all()) \ or user.registration.is_volunteer and me.registration.is_volunteer \ and me.registration.interesting_tournaments.intersection(user.registration.interesting_tournaments): return super().dispatch(request, *args, **kwargs)