From 15f71507d423b3fae4c3a932e9f2cd26802672f5 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Fri, 24 Sep 2021 18:38:38 +0200
Subject: [PATCH] =?UTF-8?q?current=5Fyear=20p=C5=99esunut=20do=20konfigura?=
=?UTF-8?q?ce?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
etc/config.py.example | 3 +++
mo/__init__.py | 3 ---
mo/imports.py | 3 ++-
mo/web/acct.py | 2 +-
mo/web/org.py | 3 ++-
mo/web/org_round.py | 4 ++--
mo/web/user.py | 9 ++++-----
7 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/etc/config.py.example b/etc/config.py.example
index f7db910c..af31c885 100644
--- a/etc/config.py.example
+++ b/etc/config.py.example
@@ -53,3 +53,6 @@ REG_MAX_PER_MINUTE = 10
# Jak dlouho vydrží tokeny používané při registraci a změnách e-mailu [min]
REG_TOKEN_VALIDITY = 10
+
+# Aktuální ročník MO
+CURRENT_YEAR = 71
diff --git a/mo/__init__.py b/mo/__init__.py
index 98d16b9a..d98ba045 100644
--- a/mo/__init__.py
+++ b/mo/__init__.py
@@ -2,9 +2,6 @@
import datetime
-# Aktuální ročník
-current_year = 71
-
# Referenční čas nastavovaný v initu requestu (web) nebo při volání skriptu
now: datetime.datetime
diff --git a/mo/imports.py b/mo/imports.py
index 005f62f0..4cf8deed 100644
--- a/mo/imports.py
+++ b/mo/imports.py
@@ -7,6 +7,7 @@ from sqlalchemy import and_
from sqlalchemy.orm import joinedload, Query
from typing import List, Optional, Any, Dict, Type, Union
+import mo.config as config
import mo.csv
from mo.csv import FileFormat, MissingHeaderError
import mo.db as db
@@ -449,7 +450,7 @@ class ContestImport(Import):
if user is None:
return
- part = self.find_or_create_participant(user, mo.current_year, school_place.place_id if school_place else None, rok_naroz, rocnik)
+ part = self.find_or_create_participant(user, config.CURRENT_YEAR, school_place.place_id if school_place else None, rok_naroz, rocnik)
if part is None:
return
diff --git a/mo/web/acct.py b/mo/web/acct.py
index cd3bc74e..a07888d3 100644
--- a/mo/web/acct.py
+++ b/mo/web/acct.py
@@ -120,7 +120,7 @@ def user_settings():
if g.user.is_org or g.user.is_admin:
pant = None
else:
- pant = sess.query(db.Participant).get((g.user.user_id, mo.current_year))
+ pant = sess.query(db.Participant).get((g.user.user_id, config.CURRENT_YEAR))
return render_template('settings.html', user=g.user, pant=pant, roles=roles, roles_by_type=mo.rights.roles_by_type)
diff --git a/mo/web/org.py b/mo/web/org.py
index aebbfae9..a07d6261 100644
--- a/mo/web/org.py
+++ b/mo/web/org.py
@@ -3,6 +3,7 @@ from sqlalchemy import and_, or_
from sqlalchemy.orm import aliased, joinedload
from typing import List, Set, Dict
+import mo.config as config
import mo.db as db
import mo.rights
import mo.users
@@ -38,7 +39,7 @@ def org_index():
or_(db.UserRole.category == None, db.UserRole.category == db.Round.category),
or_(db.UserRole.year == None, db.UserRole.year == db.Round.year),
or_(db.UserRole.seq == None, db.UserRole.seq == db.Round.seq),
- db.Round.year == mo.current_year,
+ db.Round.year == config.CURRENT_YEAR,
db.Contest.round_id == db.Round.round_id,
db.Contest.place_id == db.UserRole.place_id))
.options(joinedload(db.Contest.place))
diff --git a/mo/web/org_round.py b/mo/web/org_round.py
index 88da8505..587821c9 100644
--- a/mo/web/org_round.py
+++ b/mo/web/org_round.py
@@ -16,7 +16,7 @@ import wtforms
from wtforms import validators, ValidationError
from wtforms.widgets.html5 import NumberInput
-import mo
+import mo.config as config
import mo.db as db
import mo.imports
from mo.rights import Right, RoundRights
@@ -54,7 +54,7 @@ def get_task(round: db.Round, task_id: int) -> db.Task:
def org_rounds():
sess = db.get_session()
- rounds = sess.query(db.Round).filter_by(year=mo.current_year).order_by(db.Round.year, db.Round.category, db.Round.seq, db.Round.part)
+ rounds = sess.query(db.Round).filter_by(year=config.CURRENT_YEAR).order_by(db.Round.year, db.Round.category, db.Round.seq, db.Round.part)
return render_template('org_rounds.html', rounds=rounds, history=False)
diff --git a/mo/web/user.py b/mo/web/user.py
index ee53d404..4ac6b05a 100644
--- a/mo/web/user.py
+++ b/mo/web/user.py
@@ -8,7 +8,6 @@ import werkzeug.exceptions
import wtforms
from wtforms.validators import Required
-import mo
import mo.config as config
import mo.email
import mo.db as db
@@ -41,7 +40,7 @@ def load_pcrs() -> List[Tuple[db.Participation, db.Contest, db.Round]]:
.join(db.Contest, db.Contest.master_contest_id == db.Participation.contest_id)
.join(db.Round)
.filter(db.Participation.user == g.user)
- .filter(db.Round.year == mo.current_year)
+ .filter(db.Round.year == config.CURRENT_YEAR)
.options(joinedload(db.Contest.place))
.order_by(db.Round.category, db.Round.seq, db.Round.part)
.all())
@@ -52,7 +51,7 @@ def user_join():
available_rounds: List[db.Round] = (
db.get_session().query(db.Round)
.select_from(db.Round)
- .filter_by(year=mo.current_year)
+ .filter_by(year=config.CURRENT_YEAR)
.filter(db.Round.enroll_mode.in_([db.RoundEnrollMode.register, db.RoundEnrollMode.confirm]))
.filter_by(state=db.RoundState.running)
.order_by(db.Round.category, db.Round.seq)
@@ -87,7 +86,7 @@ def user_join_round(round_id):
if not round:
raise werkzeug.exceptions.NotFound()
- if (round.year != mo.current_year
+ if (round.year != config.CURRENT_YEAR
or round.part > 1
or round.enroll_mode not in [db.RoundEnrollMode.register, db.RoundEnrollMode.confirm]
or round.state != db.RoundState.running):
@@ -155,7 +154,7 @@ def user_join_round(round_id):
def join_create_pant(form: JoinRoundForm) -> db.Participant:
assert form.school.place is not None
pant = db.Participant(user=g.user,
- year=mo.current_year,
+ year=config.CURRENT_YEAR,
school_place=form.school.place,
grade=form.grade.data,
birth_year=form.birth_year.data)
--
GitLab