diff --git a/mo/__init__.py b/mo/__init__.py index d29dbadd2c2170bac11d6d6323df5681e7b5cf76..4ee7974be573575ac482398eca1d729a1cfff24f 100644 --- a/mo/__init__.py +++ b/mo/__init__.py @@ -1,4 +1,9 @@ # Top-level module +import datetime + # Aktuální ročník current_year = 70 + +# Referenční čas nastavovaný v initu requestu (web) nebo při volání skriptu +now: datetime.datetime diff --git a/mo/web/__init__.py b/mo/web/__init__.py index 31d637f44bcb8f5631d0b7b01f475b52ab74f1e9..df78cc1ee8f452ce5a3214d7f64435dd7170722a 100644 --- a/mo/web/__init__.py +++ b/mo/web/__init__.py @@ -9,6 +9,7 @@ import logging import os import werkzeug.exceptions +import mo import mo.config as config import mo.db as db import mo.users @@ -75,6 +76,8 @@ def init_request(): else: user = None g.user = user + mo.now = datetime.datetime.now(tz=dateutil.tz.UTC) + g.now = mo.now # for templates mo.util.current_log_user = user # K některým podstromům je nutné mít speciální oprávnění @@ -93,14 +96,6 @@ def init_request(): app.before_request(init_request) -# Kešování aktuálního času - -def get_request_time() -> datetime.datetime: - if not hasattr(g, 'now'): - g.now = datetime.datetime.now(tz=dateutil.tz.UTC) - return g.now - - # Většina webu je v samostatných modulech import mo.web.auth import mo.web.menu diff --git a/mo/web/templates/user_contest_task.html b/mo/web/templates/user_contest_task.html index f648dd4a81af696bbc7501b7e8414fa39c9b0ac4..819f7a11854239e13a8036c561bd57a77a236e0d 100644 --- a/mo/web/templates/user_contest_task.html +++ b/mo/web/templates/user_contest_task.html @@ -9,7 +9,7 @@ <h3>Odevzdat řešení</h3> -{% if round.ct_submit_end != None and when > round.ct_submit_end %} +{% if round.ct_submit_end != None and g.now > round.ct_submit_end %} <p class="alert alert-danger">Pozor, odevzdáváte po termínu. Vaše řešení nemusí být hodnoceno. Doporučujeme využít políčko pro komentář a vysvětlit situaci. {% endif %} diff --git a/mo/web/user.py b/mo/web/user.py index 001284d1cc0aa714ad56d211f3d37664b90e38f7..681276c4ff7a63d146019a2f4b3f053c86c11843 100644 --- a/mo/web/user.py +++ b/mo/web/user.py @@ -10,12 +10,13 @@ import werkzeug.exceptions import wtforms import wtforms.validators as validators +import mo import mo.config as config import mo.db as db import mo.submit import mo.util from mo.util import logger -from mo.web import app, get_request_time +from mo.web import app import mo.web.util @@ -36,7 +37,6 @@ def user_index(): return render_template( 'user_index.html', pions=pions, - when=get_request_time(), db=db, # kvůli hodnotám enumů ) @@ -83,7 +83,7 @@ def task_statement_available(contest: db.Contest) -> bool: return (round.state == db.RoundState.running and round.tasks_file is not None and round.ct_tasks_start is not None - and get_request_time() >= round.ct_tasks_start) + and mo.now >= round.ct_tasks_start) @app.route('/user/contest/<int:id>/') @@ -181,7 +181,6 @@ def user_contest_task(contest_id: int, task_id: int): contest=contest, task=task, papers=papers, - when=get_request_time(), form=form, )