增加比赛倒计时的 api

This commit is contained in:
virusdefender 2015-09-20 14:11:03 +08:00
parent 0d6d1a4102
commit fcafd34442
2 changed files with 25 additions and 2 deletions

View File

@ -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))

View File

@ -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"),
]