将编译选项修改为数据库存储
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
from django import forms
|
||||
|
||||
from options.options import SysOptions
|
||||
from judge.languages import language_names, spj_language_names
|
||||
from utils.api import UsernameSerializer, serializers
|
||||
from utils.constants import Difficulty
|
||||
from utils.serializers import LanguageNameMultiChoiceField, SPJLanguageNameChoiceField, LanguageNameChoiceField
|
||||
|
||||
from .models import Problem, ProblemRuleType, ProblemTag
|
||||
from .utils import parse_problem_template
|
||||
@@ -40,11 +40,11 @@ class CreateOrEditProblemSerializer(serializers.Serializer):
|
||||
test_case_score = serializers.ListField(child=CreateTestCaseScoreSerializer(), allow_empty=True)
|
||||
time_limit = serializers.IntegerField(min_value=1, max_value=1000 * 60)
|
||||
memory_limit = serializers.IntegerField(min_value=1, max_value=1024)
|
||||
languages = serializers.MultipleChoiceField(choices=language_names)
|
||||
languages = LanguageNameMultiChoiceField()
|
||||
template = serializers.DictField(child=serializers.CharField(min_length=1))
|
||||
rule_type = serializers.ChoiceField(choices=[ProblemRuleType.ACM, ProblemRuleType.OI])
|
||||
spj = serializers.BooleanField()
|
||||
spj_language = serializers.ChoiceField(choices=spj_language_names, allow_blank=True, allow_null=True)
|
||||
spj_language = SPJLanguageNameChoiceField(allow_blank=True, allow_null=True)
|
||||
spj_code = serializers.CharField(allow_blank=True, allow_null=True)
|
||||
spj_compile_ok = serializers.BooleanField(default=False)
|
||||
visible = serializers.BooleanField()
|
||||
@@ -78,7 +78,7 @@ class TagSerializer(serializers.ModelSerializer):
|
||||
|
||||
|
||||
class CompileSPJSerializer(serializers.Serializer):
|
||||
spj_language = serializers.ChoiceField(choices=spj_language_names)
|
||||
spj_language = SPJLanguageNameChoiceField()
|
||||
spj_code = serializers.CharField()
|
||||
|
||||
|
||||
@@ -212,12 +212,12 @@ class TemplateSerializer(serializers.Serializer):
|
||||
|
||||
class SPJSerializer(serializers.Serializer):
|
||||
code = serializers.CharField()
|
||||
language = serializers.ChoiceField(choices=spj_language_names)
|
||||
language = SPJLanguageNameChoiceField()
|
||||
|
||||
|
||||
class AnswerSerializer(serializers.Serializer):
|
||||
code = serializers.CharField()
|
||||
language = serializers.ChoiceField(choices=language_names)
|
||||
language = LanguageNameChoiceField()
|
||||
|
||||
|
||||
class ImportProblemSerializer(serializers.Serializer):
|
||||
|
||||
@@ -15,7 +15,7 @@ from account.decorators import problem_permission_required, ensure_created_by
|
||||
from contest.models import Contest, ContestStatus
|
||||
from fps.parser import FPSHelper, FPSParser
|
||||
from judge.dispatcher import SPJCompiler
|
||||
from judge.languages import language_names
|
||||
from options.options import SysOptions
|
||||
from submission.models import Submission, JudgeStatus
|
||||
from utils.api import APIView, CSRFExemptAPIView, validate_serializer, APIError
|
||||
from utils.constants import Difficulty
|
||||
@@ -578,7 +578,7 @@ class ImportProblemAPI(CSRFExemptAPIView, TestCaseZipProcessor):
|
||||
else:
|
||||
problem_info = serializer.data
|
||||
for item in problem_info["template"].keys():
|
||||
if item not in language_names:
|
||||
if item not in SysOptions.language_names:
|
||||
return self.error(f"Unsupported language {item}")
|
||||
|
||||
problem_info["display_id"] = problem_info["display_id"][:24]
|
||||
@@ -613,7 +613,7 @@ class ImportProblemAPI(CSRFExemptAPIView, TestCaseZipProcessor):
|
||||
spj_language=problem_info["spj"][
|
||||
"language"] if spj else None,
|
||||
spj_version=rand_str(8) if spj else "",
|
||||
languages=language_names,
|
||||
languages=SysOptions.language_names,
|
||||
created_by=request.user,
|
||||
visible=False,
|
||||
difficulty=Difficulty.MID,
|
||||
@@ -666,7 +666,7 @@ class FPSProblemImport(CSRFExemptAPIView):
|
||||
spj_language=problem_data["spj"]["language"] if spj else None,
|
||||
spj_version=rand_str(8) if spj else "",
|
||||
visible=False,
|
||||
languages=language_names,
|
||||
languages=SysOptions.language_names,
|
||||
created_by=creator,
|
||||
difficulty=Difficulty.MID,
|
||||
test_case_id=problem_data["test_case_id"])
|
||||
|
||||
Reference in New Issue
Block a user