ARUP-CAS / aiscr-webamcr

Archeologická mapa České republiky
https://amcr-info.aiscr.cz/
GNU General Public License v3.0
5 stars 0 forks source link

Upravit kontrolu pro telefonní čísla #890

Closed motyc closed 7 months ago

motyc commented 1 year ago

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)

pesikj commented 1 year ago

Odhad: 8 hodin

jnihnat commented 8 months ago

@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)?

motyc commented 8 months ago

@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í.

jnihnat commented 8 months ago

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 +

motyc commented 8 months ago

@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.