Closed motyc closed 7 months ago
Odhad: 8 hodin
@motyc - prosim co chceme teda presne podporovat? CR (9 cislic) + medzinarodni? Nebo jen medzinarodni (za mne jednoduchsi a spravnejsi nez mit ruzne data v DB)?
@jnihnat Můžete prosím odkázat na konkrétní test pro tu druhou variantu, co by se tam pak vešlo? Já bych se jen snažil být dost inkluzivní, tj. aby to zvládlo zápisy 00420775200064, +420775200064 i +420 775 200 064 a ani v jednom z případů mi to nenadávalo (vše je správně) + mezinárodní varianty (kde toho je asi spousta).
Za ideální bych považoval mít státní předvolbu "+420" v prázdném poli předvyplněnou, že by dotyčný už jen vepsal zbytek (a v případě potřeby to umazal a nahradil správnou zahraniční předvolbou). Jen by se musel ošetřit, aby prosté "+420" nebylo bráno jako validní.
Tak som sa s tym hral a muj navrh: kontrola regexem "[\s\d+-(+)]+" pak pomoci python phonenumbers skusit rozparsovat to cislo. Ta knihovna funguje docela dobre, prtoze ji umim dat region CZ a teda to funguje takhle: pokud je cislo bez medzinarodni predvolby, teda + nebo 00 tak to kontroluje na narodni format CZ. Pokud to ma medzinarodni predvolbu, tak to skousi najit ci ta predvolba je validni. Pokud ne vrati chybu, mi muzeme vratit chybu nevalidni tel. cislo. Pokud tohle projde a najde medzinarodni predvolbu, je tam dalsi kontrola, ci dane cislo s predvolbou je validni, napr aby to cislo nebylo pak moc dlouhe, opet vratime chybu na nevalidni cislo pokud je nespravne. Dejte vedet ci by to tak mohlo byt, doplnil bych to vsude. A pak bychom mnely 2 chybovy hlasky:
Napadla mi este doplnujuca otazka, ci chceme potom tie cisla nejak normalizovat pred ulozenim do DB, odobrat -,(,) a pripadne pretvorit na medzinarodny format s +
@jnihnat Ano, to zní super. Jinak bych to nenormalizoval, protože automaticky to nikdy stejně číst nebudeme a byla by to zbytečná komplikace. Díky moc.
Nyní vyžaduje zápis státní předvolby (ale ne všude).
Sjednotit a regex upravit tak, aby povoloval i různé varianty zápisu a mezinárodních čísel, např. na tento výraz: https://www.regextester.com/1978 (lze využít i nativní moduly Django, např.: https://github.com/stefanfoulis/django-phonenumber-field)