X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/433c2681ac4fea560f5b1ac3dc372353907a50b0..b58642415e284ebf397f3577bfe70277e84f6993:/wtem/models.py diff --git a/wtem/models.py b/wtem/models.py index fbf0928..5a7e221 100644 --- a/wtem/models.py +++ b/wtem/models.py @@ -4,6 +4,10 @@ import string import os import json +from datetime import datetime + +import pytz as pytz +from django.conf import settings from django.core.validators import validate_email from django.db import models from django.contrib.auth.models import User @@ -23,6 +27,8 @@ f.close() DEBUG_KEY = 'smerfetka159' +tz = pytz.timezone(settings.TIME_ZONE) + def get_exercise_by_id(exercise_id): return [e for e in exercises if str(e['id']) == str(exercise_id)][0] @@ -34,6 +40,10 @@ def make_key(length): for i in range(length)) +def tuple2dt(time_tuple): + return tz.localize(datetime(*time_tuple)) + + class CompetitionState(models.Model): """singleton""" BEFORE = 'before' @@ -46,9 +56,19 @@ class CompetitionState(models.Model): ) state = models.CharField(choices=STATE_CHOICES, max_length=16) + start = tuple2dt(settings.OLIMPIADA_START) + end = tuple2dt(settings.OLIMPIADA_END) + @classmethod def get_state(cls): - return cls.objects.get().state + now = timezone.now() + if now < cls.start: + return cls.BEFORE + elif now < cls.end: + return cls.DURING + else: + return cls.AFTER + # return cls.objects.get().state class Submission(models.Model): @@ -258,6 +278,9 @@ class Confirmation(models.Model): def readable_contact(self): return '%s <%s>' % (self.contact.body.get('przewodniczacy'), self.contact.contact) + def school_phone(self): + return '%s, tel. %s' % (self.contact.body.get('school'), self.contact.body.get('school_phone')) + def age(self): return timezone.now() - self.contact.created_at