Přesunutí římských čísel ze seminar.utils do various.utils
This commit is contained in:
parent
c89a982440
commit
15b17023de
3 changed files with 23 additions and 22 deletions
|
@ -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.
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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…
Reference in a new issue