diff --git a/contest/decorators.py b/contest/decorators.py index 0b25759f..df73274a 100644 --- a/contest/decorators.py +++ b/contest/decorators.py @@ -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: diff --git a/contest/models.py b/contest/models.py index 524f2eda..de9f2e15 100644 --- a/contest/models.py +++ b/contest/models.py @@ -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" diff --git a/utils/templatetags/contest.py b/utils/templatetags/contest.py index 04b144f6..76bf7689 100644 --- a/utils/templatetags/contest.py +++ b/utils/templatetags/contest.py @@ -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