From 95e9480963709743e1f5d7f55f02858421654984 Mon Sep 17 00:00:00 2001 From: Jiri Kalvoda <jirikalvoda@kam.mff.cuni.cz> Date: Sun, 1 Aug 2021 19:18:18 +0200 Subject: [PATCH] =?UTF-8?q?Import=20sout=C4=9B=C5=BE=C3=ADc=C3=ADch:=20Nep?= =?UTF-8?q?ovinn=C3=A9=20zad=C3=A1v=C3=A1n=C3=AD=20n=C4=9Bkter=C3=BDch=20?= =?UTF-8?q?=C3=BAdaj=C5=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jméno, škola, ročník a rok narození nejsou povinné pro již existující uživatele resp. registrace do ročníku. --- mo/imports.py | 23 +++++++++-------------- mo/web/templates/doc_import.html | 12 ++++++------ 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/mo/imports.py b/mo/imports.py index 33284537..96ad0f13 100644 --- a/mo/imports.py +++ b/mo/imports.py @@ -187,7 +187,7 @@ class Import: return r - def find_or_create_user(self, email: str, krestni: str, prijmeni: str, is_org: bool) -> Optional[db.User]: + def find_or_create_user(self, email: str, krestni: Optional[str], prijmeni: Optional[str], is_org: bool) -> Optional[db.User]: try: user, is_new = mo.users.find_or_create_user(email, krestni, prijmeni, is_org, reason='import') except mo.CheckError as e: @@ -211,7 +211,7 @@ class Import: return pts - def find_or_create_participant(self, user: db.User, year: int, school_id: int, birth_year: int, grade: str) -> Optional[db.Participant]: + def find_or_create_participant(self, user: db.User, year: int, school_id: Optional[int], birth_year: Optional[int], grade: Optional[str]) -> Optional[db.Participant]: try: part, is_new = mo.users.find_or_create_participant(user, year, school_id, birth_year, grade, reason='import') except mo.CheckError as e: @@ -432,28 +432,23 @@ class ContestImport(Import): assert isinstance(r, ContestImportRow) num_prev_errs = len(self.errors) email = self.parse_email(r.email) - krestni = self.parse_name(r.krestni) - prijmeni = self.parse_name(r.prijmeni) - school_place = self.parse_school(r.kod_skoly) - rocnik = self.parse_grade(r.rocnik, (school_place.school if school_place else None)) - rok_naroz = self.parse_born(r.rok_naroz) + krestni = self.parse_name(r.krestni) if r.krestni else None + prijmeni = self.parse_name(r.prijmeni) if r.prijmeni else None + school_place = self.parse_school(r.kod_skoly) if r.kod_skoly else None + rocnik = self.parse_grade(r.rocnik, (school_place.school if school_place else None)) if r.rocnik else None + rok_naroz = self.parse_born(r.rok_naroz) if r.rok_naroz else None misto = self.parse_opt_place(r.kod_mista, 'místo') oblast = self.parse_opt_place(r.kod_oblasti, 'oblast') if (len(self.errors) > num_prev_errs - or email is None - or krestni is None - or prijmeni is None - or school_place is None - or rocnik is None - or rok_naroz is None): + or email is None): return user = self.find_or_create_user(email, krestni, prijmeni, is_org=False) if user is None: return - part = self.find_or_create_participant(user, mo.current_year, school_place.place_id, rok_naroz, rocnik) + part = self.find_or_create_participant(user, mo.current_year, school_place.place_id if school_place else None, rok_naroz, rocnik) if part is None: return diff --git a/mo/web/templates/doc_import.html b/mo/web/templates/doc_import.html index 4a3055ee..163f9bad 100644 --- a/mo/web/templates/doc_import.html +++ b/mo/web/templates/doc_import.html @@ -20,16 +20,16 @@ když přidáte vlastní sloupce s novými názvy, budou se ignorovat. <h2>Import účastníků</h2> -<p>Definovány jsou tyto sloupce (tučné jsou povinné): +<p>Definovány jsou tyto sloupce (tučné jsou povinné, kurzívou jsou povinné pro zatím nezaregistrované účty): <table class=data> <tr><th>Název<th>Obsah <tr><td><b>email</b><td>E-mailová adresa - <tr><td><b>krestni</b><td>Křestní jméno - <tr><td><b>prijmeni</b><td>Příjmení - <tr><td><b>kod_skoly</b><td>Kód školy (viz katalog škol na tomto webu) - <tr><td><b>rocnik</b><td>Navštěvovaný ročník (třída). Pro základní školy je to číslo od 1 do 9, pro <i>k</i>-tý ročník <i>r</i>-leté střední školy má formát <i>k</i>/<i>r</i>. - <tr><td><b>rok_naroz</b><td>Rok narození + <tr><td><i>krestni</i><td>Křestní jméno + <tr><td><i>prijmeni</i><td>Příjmení + <tr><td><i>kod_skoly</i><td>Kód školy (viz katalog škol na tomto webu) + <tr><td><i>rocnik</i><td>Navštěvovaný ročník (třída). Pro základní školy je to číslo od 1 do 9, pro <i>k</i>-tý ročník <i>r</i>-leté střední školy má formát <i>k</i>/<i>r</i>. + <tr><td><i>rok_naroz</i><td>Rok narození <tr><td>kod_mista<td>Pokud účastník soutěží někde jinde, je zde uveden kód oblasti, školy, nebo speciálního soutěžního místa, kde se soutěž koná. Dozor na soutěžním místě má pak právo odevzdávat za účastníka řešení. -- GitLab