From 0a55385f2516465af3ee0246d56f7a121f32b2de Mon Sep 17 00:00:00 2001 From: virusdefender Date: Tue, 9 Apr 2019 08:25:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=94=E8=B5=9B=E9=A2=98=E7=9B=AE=E4=B9=9F?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=88=86=E4=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- submission/models.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/submission/models.py b/submission/models.py index 2835fe03..2918f880 100644 --- a/submission/models.py +++ b/submission/models.py @@ -1,4 +1,6 @@ from django.db import models + +from utils.constants import ContestStatus from utils.models import JSONField from problem.models import Problem from contest.models import Contest @@ -39,12 +41,15 @@ class Submission(models.Model): ip = models.TextField(null=True) def check_user_permission(self, user, check_share=True): - return self.user_id == user.id or \ - (check_share and self.shared is True) or \ - (check_share and self.problem.share_submission) or \ - user.is_super_admin() or \ - user.can_mgmt_all_problem() or \ - self.problem.created_by_id == user.id + if self.user_id == user.id or user.is_super_admin() or user.can_mgmt_all_problem() or self.problem.created_by_id == user.id: + return True + + if check_share: + if self.contest and self.contest.status != ContestStatus.CONTEST_ENDED: + return False + if self.problem.share_submission or self.shared: + return True + return False class Meta: db_table = "submission"