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