diff --git a/oj/urls.py b/oj/urls.py index ba7c997..f5b94e5 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -59,5 +59,7 @@ urlpatterns = [ name="join_group_request_admin_api"), url(r'^api/submission/$', SubmissionAPIView.as_view(), name="submission_api"), url(r'^api/admin/submission/$', SubmissionAdminAPIView.as_view(), name="submission_admin_api_view"), + url(r'^my_submissions/$', "submission.views.my_submission_list_page", name="my_submission_list_page"), + url(r'^my_submissions/(?P\d+)/$', "submission.views.my_submission_list_page", name="my_submission_list_page"), ] diff --git a/submission/views.py b/submission/views.py index 10c7786..a331984 100644 --- a/submission/views.py +++ b/submission/views.py @@ -13,6 +13,7 @@ from problem.models import Problem from utils.shortcuts import serializer_invalid_response, error_response, success_response, error_page, paginate from .models import Submission from .serializers import CreateSubmissionSerializer, SubmissionSerializer +from django.core.paginator import Paginator class SubmissionAPIView(APIView): @@ -101,4 +102,33 @@ class SubmissionAdminAPIView(APIView): if not problem_id: return error_response(u"参数错误") submissions = Submission.objects.filter(problem_id=problem_id).order_by("-create_time") - return paginate(request, submissions, SubmissionSerializer) \ No newline at end of file + return paginate(request, submissions, SubmissionSerializer) + +@login_required +def my_submission_list_page(request, page = 1): + try: + submissions = Submission.objects.filter(user_id=request.user.id) + except Submission.DoesNotExist: + return error_page(request, u"你还没有提交过任何问题") + paginator = Paginator(submissions, 20) + try: + current_page = paginator.page(int(page)) + except Exception: + return error_page(request, u"不存在的页码") + previous_page = next_page = None + try: + previous_page = current_page.previous_page_number() + except Exception: + pass + + try: + next_page = current_page.next_page_number() + except Exception: + pass + + return render(request, "oj/submission/my_submissions_list.html", + {"submissions": current_page, "page": int(page), + "previous_page": previous_page, "next_page": next_page}) + + + return render(request, "oj/submission/my_submissions_list.html", {"submissions": submission}) diff --git a/template/oj/submission/my_submissions_list.html b/template/oj/submission/my_submissions_list.html new file mode 100644 index 0000000..b381f5c --- /dev/null +++ b/template/oj/submission/my_submissions_list.html @@ -0,0 +1,60 @@ +{% extends 'oj_base.html' %} + +{% block body %} + + {% load submission %} +
+ + + + + + + + + + + + + + {% for item in submissions %} + + + + + + + + {% endfor %} + + +
#提交时间结果运行时间语言
{{ item.id }}{{ item.create_time }}{{ item.result|translate_result }} + {% if item.accepted_answer_time %} + {{ item.accepted_answer_time }}ms + {% else %} + -- + {% endif %} + + {{ item.language|translate_language }} +
+ +
+{% endblock %}