From a6c33bed360473b10b21319888ef69fe115d8cb4 Mon Sep 17 00:00:00 2001 From: esp Date: Sat, 29 Aug 2015 16:49:07 +0800 Subject: [PATCH 1/9] =?UTF-8?q?[=E5=89=8D=E7=AB=AF]=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E9=A6=96=E9=A1=B5=E5=92=8Coj=5Fbase=E4=B8=AD?= =?UTF-8?q?=E5=AF=BC=E8=88=AA=E6=A0=8F=E9=A1=B9=E7=9B=AE,=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=A6=96=E9=A1=B5=E7=99=BB=E5=BD=95,=E5=8F=8A?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=8A=B6=E6=80=81=E5=8C=BA(=E8=BF=99?= =?UTF-8?q?=E4=B8=AA=E4=BD=BF=E7=94=A8css=E7=9A=84float:right=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E5=9B=BA=E5=AE=9A=E5=9C=A8=E5=8F=B3=E4=BE=A7,?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=8A=A8=E6=80=81=E5=93=8D=E5=BA=94=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E5=A4=A7=E5=B0=8F=E5=8F=98=E5=8C=96,=E5=8F=AA?= =?UTF-8?q?=E6=98=AF=E4=B8=8E=E5=AF=BC=E8=88=AA=E6=A0=8F=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E5=B0=91=E4=B8=8D=E5=AF=B9=E7=A7=B0=E4=BA=86.=E7=94=B1?= =?UTF-8?q?=E4=BA=8E=E6=B2=A1=E6=9C=89=E5=BC=95=E5=85=A5bootstraps?= =?UTF-8?q?=E6=89=80=E4=BB=A5=E6=B2=A1=E6=9C=89=E4=BD=BF=E7=94=A8=E4=B8=8E?= =?UTF-8?q?oj=5Fbase=E9=87=8C=E7=9B=B8=E5=90=8C=E7=9A=84=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=9D=A5=E6=98=BE=E7=A4=BA=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=90=8E=E7=9A=84=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template/src/oj/group/group_list.html | 10 ++++ template/src/oj/index.html | 86 ++++++++++++++++++--------- template/src/oj_base.html | 1 + 3 files changed, 68 insertions(+), 29 deletions(-) create mode 100644 template/src/oj/group/group_list.html diff --git a/template/src/oj/group/group_list.html b/template/src/oj/group/group_list.html new file mode 100644 index 0000000..d538fea --- /dev/null +++ b/template/src/oj/group/group_list.html @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/template/src/oj/index.html b/template/src/oj/index.html index 520f753..af54f1d 100644 --- a/template/src/oj/index.html +++ b/template/src/oj/index.html @@ -8,64 +8,71 @@ @@ -84,13 +91,34 @@ loopBottom: true }); }); + +
diff --git a/template/src/oj_base.html b/template/src/oj_base.html index be8f3b0..f39fea0 100644 --- a/template/src/oj_base.html +++ b/template/src/oj_base.html @@ -45,6 +45,7 @@
  • 题目
  • 提交
  • 比赛
  • +
  • 小组
  • 关于
  • {% if request.user.is_authenticated %} From 9bf3dad91e0165ad504e0ec2bc09ea2ad86c6d61 Mon Sep 17 00:00:00 2001 From: esp Date: Sat, 29 Aug 2015 17:06:00 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=89=8D=E5=8F=B0?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=88=97=E8=A1=A8=E7=9A=84=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F,=E4=BD=BF=E4=B9=8B=E4=B8=8E=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E5=88=97=E8=A1=A8=E5=BD=A2=E5=BC=8F=E6=9B=B4=E5=8A=A0?= =?UTF-8?q?=E7=BB=9F=E4=B8=80,=E4=BF=AE=E6=94=B9=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=9A=84=E9=A2=9C=E8=89=B2=E6=9C=89=E5=8E=9F=E6=9D=A5=E7=9A=84?= =?UTF-8?q?class=3Dsuccess=E7=AD=89=E7=AD=89=E6=94=B9=E4=B8=BAalert-succes?= =?UTF-8?q?s,=E5=B9=B6=E5=A2=9E=E5=8A=A0strong=E6=A0=87=E7=AD=BE[CI=20SKIP?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template/src/oj/group/group_list.html | 91 +++++++++++++++++-- .../src/oj/problem/my_submissions_list.html | 14 +-- .../oj/submission/my_submissions_list.html | 67 ++++++++------ 3 files changed, 128 insertions(+), 44 deletions(-) diff --git a/template/src/oj/group/group_list.html b/template/src/oj/group/group_list.html index d538fea..247b07f 100644 --- a/template/src/oj/group/group_list.html +++ b/template/src/oj/group/group_list.html @@ -1,10 +1,83 @@ - - - - - - - +{% extends "oj_base.html" %} +{% block body %} + {% load problem %} +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + + + + + + + {% for item in problems %} + + + + + + + + {% endfor %} + +
    #题目难度通过率
    {{ item.id }}{{ item.title }}{{ item.difficulty }}{{ item|accepted_radio }}
    + +
    +
    - - \ No newline at end of file +
    + {% include "oj/announcement/_announcement_panel.html" %} +
    +
    +

    + + 分类 +

    +
    +
      + {% for item in tags %} +
    • + {{ item.problem_number }} + {{ item.name }} +
    • + {% endfor %} +
    +
    + +
    +
    +
    +{% endblock %} + +{% block js_block %} + +{% endblock %} \ No newline at end of file diff --git a/template/src/oj/problem/my_submissions_list.html b/template/src/oj/problem/my_submissions_list.html index 03d7e8c..3bf7ac5 100644 --- a/template/src/oj/problem/my_submissions_list.html +++ b/template/src/oj/problem/my_submissions_list.html @@ -17,17 +17,19 @@ # 提交时间 - 结果 - 运行时间 语言 + 运行时间 + 结果 {% for item in submissions %} - + {{ forloop.counter }} {{ item.create_time }} - {{ item.result|translate_result }} + + {{ item.language|translate_language }} + {% if item.accepted_answer_time %} {{ item.accepted_answer_time }}ms @@ -35,8 +37,8 @@ -- {% endif %} - - {{ item.language|translate_language }} + + {{ item.result|translate_result }} {% endfor %} diff --git a/template/src/oj/submission/my_submissions_list.html b/template/src/oj/submission/my_submissions_list.html index e048ab9..d3c0844 100644 --- a/template/src/oj/submission/my_submissions_list.html +++ b/template/src/oj/submission/my_submissions_list.html @@ -5,47 +5,55 @@ {% load submission %}
    - +
    - - {% for item in submissions %} - + - + - + {% endfor %} From 91f961e0b271487ee23e1a7f4e5411e42b79e6ae Mon Sep 17 00:00:00 2001 From: esp Date: Sat, 29 Aug 2015 17:07:02 +0800 Subject: [PATCH 3/9] =?UTF-8?q?[=E5=90=8E=E5=8F=B0]=E6=88=91=E7=9A=84?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=88=97=E8=A1=A8=E4=B8=8D=E5=86=8D=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=AF=94=E8=B5=9B=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- submission/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submission/views.py b/submission/views.py index 5c90aca..0925e13 100644 --- a/submission/views.py +++ b/submission/views.py @@ -138,7 +138,7 @@ def my_submission_list_page(request, page=1): """ 我的所有提交的列表页 """ - submissions = Submission.objects.filter(user_id=request.user.id). \ + submissions = Submission.objects.filter(user_id=request.user.id, contest_id__isnull=True). \ values("id", "result", "create_time", "accepted_answer_time", "language").order_by("-create_time") language = request.GET.get("language", None) filter = None From 85905f91e365125014faed1ed94e124bff54d4b2 Mon Sep 17 00:00:00 2001 From: esp Date: Sat, 29 Aug 2015 17:54:09 +0800 Subject: [PATCH 4/9] =?UTF-8?q?[=E5=90=8E=E7=AB=AF]=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=AF=94=E8=B5=9B,=E9=A2=98=E7=9B=AE=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=A1=B5=E5=AF=B9=E6=8F=8F=E8=BF=B0=E7=9A=84=E6=A3=80=E7=B4=A2?= =?UTF-8?q?(=E5=8E=9F=E6=9D=A5=E4=BB=85=E5=AF=B9=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E6=A3=80=E7=B4=A2=E5=85=B3=E9=94=AE=E5=AD=97)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contest/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contest/views.py b/contest/views.py index 4763bd8..2153f95 100644 --- a/contest/views.py +++ b/contest/views.py @@ -343,7 +343,7 @@ def contest_list_page(request, page=1): # 搜索的情况 keyword = request.GET.get("keyword", None) if keyword: - contests = contests.filter(title__contains=keyword) + contests = contests.filter(Q(title__contains=keyword) | Q(description__contains=keyword)) # 筛选我能参加的比赛 join = request.GET.get("join", None) From 63a858bd06fc061cbc6ca15b1dbb1fef36303fa4 Mon Sep 17 00:00:00 2001 From: esp Date: Sat, 29 Aug 2015 18:21:03 +0800 Subject: [PATCH 5/9] =?UTF-8?q?[=E5=89=8D=E5=8F=B0]=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E5=B0=8F=E7=BB=84=E5=88=97=E8=A1=A8=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?,=E5=B8=A6=E6=B5=8B=E8=AF=95,=E4=B8=8D=E5=85=A8=E8=A6=86?= =?UTF-8?q?=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group/tests.py | 27 ++++++++++++ group/views.py | 53 +++++++++++++++++++---- oj/urls.py | 5 ++- template/src/oj/group/group_list.html | 60 +++++++++++---------------- 4 files changed, 101 insertions(+), 44 deletions(-) diff --git a/group/tests.py b/group/tests.py index f62dfa5..50e7168 100644 --- a/group/tests.py +++ b/group/tests.py @@ -8,6 +8,8 @@ from rest_framework.test import APITestCase, APIClient from account.models import User, REGULAR_USER, ADMIN, SUPER_ADMIN from group.models import Group, UserGroupRelation, JoinGroupRequest +from django.test import TestCase, Client + class GroupAPITest(APITestCase): pass @@ -254,3 +256,28 @@ class JoinGroupRequestAdminAPITest(APITestCase): response = self.client.put(self.url, data=data) self.assertEqual(response.data, {"code": 1, "data": u"加入失败,已经在本小组内"}) + +class ProblemListPageTest(TestCase): + def setUp(self): + self.client = Client() + self.url = reverse('group_list_page') + self.url = reverse('problem_list_page', kwargs={"page": 1}) + self.user = User.objects.create(username="test", admin_type=SUPER_ADMIN) + self.user.set_password("testaa") + self.user.save() + self.group = Group.objects.create(name="group1", + description="description1", + # 0是公开 1是需要申请后加入 2是不允许任何人加入 + join_group_setting = 1, + admin=User.objects.get(username="test")) + + def get_group_list_page_successful(self): + self.client.login(username="test", password="testaa") + response = self.client.get(self.url) + self.assertEqual(response.status_coed, 200) + + def get_group_list_page_successful_with_keyword(self): + self.client.login(username="test", password="testaa") + response = self.client.get(self.url+"?keyword=gro") + self.assertEqual(response.status_coed, 200) + diff --git a/group/views.py b/group/views.py index ff1cbde..6a9d2d1 100644 --- a/group/views.py +++ b/group/views.py @@ -4,7 +4,7 @@ from django.db import IntegrityError from rest_framework.views import APIView -from utils.shortcuts import error_response, serializer_invalid_response, success_response, paginate +from utils.shortcuts import error_response, serializer_invalid_response, success_response, paginate, error_page from account.models import REGULAR_USER, ADMIN, SUPER_ADMIN from account.decorators import login_required @@ -13,6 +13,9 @@ from .serializers import (CreateGroupSerializer, EditGroupSerializer, CreateJoinGroupRequestSerializer, GroupSerializer, GroupMemberSerializer, EditGroupMemberSerializer, JoinGroupRequestSerializer, PutJoinGroupRequestSerializer) +from announcement.models import Announcement +from django.core.paginator import Paginator +from django.db.models import Q class GroupAPIViewBase(object): @@ -26,7 +29,7 @@ class GroupAPIViewBase(object): else: group = Group.objects.get(id=group_id, visible=True, admin=request.user) return group - + def get_groups(self, request): """ 如果是超级管理员,就返回全部的小组 @@ -113,8 +116,8 @@ class GroupAdminAPIView(APIView, GroupAPIViewBase): elif request.GET.get("admin_id", None): groups = groups.filter(admin__id=request.GET["admin_id"]) return paginate(request, groups, GroupSerializer) - - + + class GroupMemberAdminAPIView(APIView, GroupAPIViewBase): def get(self, request): """ @@ -129,9 +132,9 @@ class GroupMemberAdminAPIView(APIView, GroupAPIViewBase): group = self.get_group(request, group_id) except Group.DoesNotExist: return error_response(u"小组不存在") - + return paginate(request, UserGroupRelation.objects.filter(group=group), GroupMemberSerializer) - + def put(self, request): """ 删除小组成员的api接口 @@ -190,7 +193,7 @@ class JoinGroupAPIView(APIView): return error_response(u"该小组不允许任何人加入") else: return serializer_invalid_response(serializer) - + def get(self, request): """ 搜索小组的api,需要传递keyword参数 @@ -244,3 +247,39 @@ class JoinGroupRequestAdminAPIView(APIView, GroupAPIViewBase): else: return serializer_invalid_response(serializer) + +@login_required +def group_list_page(request, page=1): + # 右侧的公告列表 + announcements = Announcement.objects.filter(is_global=True, visible=True).order_by("-create_time") + + groups = Group.objects.filter(visible=True, join_group_setting__lte=2) + # 搜索的情况 + keyword = request.GET.get("keyword", None) + if keyword: + groups = groups.filter(Q(name__contains=keyword) | Q(description__contains=keyword)) + + paginator = Paginator(groups, 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 + next_page = None + try: + next_page = current_page.next_page_number() + except Exception: + pass + + return render(request, "oj/group/group_list.html", { + "groups": groups, "announcements": announcements, + "contests": current_page, "page": int(page), + "previous_page": previous_page, "next_page": next_page, + "keyword": keyword, "announcements": announcements, + }) diff --git a/oj/urls.py b/oj/urls.py index b3f6929..08937c4 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -100,6 +100,9 @@ urlpatterns = [ url(r'^submissions/$', "submission.views.my_submission_list_page", name="my_submission_list_page"), url(r'^submissions/(?P\d+)/$', "submission.views.my_submission_list_page", name="my_submission_list_page"), - url(r'^contest/(?P\d+)/rank/$', "contest.views.contest_rank_page", name="contest_rank_page") + url(r'^contest/(?P\d+)/rank/$', "contest.views.contest_rank_page", name="contest_rank_page"), + + url(r'^groups/$', "group.views.group_list_page", name="group_list_page"), + url(r'^groups/(?P\d+)/$', "group.views.group_list_page", name="group_list_page") ] diff --git a/template/src/oj/group/group_list.html b/template/src/oj/group/group_list.html index 247b07f..d499e1a 100644 --- a/template/src/oj/group/group_list.html +++ b/template/src/oj/group/group_list.html @@ -18,21 +18,27 @@
    # 提交时间 + + 运行时间 + +
    {{ forloop.counter |add:start_id }} {{ item.create_time }}{{ item.result|translate_result }} + {{ item.language|translate_language }} + {% if item.accepted_answer_time %} {{ item.accepted_answer_time }}ms @@ -53,9 +61,10 @@ -- {% endif %} - {{ item.language|translate_language }} + + {{ item.result|translate_result }}
    - - - - + + + + - {% for item in problems %} + {% for item in groups %} - - - - - + + + + + {% endfor %} @@ -41,13 +47,16 @@ @@ -56,28 +65,7 @@
    {% include "oj/announcement/_announcement_panel.html" %} -
    -
    -

    - - 分类 -

    -
    -
      - {% for item in tags %} -
    • - {{ item.problem_number }} - {{ item.name }} -
    • - {% endfor %} -
    -
    -
    {% endblock %} - -{% block js_block %} - -{% endblock %} \ No newline at end of file From f222472c1330380cc3c4cdcc81f14e6f488d8492 Mon Sep 17 00:00:00 2001 From: esp Date: Sat, 29 Aug 2015 19:04:26 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=A3=80=E7=B4=A2=E5=8C=85=E5=90=AB=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problem/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/problem/views.py b/problem/views.py index 2e9d172..6052ea9 100644 --- a/problem/views.py +++ b/problem/views.py @@ -222,7 +222,7 @@ def problem_list_page(request, page=1): # 搜索的情况 keyword = request.GET.get("keyword", None) if keyword: - problems = problems.filter(title__contains=keyword) + problems = problems.filter(Q(title__contains=keyword) | Q(description__contains=keyword)) # 按照标签筛选 tag_text = request.GET.get("tag", None) From 546fe6337a8f38551d67fea61c5fe4cae0ceaea5 Mon Sep 17 00:00:00 2001 From: esp Date: Sat, 29 Aug 2015 19:05:04 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E6=B3=A8=E9=87=8A[CI=20SKIP]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- submission/tests.py | 1 - 1 file changed, 1 deletion(-) diff --git a/submission/tests.py b/submission/tests.py index 3aab246..0d374ee 100644 --- a/submission/tests.py +++ b/submission/tests.py @@ -18,7 +18,6 @@ class SubmissionsListPageTest(TestCase): self.user.set_password("666666") self.user.save() self.user2.save() - # self.client.login(username="gogoing", password="666666") self.submission = Submission.objects.create(user_id=self.user.id, language=1, code='#include "stdio.h"\nint main(){\n\treturn 0;\n}', From d903832ba29446907d0452bb59048f7609eeff9a Mon Sep 17 00:00:00 2001 From: esp Date: Sat, 29 Aug 2015 19:13:20 +0800 Subject: [PATCH 8/9] =?UTF-8?q?[Bugs]=E4=BF=AE=E5=A4=8D=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=AF=94=E8=B5=9B,=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=8F=AF=E8=A7=81=E4=B8=8D=E5=8F=AF=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template/src/admin/contest/contest_list.html | 2 +- template/src/admin/problem/problem_list.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/template/src/admin/contest/contest_list.html b/template/src/admin/contest/contest_list.html index 7418a56..945d1f5 100644 --- a/template/src/admin/contest/contest_list.html +++ b/template/src/admin/contest/contest_list.html @@ -173,7 +173,7 @@ - + - +
    #题目难度通过率名称加入方式创建者创建时间
    {{ item.id }}{{ item.title }}{{ item.difficulty }}{{ item|accepted_radio }}{{ item.id }}{{ item.name }} + {% if item.join_group_setting %} + 需要申请 + {% else %} + 无需申请 + {% endif %} + {{ item.admin }}{{ item.create_time }}
    {{ el.sort_index }} {{ el.title }} {{ el.score}}{{ getYesOrNo(el.visible) }} {{ el.create_time|date("yyyy-MM-dd HH:mm:ss") }} {{ el.title }} {{ el.create_time|date("yyyy-MM-dd HH:mm:ss")}} {{ el.created_by.username }}{{ getYesOrNo(el.visible) }} {{ el.total_accepted_number }}/{{ el.total_submit_number }} From b72fba2b5400e7e67b7accb23ca4cf57619279f6 Mon Sep 17 00:00:00 2001 From: esp Date: Mon, 31 Aug 2015 08:27:46 +0800 Subject: [PATCH 9/9] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E6=AF=94=E8=B5=9B=E7=AE=A1=E7=90=86=E7=BC=96=E8=BE=91,?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E4=BC=A0=E6=9D=A5=E7=9A=84=E6=98=AFutc?= =?UTF-8?q?=E6=97=B6=E9=97=B4,=E5=9B=A0=E4=B8=BA=E5=BC=80=E5=A7=8B,?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4=E8=B7=9F=E5=88=9B=E5=BB=BA?= =?UTF-8?q?,=E4=BF=AE=E6=94=B9=E6=97=B6=E9=97=B4=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=96=B9=E6=B3=95=E6=98=AF=E4=B8=8D=E5=90=8C=E7=9A=84?= =?UTF-8?q?,=E6=88=91=E9=80=9A=E8=BF=87=E4=BF=AE=E6=94=B9=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E4=BB=A3=E7=A0=81=E8=A7=A3=E5=86=B3=E4=BA=86=E8=AF=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98.=E4=BD=86=E6=98=AF=E6=AF=94=E8=BE=83?= =?UTF-8?q?=E7=B9=81=E7=90=90,=E5=9B=A0=E4=B8=BA=E5=9C=A8=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E8=BF=99=E4=B8=AA=E6=97=A5=E6=9C=9F=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E6=9D=A5=E5=AD=98=E5=82=A8=E7=9A=84?= =?UTF-8?q?.=E8=80=8C=E5=90=8E=E7=AB=AF=E8=99=BD=E6=98=AFdatetime=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B,=E4=BD=86=E8=BF=94=E5=9B=9E=E7=9A=84=E6=98=AF?= =?UTF-8?q?=E6=AF=94=E8=B5=9B=E7=9A=84=E6=95=B0=E7=BB=84,=E8=8B=A5?= =?UTF-8?q?=E8=A6=81=E5=A4=84=E7=90=86=E4=B9=9F=E8=BE=83=E7=B9=81=E7=90=90?= =?UTF-8?q?,=E4=B8=94=E6=9A=82=E6=B2=A1=E6=89=BE=E5=88=B0=E7=AE=80?= =?UTF-8?q?=E6=B4=81=E7=9A=84=E5=86=99=E6=B3=95.=E4=BA=8E=E6=98=AF?= =?UTF-8?q?=E8=BF=98=E6=98=AF=E9=80=89=E6=8B=A9=E4=BA=86=E6=94=B9=E5=89=8D?= =?UTF-8?q?=E7=AB=AF,=E5=85=B6=E5=AE=9E=E5=AE=9E=E8=B4=A8=E4=B8=8A?= =?UTF-8?q?=E6=98=AF=E6=89=8B=E5=B7=A5=E7=BB=99=E6=97=B6=E9=97=B4=E5=8A=A0?= =?UTF-8?q?=E4=BA=868=E5=B0=8F=E6=97=B6.....[CI=20SKIP]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/js/app/admin/contest/contestList.js | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/static/src/js/app/admin/contest/contestList.js b/static/src/js/app/admin/contest/contestList.js index f63cdcc..4135fce 100644 --- a/static/src/js/app/admin/contest/contestList.js +++ b/static/src/js/app/admin/contest/contestList.js @@ -149,8 +149,16 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker", vm.editingContestId = contestId; vm.editTitle = vm.contestList[contestId-1].title; vm.editPassword = vm.contestList[contestId-1].password; - vm.editStartTime = vm.contestList[contestId-1].start_time.substring(0,16).replace("T"," "); - vm.editEndTime = vm.contestList[contestId-1].end_time.substring(0,16).replace("T"," "); + //var startTime = new Date(), endTime = new Date(); + //startTime.setFullYear(parseInt(vm.contestList[contestId-1].start_time.substring(0,4))) + //startTime.setMonth(parseInt(vm.contestList[contestId-1].start_time.substring(5,7))) + //startTime.setDate(parseInt(vm.contestList[contestId-1].start_time.substring(8,10))) + //startTime.setHours(parseInt(vm.contestList[contestId-1].start_time.substring(11,13))) + //startTime.setMinutes(parseInt(vm.contestList[contestId-1].start_time.substring(14,16))) + //startTime = new Date(startTime + 8 * 60 * 60 * 1000) + + vm.editStartTime = add8Hours(vm.contestList[contestId-1].start_time); + vm.editEndTime = add8Hours(vm.contestList[contestId-1].end_time);//.substring(0,16).replace("T"," "); vm.editMode = vm.contestList[contestId-1].mode; vm.editVisible = vm.contestList[contestId-1].visible; if (vm.contestList[contestId-1].contest_type == 0) { //contest type == 0, contest in group @@ -291,6 +299,40 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker", } }); } + + function add8Hours(UtcString) { + console.log(UtcString); + var M = [31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + /*time.setFullYear(parseInt(UtcString.substring(0,4))) + time.setMonth(parseInt(UtcString.substring(5,7))) + time.setDate(parseInt(UtcString.substring(8,10))) + time.setHours(parseInt(UtcString.substring(11,13))) + time.setMinutes(parseInt(UtcString.substring(14,16))) + time = new Date(time + 8 * 60 * 60 * 1000)*/ + var year =UtcString.substring(0,4); + var month =UtcString.substring(5,7); + var day =UtcString.substring(8,10); + var hour =parseInt(UtcString.substring(11,13)) + 8; + var minute = UtcString.substring(14,16); + if (hour > 23) { + hour -= 24; day = parseInt(day)+1; month = parseInt(month); + if (month == 2) if (!(year%400)||(!(year%4)&&year%100)) M[2] = 29; + if (day > M[month]) { + day = 1; + month = parseInt(month)+1; + if (month > 12) { + year=parseInt(year)+1; month = 1; + } + } + month = month.toString(); + day = day.toString(); + if (month.length==1) month = "0"+month; + if (day.length==1) day = "0"+day; + } + hour = hour.toString(); + if (hour.length==1) hour="0"+hour; + return year+"-"+month+"-"+day+" "+hour+":"+minute; + } // Get group list $.ajax({ // Get current user type url: "/api/user/",