Browse Source

Přesunutí římských čísel ze seminar.utils do various.utils

v3
Jonas Havelka 1 year ago
parent
commit
15b17023de
  1. 21
      seminar/utils.py
  2. 3
      tvorba/models.py
  3. 21
      various/utils.py

21
seminar/utils.py

@ -21,27 +21,6 @@ def histogram(seznam):
d[i] += 1 d[i] += 1
return d 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(): def seznam_problemu():
"""Funkce pro hledání nekonzistencí v databázi a dalších nežádoucích stavů webu/databáze. """Funkce pro hledání nekonzistencí v databázi a dalších nežádoucích stavů webu/databáze.

3
tvorba/models.py

@ -35,6 +35,8 @@ from personalni.models import Prijemce, Organizator
from seminar.models.base import SeminarModelBase from seminar.models.base import SeminarModelBase
from various.utils import roman
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class OverwriteStorage(FileSystemStorage): class OverwriteStorage(FileSystemStorage):
@ -73,7 +75,6 @@ class Rocnik(SeminarModelBase):
# Ročník v římských číslech # Ročník v římských číslech
def roman(self): def roman(self):
from seminar.utils import roman
return roman(int(self.rocnik)) return roman(int(self.rocnik))
def verejne(self): def verejne(self):

21
various/utils.py

@ -31,3 +31,24 @@ class _bez_diakritiky_translate:
bez_diakritiky_translate = _bez_diakritiky_translate() bez_diakritiky_translate = _bez_diakritiky_translate()
# TODO: testy? # 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)

Loading…
Cancel
Save