add problem answers
This commit is contained in:
18
problem/migrations/0003_problem_answers.py
Normal file
18
problem/migrations/0003_problem_answers.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 5.2.3 on 2025-10-03 16:56
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('problem', '0002_problem_prompt'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='problem',
|
||||||
|
name='answers',
|
||||||
|
field=models.JSONField(null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from utils.models import JSONField
|
|
||||||
|
|
||||||
from account.models import User
|
from account.models import User
|
||||||
from contest.models import Contest
|
from contest.models import Contest
|
||||||
@@ -51,13 +50,13 @@ class Problem(models.Model):
|
|||||||
input_description = RichTextField()
|
input_description = RichTextField()
|
||||||
output_description = RichTextField()
|
output_description = RichTextField()
|
||||||
# [{input: "test", output: "123"}, {input: "test123", output: "456"}]
|
# [{input: "test", output: "123"}, {input: "test123", output: "456"}]
|
||||||
samples = JSONField()
|
samples = models.JSONField()
|
||||||
test_case_id = models.TextField()
|
test_case_id = models.TextField()
|
||||||
# [{"input_name": "1.in", "output_name": "1.out", "score": 0}]
|
# [{"input_name": "1.in", "output_name": "1.out", "score": 0}]
|
||||||
test_case_score = JSONField()
|
test_case_score = models.JSONField()
|
||||||
hint = RichTextField(null=True)
|
hint = RichTextField(null=True)
|
||||||
languages = JSONField()
|
languages = models.JSONField()
|
||||||
template = JSONField()
|
template = models.JSONField()
|
||||||
create_time = models.DateTimeField(auto_now_add=True)
|
create_time = models.DateTimeField(auto_now_add=True)
|
||||||
# we can not use auto_now here
|
# we can not use auto_now here
|
||||||
last_update_time = models.DateTimeField(auto_now=True, null=True)
|
last_update_time = models.DateTimeField(auto_now=True, null=True)
|
||||||
@@ -67,7 +66,7 @@ class Problem(models.Model):
|
|||||||
# MB
|
# MB
|
||||||
memory_limit = models.IntegerField()
|
memory_limit = models.IntegerField()
|
||||||
# io mode
|
# io mode
|
||||||
io_mode = JSONField(default=_default_io_mode)
|
io_mode = models.JSONField(default=_default_io_mode)
|
||||||
# special judge related
|
# special judge related
|
||||||
spj = models.BooleanField(default=False)
|
spj = models.BooleanField(default=False)
|
||||||
spj_language = models.TextField(null=True)
|
spj_language = models.TextField(null=True)
|
||||||
@@ -80,12 +79,14 @@ class Problem(models.Model):
|
|||||||
tags = models.ManyToManyField(ProblemTag)
|
tags = models.ManyToManyField(ProblemTag)
|
||||||
source = models.TextField(null=True)
|
source = models.TextField(null=True)
|
||||||
prompt = models.TextField(null=True)
|
prompt = models.TextField(null=True)
|
||||||
|
# [{language: "python", code: "..."}]
|
||||||
|
answers = models.JSONField(null=True)
|
||||||
# for OI mode
|
# for OI mode
|
||||||
total_score = models.IntegerField(default=0)
|
total_score = models.IntegerField(default=0)
|
||||||
submission_number = models.BigIntegerField(default=0)
|
submission_number = models.BigIntegerField(default=0)
|
||||||
accepted_number = models.BigIntegerField(default=0)
|
accepted_number = models.BigIntegerField(default=0)
|
||||||
# {JudgeStatus.ACCEPTED: 3, JudgeStatus.WRONG_ANSWER: 11}, the number means count
|
# {JudgeStatus.ACCEPTED: 3, JudgeStatus.WRONG_ANSWER: 11}, the number means count
|
||||||
statistic_info = JSONField(default=dict)
|
statistic_info = models.JSONField(default=dict)
|
||||||
share_submission = models.BooleanField(default=False)
|
share_submission = models.BooleanField(default=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
@@ -25,6 +25,11 @@ class CreateSampleSerializer(serializers.Serializer):
|
|||||||
output = serializers.CharField(trim_whitespace=False)
|
output = serializers.CharField(trim_whitespace=False)
|
||||||
|
|
||||||
|
|
||||||
|
class CreateAnswerSerializer(serializers.Serializer):
|
||||||
|
language = serializers.CharField()
|
||||||
|
code = serializers.CharField()
|
||||||
|
|
||||||
|
|
||||||
class CreateTestCaseScoreSerializer(serializers.Serializer):
|
class CreateTestCaseScoreSerializer(serializers.Serializer):
|
||||||
input_name = serializers.CharField(max_length=32)
|
input_name = serializers.CharField(max_length=32)
|
||||||
output_name = serializers.CharField(max_length=32)
|
output_name = serializers.CharField(max_length=32)
|
||||||
@@ -80,6 +85,11 @@ class CreateOrEditProblemSerializer(serializers.Serializer):
|
|||||||
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)
|
||||||
prompt = serializers.CharField(allow_blank=True, allow_null=True)
|
prompt = serializers.CharField(allow_blank=True, allow_null=True)
|
||||||
|
answers = serializers.ListField(
|
||||||
|
child=CreateAnswerSerializer(),
|
||||||
|
allow_empty=True,
|
||||||
|
allow_null=True,
|
||||||
|
)
|
||||||
share_submission = serializers.BooleanField()
|
share_submission = serializers.BooleanField()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user