使用 model 的 instance method 进行比赛状态的判断

This commit is contained in:
virusdefender 2015-08-24 03:36:17 +08:00
parent 1c37c4bfb6
commit 76b28f2da2
3 changed files with 24 additions and 7 deletions

View File

@ -74,7 +74,7 @@ def check_user_contest_permission(func):
{"reason": "group_limited", "show_tab": False, "contest": contest})
# 比赛没有开始
if contest.start_time > now():
if contest.status == 1:
if request.is_ajax():
return error_response(u"比赛还没有开始")
else:

View File

@ -1,5 +1,6 @@
# coding=utf-8
from django.db import models
from django.utils.timezone import now
from account.models import User
from problem.models import AbstractProblem
@ -34,6 +35,18 @@ class Contest(models.Model):
# 是否可见 false的话相当于删除
visible = models.BooleanField(default=True)
@property
def status(self):
if self.start_time > now():
# 没有开始 返回1
return 1
elif self.end_time < now():
# 已经结束 返回0
return -1
else:
# 正在进行 返回0
return 0
class Meta:
db_table = "contest"

View File

@ -4,19 +4,23 @@ from django.utils.timezone import now
def get_contest_status(contest):
if contest.start_time > now():
status = contest.status
if status == 1:
return "没有开始"
if contest.end_time < now():
elif status == -1:
return "已经结束"
return "正在进行"
else:
return "正在进行"
def get_contest_status_color(contest):
if contest.start_time > now():
status = contest.status
if status == 1:
return "info"
if contest.end_time < now():
elif status == -1:
return "warning"
return "success"
else:
return "success"
from django import template