Joining contest also leaves current contest
This commit is contained in:
parent
345684300f
commit
86d1ff4eaa
6 changed files with 151 additions and 137 deletions
|
@ -186,21 +186,17 @@ class PostView(TitleMixin, CommentedDetailView, PageVoteDetailView, BookMarkDeta
|
|||
context["og_image"] = self.object.og_image
|
||||
context["editable_orgs"] = []
|
||||
|
||||
can_edit = False
|
||||
orgs = list(self.object.organizations.all())
|
||||
|
||||
if self.request.profile:
|
||||
if self.request.profile.id in self.object.get_authors():
|
||||
can_edit = True
|
||||
|
||||
for org in orgs:
|
||||
if org.is_admin(self.request.profile):
|
||||
can_edit = True
|
||||
|
||||
if can_edit:
|
||||
for org in orgs:
|
||||
if org.is_member(self.request.profile):
|
||||
context["editable_orgs"].append(org)
|
||||
for org in orgs:
|
||||
if org.is_member(self.request.profile):
|
||||
context["editable_orgs"].append(org)
|
||||
else:
|
||||
for org in orgs:
|
||||
if org.is_admin(self.request.profile):
|
||||
context["editable_orgs"].append(org)
|
||||
|
||||
return context
|
||||
|
||||
|
|
|
@ -468,6 +468,10 @@ class ContestDetail(
|
|||
)
|
||||
context["editable_organizations"] = self.get_editable_organizations()
|
||||
context["is_clonable"] = is_contest_clonable(self.request, self.object)
|
||||
if self.request.in_contest:
|
||||
context["current_contest"] = self.request.participation.contest
|
||||
else:
|
||||
context["current_contest"] = None
|
||||
return context
|
||||
|
||||
|
||||
|
@ -587,12 +591,7 @@ class ContestJoin(LoginRequiredMixin, ContestMixin, BaseDetailView):
|
|||
|
||||
profile = request.profile
|
||||
if profile.current_contest is not None:
|
||||
return generic_message(
|
||||
request,
|
||||
_("Already in contest"),
|
||||
_('You are already in a contest: "%s".')
|
||||
% profile.current_contest.contest.name,
|
||||
)
|
||||
profile.remove_contest()
|
||||
|
||||
if (
|
||||
not request.user.is_superuser
|
||||
|
@ -671,6 +670,7 @@ class ContestJoin(LoginRequiredMixin, ContestMixin, BaseDetailView):
|
|||
profile.save()
|
||||
contest._updating_stats_only = True
|
||||
contest.update_user_count()
|
||||
request.session["contest_mode"] = True
|
||||
return HttpResponseRedirect(reverse("problem_list"))
|
||||
|
||||
def ask_for_access_code(self, form=None):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue