From e8d61b0886768fd5e51216a9588f3b072d225c4e Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Fri, 5 May 2023 16:52:28 +0500 Subject: [PATCH 1/2] if valid secret key is provided and user is not loggedin, show the competition to user (removed 500 error --- src/apps/competitions/views.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/apps/competitions/views.py b/src/apps/competitions/views.py index 8d3e46720..4cd4d868f 100644 --- a/src/apps/competitions/views.py +++ b/src/apps/competitions/views.py @@ -27,13 +27,25 @@ class CompetitionDetail(DetailView): def get_object(self, *args, **kwargs): competition = super().get_object(*args, **kwargs) - is_creator = self.request.user.is_superuser or self.request.user == competition.created_by - is_collaborator = self.request.user in competition.collaborators.all() - # get participants from CompetitionParticipant where user=user and competition=competition - is_participant = CompetitionParticipant.objects.filter(user=self.request.user, competition=competition).count() > 0 + is_creator, is_collaborator, is_participant = False, False, False + # check if user is loggedin + if self.request.user.is_authenticated: + + # check if user is the creator of this competition + is_creator = self.request.user.is_superuser or self.request.user == competition.created_by + + # check if user is collaborator of this competition + is_collaborator = self.request.user in competition.collaborators.all() + + # check if user is a participant of this competition + # get participants from CompetitionParticipant where user=user and competition=competition + is_participant = CompetitionParticipant.objects.filter(user=self.request.user, competition=competition).count() > 0 + + # check if secret key provided is valid valid_secret_key = self.request.GET.get('secret_key') == str(competition.secret_key) + if is_creator or is_collaborator or competition.published or valid_secret_key or is_participant: return competition raise Http404() From b130d8accc86f01c5ebf2cbffff4712f13c3eb98 Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Fri, 5 May 2023 16:56:38 +0500 Subject: [PATCH 2/2] whitespaces removed circle ci --- src/apps/competitions/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps/competitions/views.py b/src/apps/competitions/views.py index 4cd4d868f..581392fa1 100644 --- a/src/apps/competitions/views.py +++ b/src/apps/competitions/views.py @@ -32,10 +32,10 @@ def get_object(self, *args, **kwargs): # check if user is loggedin if self.request.user.is_authenticated: - + # check if user is the creator of this competition is_creator = self.request.user.is_superuser or self.request.user == competition.created_by - + # check if user is collaborator of this competition is_collaborator = self.request.user in competition.collaborators.all()