From 45014c191db7033b5530450fb863f5a0bfff85ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Setni=C4=8Dka?= <setnicka@seznam.cz> Date: Sat, 9 Jan 2021 18:37:09 +0100 Subject: [PATCH] =?UTF-8?q?Zaveden=C3=AD=20glob=C3=A1ln=C3=ADho=20mo.now?= =?UTF-8?q?=20pro=20ke=C5=A1ov=C3=A1n=C3=AD=20=C4=8Dasu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Referenční čas nastavovaný v initu requestu (web) nebo při volání skriptu. --- mo/__init__.py | 5 +++++ mo/web/__init__.py | 11 +++-------- mo/web/templates/user_contest_task.html | 2 +- mo/web/user.py | 7 +++---- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/mo/__init__.py b/mo/__init__.py index d29dbadd..4ee7974b 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 31d637f4..df78cc1e 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 f648dd4a..819f7a11 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 001284d1..681276c4 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, ) -- GitLab