From fcafd3444283134bde4960a44d78496d88d6c0ed Mon Sep 17 00:00:00 2001 From: virusdefender <1670873886@qq.com> Date: Sun, 20 Sep 2015 14:11:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=AF=94=E8=B5=9B=E5=80=92?= =?UTF-8?q?=E8=AE=A1=E6=97=B6=E7=9A=84=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contest/views.py | 21 +++++++++++++++++++++ oj/urls.py | 6 ++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/contest/views.py b/contest/views.py index c1c19580..b38161a5 100644 --- a/contest/views.py +++ b/contest/views.py @@ -7,6 +7,8 @@ from django.db import IntegrityError from django.utils import dateparse from django.db.models import Q, Sum from django.core.paginator import Paginator +from django.utils.timezone import now + from rest_framework.views import APIView from utils.shortcuts import (serializer_invalid_response, error_response, @@ -454,3 +456,22 @@ def contest_rank_page(request, contest_id): "auto_refresh": request.GET.get("auto_refresh", None) == "true", "show_real_name": request.GET.get("show_real_name", None) == "true", "real_time_rank": contest.real_time_rank}) + + +class ContestTimeAPIView(APIView): + """ + 获取比赛开始或者结束的倒计时,返回毫秒数字 + """ + def get(self, request): + t = request.GET.get("type", "start") + contest_id = request.GET.get("contest_id", -1) + try: + contest = Contest.objects.get(id=contest_id) + except Contest.DoesNotExist: + return error_response(u"比赛不存在") + if t == "start": + # 距离开始还有多长时间 + return success_response(int((contest.start_time - now()).total_seconds() * 1000)) + else: + # 距离结束还有多长时间 + return success_response(int((contest.end_time - now()).total_seconds() * 1000)) diff --git a/oj/urls.py b/oj/urls.py index 6d556fc6..6f16acf8 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -8,7 +8,8 @@ from account.views import (UserLoginAPIView, UsernameCheckAPIView, UserRegisterA from announcement.views import AnnouncementAdminAPIView -from contest.views import ContestAdminAPIView, ContestProblemAdminAPIView, ContestPasswordVerifyAPIView +from contest.views import (ContestAdminAPIView, ContestProblemAdminAPIView, + ContestPasswordVerifyAPIView, ContestTimeAPIView) from group.views import (GroupAdminAPIView, GroupMemberAdminAPIView, JoinGroupAPIView, JoinGroupRequestAdminAPIView) @@ -25,7 +26,6 @@ from contest_submission.views import contest_problem_my_submissions_list_page urlpatterns = [ - url(r'^install/$', "install.views.install"), url("^$", "account.views.index_page", name="index_page"), url(r'^docs/', include('rest_framework_swagger.urls')), url(r'^admin/$', TemplateView.as_view(template_name="admin/admin.html"), name="admin_spa_page"), @@ -117,4 +117,6 @@ urlpatterns = [ url(r'^captcha/$', "utils.captcha.views.show_captcha", name="show_captcha"), url(r'^api/account_security_check/$', AccountSecurityAPIView.as_view(), name="account_security_check"), + + url(r'^api/contest/time/$', ContestTimeAPIView.as_view(), name="contest_time_api_view"), ]