share submission

This commit is contained in:
virusdefender 2019-03-13 17:57:41 +08:00
parent d969c6fe5e
commit 8cdc4acaaf
4 changed files with 21 additions and 0 deletions

View 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),
),
]

View File

@ -80,6 +80,7 @@ class Problem(models.Model):
accepted_number = models.BigIntegerField(default=0)
# {JudgeStatus.ACCEPTED: 3, JudgeStaus.WRONG_ANSWER: 11}, the number means count
statistic_info = JSONField(default=dict)
share_submission = models.BooleanField(default=False)
class Meta:
db_table = "problem"

View File

@ -68,6 +68,7 @@ class CreateOrEditProblemSerializer(serializers.Serializer):
tags = serializers.ListField(child=serializers.CharField(max_length=32), allow_empty=False)
hint = serializers.CharField(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):

View File

@ -41,6 +41,7 @@ class Submission(models.Model):
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