From 15b17023de1d1807ab762b00bb38c62c6ff15279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Thu, 10 Aug 2023 13:43:49 +0200 Subject: [PATCH] =?UTF-8?q?P=C5=99esunut=C3=AD=20=C5=99=C3=ADmsk=C3=BDch?= =?UTF-8?q?=20=C4=8D=C3=ADsel=20ze=20seminar.utils=20do=20various.utils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/utils.py | 21 --------------------- tvorba/models.py | 3 ++- various/utils.py | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/seminar/utils.py b/seminar/utils.py index 04c8d1c4..73705a95 100644 --- a/seminar/utils.py +++ b/seminar/utils.py @@ -21,27 +21,6 @@ def histogram(seznam): d[i] += 1 return d -# Pozor: zarovnáno velmi netradičně pro přehlednost -roman_numerals = zip((1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1), - ('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I')) - - -def roman(num): - res = "" - for i, n in roman_numerals: - res += n * (num // i) - num %= i - return res - - -def from_roman(rom): - if not rom: - return 0 - for i, n in roman_numerals: - if rom.upper().startswith(n): - return i + from_roman(rom[len(n):]) - raise Exception('Invalid roman numeral: "%s"', rom) - def seznam_problemu(): """Funkce pro hledání nekonzistencí v databázi a dalších nežádoucích stavů webu/databáze. diff --git a/tvorba/models.py b/tvorba/models.py index 9f21287e..cd52e2b2 100644 --- a/tvorba/models.py +++ b/tvorba/models.py @@ -35,6 +35,8 @@ from personalni.models import Prijemce, Organizator from seminar.models.base import SeminarModelBase +from various.utils import roman + logger = logging.getLogger(__name__) class OverwriteStorage(FileSystemStorage): @@ -73,7 +75,6 @@ class Rocnik(SeminarModelBase): # Ročník v římských číslech def roman(self): - from seminar.utils import roman return roman(int(self.rocnik)) def verejne(self): diff --git a/various/utils.py b/various/utils.py index 5905b2f6..93a0239e 100644 --- a/various/utils.py +++ b/various/utils.py @@ -31,3 +31,24 @@ class _bez_diakritiky_translate: bez_diakritiky_translate = _bez_diakritiky_translate() # TODO: testy? + +# Pozor: zarovnáno velmi netradičně pro přehlednost +roman_numerals = zip((1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1), + ('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I')) + + +def roman(num): + res = "" + for i, n in roman_numerals: + res += n * (num // i) + num %= i + return res + + +def from_roman(rom): + if not rom: + return 0 + for i, n in roman_numerals: + if rom.upper().startswith(n): + return i + from_roman(rom[len(n):]) + raise Exception('Invalid roman numeral: "%s"', rom)