sprint/Main/views/SolutionView.py
Egor Matveev 38fa241e90 retest
2022-05-12 16:09:48 +03:00

34 lines
1.0 KiB
Python

from Main.models import Solution
from SprintLib.BaseView import BaseView, AccessError
from SprintLib.utils import send_testing
class SolutionView(BaseView):
view_file = "solution.html"
required_login = True
endpoint = "solution"
solution: Solution
def check_admin(self):
user = self.request.user
if self.request.user.is_superuser:
return True
if self.solution.task.creator == user or user.username in self.solution.task.editors:
return True
if self.solution.set:
if self.solution.set.creator == user or user.username in self.solution.set.editors:
return True
return False
def pre_handle(self):
if self.check_admin():
return
if self.solution.user != self.request.user:
raise AccessError()
def post_retest(self):
if not self.check_admin():
return "/"
send_testing(self.solution)
return "/solution?solution_id=" + str(self.solution.id)