diff --git a/problem/migrations/0014_problem_share_submission.py b/problem/migrations/0014_problem_share_submission.py new file mode 100644 index 00000000..c764d7ce --- /dev/null +++ b/problem/migrations/0014_problem_share_submission.py @@ -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), + ), + ] diff --git a/problem/models.py b/problem/models.py index 7cd878da..c16aeada 100644 --- a/problem/models.py +++ b/problem/models.py @@ -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" diff --git a/problem/serializers.py b/problem/serializers.py index 975597a8..e4914c7f 100644 --- a/problem/serializers.py +++ b/problem/serializers.py @@ -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): diff --git a/submission/models.py b/submission/models.py index 181c9098..2835fe03 100644 --- a/submission/models.py +++ b/submission/models.py @@ -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