From ff468bb590401f9cc3f561682fa1eaaf1a3aeaf1 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Sun, 10 Jan 2021 20:20:09 +0100 Subject: [PATCH] =?UTF-8?q?Inicializa=C4=8Dn=C3=AD=20funkce=20pro=20samost?= =?UTF-8?q?atn=C3=A9=20programy=20a=20funkce=20get=5Fnow()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Od nynějška je vždy inicializováno mo.now a je nastavené české locale. --- bin/add-role | 4 ++-- bin/create-contests | 4 ++-- bin/create-round | 2 +- bin/create-user | 2 +- bin/init-regions | 2 +- bin/init-schools | 2 +- mo/util.py | 14 ++++++++++++-- mo/web/__init__.py | 3 ++- 8 files changed, 22 insertions(+), 11 deletions(-) diff --git a/bin/add-role b/bin/add-role index 3d00b0bd..5c6d79c2 100755 --- a/bin/add-role +++ b/bin/add-role @@ -4,7 +4,7 @@ import argparse import mo.db as db import mo.util -from mo.util import die, default_logging +from mo.util import die, init_standalone parser = argparse.ArgumentParser(description='Přidělí uživateli roli') parser.add_argument('--email', type=str, help='e-mailová adresa uživatele') @@ -16,7 +16,7 @@ parser.add_argument('--year', type=int, help='omezení role na daný ročník') parser.add_argument('--seq', type=int, help='omezení role na dané pořadí kola') args = parser.parse_args() -default_logging() +init_standalone() session = db.get_session() if args.email and args.uid: diff --git a/bin/create-contests b/bin/create-contests index c84bd6c5..f6cea47e 100755 --- a/bin/create-contests +++ b/bin/create-contests @@ -4,7 +4,7 @@ import argparse import mo.db as db import mo.util -from mo.util import die, default_logging +from mo.util import die, init_standalone parser = argparse.ArgumentParser(description='Založí soutěže pro dané kolo') parser.add_argument(dest='round', type=str, metavar='YY-C-S', help='ID kola') @@ -12,7 +12,7 @@ parser.add_argument('-n', '--dry-run', default=False, action='store_true', help= args = parser.parse_args() -default_logging() +init_standalone() sess = db.get_session() round_code = mo.util.RoundCode.parse(args.round) diff --git a/bin/create-round b/bin/create-round index 529624cd..87ecfc58 100755 --- a/bin/create-round +++ b/bin/create-round @@ -14,7 +14,7 @@ parser.add_argument('-n', '--name', type=str, required=True, help='název kola') args = parser.parse_args() -mo.util.default_logging() +mo.util.init_standalone() sess = db.get_session() rnd = db.Round( diff --git a/bin/create-user b/bin/create-user index dc05050b..4cd2eaaa 100755 --- a/bin/create-user +++ b/bin/create-user @@ -16,7 +16,7 @@ parser.add_argument('--mail', default=False, action='store_true', help='pošle u args = parser.parse_args() -mo.util.default_logging() +mo.util.init_standalone() session = db.get_session() user = db.User( diff --git a/bin/init-regions b/bin/init-regions index 09a6400f..401be06c 100755 --- a/bin/init-regions +++ b/bin/init-regions @@ -6,7 +6,7 @@ import sys import mo.db as db import mo.util -mo.util.default_logging() +mo.util.init_standalone() session = db.get_session() session.query(db.Place).delete() diff --git a/bin/init-schools b/bin/init-schools index 44e858c4..656f3e8f 100755 --- a/bin/init-schools +++ b/bin/init-schools @@ -18,7 +18,7 @@ from collections import defaultdict import mo.db as db import mo.util -mo.util.default_logging() +mo.util.init_standalone() session = db.get_session() new_town_cnt = 0 processed_school_cnt = 0 diff --git a/mo/util.py b/mo/util.py index f9e043f3..a3c39ffa 100644 --- a/mo/util.py +++ b/mo/util.py @@ -2,8 +2,10 @@ from dataclasses import dataclass import datetime +import dateutil.tz import email.message import email.headerregistry +import locale import logging import re import subprocess @@ -12,6 +14,7 @@ from typing import Any, Optional, NoReturn import textwrap import urllib.parse +import mo import mo.db as db import mo.config as config @@ -24,8 +27,15 @@ logger.setLevel(logging.DEBUG) logger.propagate = True -def default_logging(): - logging.basicConfig() +def get_now() -> datetime.datetime: + return datetime.datetime.now(tz=dateutil.tz.UTC) + + +def init_standalone(): + """Společná inicializační funkce pro samostatné programy nezávislé na webu.""" + logging.basicConfig(format='%(asctime)-15s %(levelname)-5.5s %(message)s') + mo.now = get_now() + locale.setlocale(locale.LC_COLLATE, 'cs_CZ.UTF-8') def log(type: db.LogType, what: int, details: Any): diff --git a/mo/web/__init__.py b/mo/web/__init__.py index 549991a5..31b84a90 100644 --- a/mo/web/__init__.py +++ b/mo/web/__init__.py @@ -14,6 +14,7 @@ import mo import mo.config as config import mo.db as db import mo.users +import mo.util from mo.util import logger # Aplikační objekt @@ -62,7 +63,7 @@ def init_request(): else: user = None g.user = user - mo.now = datetime.datetime.now(tz=dateutil.tz.UTC) + mo.now = mo.util.get_now() g.now = mo.now # for templates mo.util.current_log_user = user -- GitLab