mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2024-09-21 08:23:20 +00:00
重新修改后台比赛编辑前后端时间不一致问题,修改了后端serializers,通过继承原来的serializer.DateTimeField类替换contestSerilazer中的DateTime.这会影响到contestAdminApi的return,并不影响其他页面.而且通过timezone.local()方法转换时区
This commit is contained in:
parent
bc435d6515
commit
001a4e6bd4
@ -1,7 +1,8 @@
|
|||||||
# coding=utf-8
|
# coding=utf-8
|
||||||
import json
|
import json
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
from django.utils import timezone
|
||||||
|
import datetime
|
||||||
from account.models import User
|
from account.models import User
|
||||||
from account.serializers import UserSerializer
|
from account.serializers import UserSerializer
|
||||||
from .models import Contest, ContestProblem
|
from .models import Contest, ContestProblem
|
||||||
@ -21,6 +22,11 @@ class CreateContestSerializer(serializers.Serializer):
|
|||||||
visible = serializers.BooleanField()
|
visible = serializers.BooleanField()
|
||||||
|
|
||||||
|
|
||||||
|
class DateTimeLocal(serializers.DateTimeField):
|
||||||
|
def to_representation(self, value):
|
||||||
|
return timezone.localtime(value)
|
||||||
|
|
||||||
|
|
||||||
class ContestSerializer(serializers.ModelSerializer):
|
class ContestSerializer(serializers.ModelSerializer):
|
||||||
class UserSerializer(serializers.ModelSerializer):
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -28,6 +34,8 @@ class ContestSerializer(serializers.ModelSerializer):
|
|||||||
fields = ["username"]
|
fields = ["username"]
|
||||||
|
|
||||||
created_by = UserSerializer()
|
created_by = UserSerializer()
|
||||||
|
start_time = DateTimeLocal()
|
||||||
|
end_time = DateTimeLocal()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Contest
|
model = Contest
|
||||||
|
@ -149,16 +149,8 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
|
|||||||
vm.editingContestId = contestId;
|
vm.editingContestId = contestId;
|
||||||
vm.editTitle = vm.contestList[contestId-1].title;
|
vm.editTitle = vm.contestList[contestId-1].title;
|
||||||
vm.editPassword = vm.contestList[contestId-1].password;
|
vm.editPassword = vm.contestList[contestId-1].password;
|
||||||
//var startTime = new Date(), endTime = new Date();
|
vm.editStartTime = vm.contestList[contestId-1].start_time.substring(0,16).replace("T"," ");
|
||||||
//startTime.setFullYear(parseInt(vm.contestList[contestId-1].start_time.substring(0,4)))
|
vm.editEndTime = vm.contestList[contestId-1].end_time.substring(0,16).replace("T"," ");
|
||||||
//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.editMode = vm.contestList[contestId-1].mode;
|
||||||
vm.editVisible = vm.contestList[contestId-1].visible;
|
vm.editVisible = vm.contestList[contestId-1].visible;
|
||||||
if (vm.contestList[contestId-1].contest_type == 0) { //contest type == 0, contest in group
|
if (vm.contestList[contestId-1].contest_type == 0) { //contest type == 0, contest in group
|
||||||
@ -300,39 +292,6 @@ 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
|
// Get group list
|
||||||
$.ajax({ // Get current user type
|
$.ajax({ // Get current user type
|
||||||
url: "/api/user/",
|
url: "/api/user/",
|
||||||
|
Loading…
Reference in New Issue
Block a user