From 3123b92a01177d2e717c61c38e5fe9ba1c18997d Mon Sep 17 00:00:00 2001 From: Hypercube Date: Fri, 27 Oct 2023 00:00:00 +0000 Subject: [PATCH] =?UTF-8?q?ChallengeURLView=20=E5=A4=84=E7=90=86=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/views.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/frontend/views.py b/frontend/views.py index 197387b..bd16217 100644 --- a/frontend/views.py +++ b/frontend/views.py @@ -4,7 +4,7 @@ from django.contrib import messages from django.contrib.admin import site from django.contrib.auth import logout -from django.http import JsonResponse +from django.http import Http404, JsonResponse from django.shortcuts import redirect from django.template.response import TemplateResponse from django.views import View @@ -213,10 +213,19 @@ def get(self, request): class ChallengeURLView(View): def get(self, request, challenge_id): context = Context.from_request(request) - challenge = Challenge.get(context, challenge_id) - user = User.get(context, request.user.pk) - url = challenge.get_and_log_url_orig().replace('{token}', quote(user.token)) - return redirect(url) + try: + User.test_authenticated(context) + user = User.get(context, request.user.pk) + challenge = Challenge.get(context, challenge_id) + url_orig = challenge.get_and_log_url_orig() + if url_orig is None: + raise Http404 + url = url_orig.replace('{token}', quote(user.token)) + return redirect(url) + except Error as e: + messages.error(request, e.message) + return redirect('hub') + class ScoreView(View): def get(self, request): @@ -227,6 +236,7 @@ def get(self, request): context = Context.from_request(request) return TemplateResponse(request, 'score.html') + class UstcProfileView(View): def check(self): request = self.request