增加获取提交详情的OpenAPI

This commit is contained in:
virusdefender 2016-02-17 19:34:46 +08:00
parent b4d31ed79b
commit 27ebb0d659
2 changed files with 31 additions and 1 deletions

View File

@ -29,6 +29,13 @@ class SubmissionSerializer(serializers.ModelSerializer):
return User.objects.get(id=obj.user_id).username return User.objects.get(id=obj.user_id).username
class OpenAPISubmissionSerializer(serializers.ModelSerializer):
class Meta:
model = Submission
fields = ["id", "result", "create_time", "language"]
class SubmissionhareSerializer(serializers.Serializer): class SubmissionhareSerializer(serializers.Serializer):
submission_id = serializers.CharField(max_length=40) submission_id = serializers.CharField(max_length=40)

View File

@ -7,6 +7,7 @@ import redis
from django.shortcuts import render from django.shortcuts import render
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.conf import settings from django.conf import settings
from django.views.decorators.csrf import csrf_exempt
from rest_framework.views import APIView from rest_framework.views import APIView
from account.decorators import login_required, super_admin_required from account.decorators import login_required, super_admin_required
@ -20,7 +21,8 @@ from .tasks import _judge
from .models import Submission from .models import Submission
from .serializers import (CreateSubmissionSerializer, SubmissionSerializer, from .serializers import (CreateSubmissionSerializer, SubmissionSerializer,
SubmissionhareSerializer, SubmissionRejudgeSerializer, SubmissionhareSerializer, SubmissionRejudgeSerializer,
CreateContestSubmissionSerializer, OpenAPICreateSubmissionSerializer) CreateContestSubmissionSerializer, OpenAPICreateSubmissionSerializer,
OpenAPISubmissionSerializer)
logger = logging.getLogger("app_info") logger = logging.getLogger("app_info")
@ -59,6 +61,9 @@ def _submit_code(user, problem_id, language, code):
class OpenAPISubmitCodeAPI(APIView): class OpenAPISubmitCodeAPI(APIView):
def post(self, request): def post(self, request):
"""
openapi 创建提交
"""
serializer = OpenAPICreateSubmissionSerializer(data=request.data) serializer = OpenAPICreateSubmissionSerializer(data=request.data)
if serializer.is_valid(): if serializer.is_valid():
data = serializer.data data = serializer.data
@ -70,6 +75,24 @@ class OpenAPISubmitCodeAPI(APIView):
else: else:
return serializer_invalid_response(serializer) return serializer_invalid_response(serializer)
def get(self, request):
"""
openapi 获取提交详情
"""
submission_id = request.GET.get("submission_id", None)
appkey = request.GET.get("appkey", None)
if not (submission_id and appkey):
return error_response(u"参数错误")
try:
user = User.objects.get(openapi_appkey=appkey)
except User.DoesNotExist:
return error_response(u"appkey无效")
try:
submission = Submission.objects.get(id=submission_id, user_id=user.id)
return success_response(SubmissionSerializer(submission).data)
except Submission.DoesNotExist:
return error_response(u"提交不存在")
class SubmissionAPIView(APIView): class SubmissionAPIView(APIView):
@login_required @login_required