mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2024-09-21 08:23:20 +00:00
修复某些情况下泄露template的问题
This commit is contained in:
parent
f70d3cac41
commit
9a3f21461a
@ -90,6 +90,12 @@ class BaseProblemSerializer(serializers.ModelSerializer):
|
|||||||
tags = serializers.SlugRelatedField(many=True, slug_field="name", read_only=True)
|
tags = serializers.SlugRelatedField(many=True, slug_field="name", read_only=True)
|
||||||
created_by = UsernameSerializer()
|
created_by = UsernameSerializer()
|
||||||
|
|
||||||
|
def get_public_template(self, obj):
|
||||||
|
ret = {}
|
||||||
|
for lang, code in obj.template.items():
|
||||||
|
ret[lang] = parse_problem_template(code)["template"]
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
class ProblemAdminSerializer(BaseProblemSerializer):
|
class ProblemAdminSerializer(BaseProblemSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -98,13 +104,7 @@ class ProblemAdminSerializer(BaseProblemSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class ProblemSerializer(BaseProblemSerializer):
|
class ProblemSerializer(BaseProblemSerializer):
|
||||||
template = serializers.SerializerMethodField()
|
template = serializers.SerializerMethodField("get_public_template")
|
||||||
|
|
||||||
def get_template(self, obj):
|
|
||||||
ret = {}
|
|
||||||
for lang, code in obj.template.items():
|
|
||||||
ret[lang] = parse_problem_template(code)["template"]
|
|
||||||
return ret
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Problem
|
model = Problem
|
||||||
@ -113,6 +113,8 @@ class ProblemSerializer(BaseProblemSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class ProblemSafeSerializer(BaseProblemSerializer):
|
class ProblemSafeSerializer(BaseProblemSerializer):
|
||||||
|
template = serializers.SerializerMethodField("get_public_template")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Problem
|
model = Problem
|
||||||
exclude = ("test_case_score", "test_case_id", "visible", "is_public",
|
exclude = ("test_case_score", "test_case_id", "visible", "is_public",
|
||||||
|
Loading…
Reference in New Issue
Block a user