X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/3f387ec5d75ff85576e87649427cbdc1f14a95b8..73fdcfae51e18d4ee8b84214fb44dad3d58ba49a:/wtem/models.py diff --git a/wtem/models.py b/wtem/models.py index 6440e70..390687f 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): @@ -96,8 +116,8 @@ class Submission(models.Model): def shuffled_exercise_ids(self): exercise_ids = [e['id'] for e in exercises] - random.seed(self.random_seed) - random.shuffle(exercise_ids) + seeded_random = random.Random(self.random_seed) + seeded_random.shuffle(exercise_ids) return exercise_ids def current_exercise(self):