contest and contest_problems api.
add ordering for contest and submission models
This commit is contained in:
@@ -4,6 +4,7 @@ from judge.languages import language_names, spj_language_names
|
||||
from utils.api import DateTimeTZField, UsernameSerializer, serializers
|
||||
|
||||
from .models import Problem, ProblemRuleType, ProblemTag
|
||||
from .models import ContestProblem
|
||||
|
||||
|
||||
class TestCaseUploadForm(forms.Form):
|
||||
@@ -85,3 +86,17 @@ class ProblemSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Problem
|
||||
|
||||
|
||||
class ContestProblemSerializer(serializers.ModelSerializer):
|
||||
samples = serializers.JSONField()
|
||||
test_case_score = serializers.JSONField()
|
||||
languages = serializers.JSONField()
|
||||
template = serializers.JSONField()
|
||||
tags = serializers.SlugRelatedField(many=True, slug_field="name", read_only=True)
|
||||
create_time = DateTimeTZField()
|
||||
last_update_time = DateTimeTZField()
|
||||
created_by = UsernameSerializer()
|
||||
|
||||
class Meta:
|
||||
model = ContestProblem
|
||||
@@ -1,8 +1,9 @@
|
||||
from django.conf.urls import url
|
||||
|
||||
from ..views.oj import ProblemTagAPI, ProblemAPI
|
||||
from ..views.oj import ProblemTagAPI, ProblemAPI, ContestProblemAPI
|
||||
|
||||
urlpatterns = [
|
||||
url(r"^problem/tags/?$", ProblemTagAPI.as_view(), name="problem_tag_list_api"),
|
||||
url(r"^problems/?$", ProblemAPI.as_view(), name="problem_list_api"),
|
||||
url(r"^contest_problems/?$", ContestProblemAPI.as_view(), name="contest_problem_api"),
|
||||
]
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
from django.db.models import Q
|
||||
from utils.api import APIView
|
||||
|
||||
from ..models import ProblemTag, Problem
|
||||
from account.decorators import login_required, check_contest_permission
|
||||
from ..models import ProblemTag, Problem, ContestProblem
|
||||
from ..serializers import ProblemSerializer, TagSerializer
|
||||
from ..serializers import ContestProblemSerializer
|
||||
|
||||
|
||||
class ProblemTagAPI(APIView):
|
||||
@@ -42,3 +43,10 @@ class ProblemAPI(APIView):
|
||||
problems = problems.filter(difficulty=difficulty_rank)
|
||||
|
||||
return self.success(self.paginate_data(request, problems, ProblemSerializer))
|
||||
|
||||
|
||||
class ContestProblemAPI(APIView):
|
||||
@check_contest_permission
|
||||
def get(self, request):
|
||||
contest_problems = ContestProblem.objects.filter(contest=self.contest, visible=True)
|
||||
return self.success(ContestProblemSerializer(contest_problems, many=True).data)
|
||||
|
||||
Reference in New Issue
Block a user