mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2025-09-26 23:09:21 +08:00
share submission
This commit is contained in:
parent
d969c6fe5e
commit
8cdc4acaaf
18
problem/migrations/0014_problem_share_submission.py
Normal file
18
problem/migrations/0014_problem_share_submission.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 2.1.7 on 2019-03-13 09:38
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('problem', '0013_problem_io_mode'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='problem',
|
||||||
|
name='share_submission',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
]
|
@ -80,6 +80,7 @@ class Problem(models.Model):
|
|||||||
accepted_number = models.BigIntegerField(default=0)
|
accepted_number = models.BigIntegerField(default=0)
|
||||||
# {JudgeStatus.ACCEPTED: 3, JudgeStaus.WRONG_ANSWER: 11}, the number means count
|
# {JudgeStatus.ACCEPTED: 3, JudgeStaus.WRONG_ANSWER: 11}, the number means count
|
||||||
statistic_info = JSONField(default=dict)
|
statistic_info = JSONField(default=dict)
|
||||||
|
share_submission = models.BooleanField(default=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
db_table = "problem"
|
db_table = "problem"
|
||||||
|
@ -68,6 +68,7 @@ class CreateOrEditProblemSerializer(serializers.Serializer):
|
|||||||
tags = serializers.ListField(child=serializers.CharField(max_length=32), allow_empty=False)
|
tags = serializers.ListField(child=serializers.CharField(max_length=32), allow_empty=False)
|
||||||
hint = serializers.CharField(allow_blank=True, allow_null=True)
|
hint = serializers.CharField(allow_blank=True, allow_null=True)
|
||||||
source = serializers.CharField(max_length=256, allow_blank=True, allow_null=True)
|
source = serializers.CharField(max_length=256, allow_blank=True, allow_null=True)
|
||||||
|
share_submission = serializers.BooleanField()
|
||||||
|
|
||||||
|
|
||||||
class CreateProblemSerializer(CreateOrEditProblemSerializer):
|
class CreateProblemSerializer(CreateOrEditProblemSerializer):
|
||||||
|
@ -41,6 +41,7 @@ class Submission(models.Model):
|
|||||||
def check_user_permission(self, user, check_share=True):
|
def check_user_permission(self, user, check_share=True):
|
||||||
return self.user_id == user.id or \
|
return self.user_id == user.id or \
|
||||||
(check_share and self.shared is True) or \
|
(check_share and self.shared is True) or \
|
||||||
|
(check_share and self.problem.share_submission) or \
|
||||||
user.is_super_admin() or \
|
user.is_super_admin() or \
|
||||||
user.can_mgmt_all_problem() or \
|
user.can_mgmt_all_problem() or \
|
||||||
self.problem.created_by_id == user.id
|
self.problem.created_by_id == user.id
|
||||||
|
Loading…
Reference in New Issue
Block a user