Skip to content
Snippets Groups Projects
Commit 95e94809 authored by Jiří Kalvoda's avatar Jiří Kalvoda
Browse files

Import soutěžících: Nepovinné zadávání některých údajů

Jméno, škola, ročník a rok narození nejsou povinné pro již existující
uživatele resp. registrace do ročníku.
parent 88ccc554
No related branches found
No related tags found
1 merge request!93Nepovinné parametry u již známých soutěžících při přidávání do soutěže
...@@ -187,7 +187,7 @@ class Import: ...@@ -187,7 +187,7 @@ class Import:
return r 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: try:
user, is_new = mo.users.find_or_create_user(email, krestni, prijmeni, is_org, reason='import') user, is_new = mo.users.find_or_create_user(email, krestni, prijmeni, is_org, reason='import')
except mo.CheckError as e: except mo.CheckError as e:
...@@ -211,7 +211,7 @@ class Import: ...@@ -211,7 +211,7 @@ class Import:
return pts 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: try:
part, is_new = mo.users.find_or_create_participant(user, year, school_id, birth_year, grade, reason='import') part, is_new = mo.users.find_or_create_participant(user, year, school_id, birth_year, grade, reason='import')
except mo.CheckError as e: except mo.CheckError as e:
...@@ -432,28 +432,23 @@ class ContestImport(Import): ...@@ -432,28 +432,23 @@ class ContestImport(Import):
assert isinstance(r, ContestImportRow) assert isinstance(r, ContestImportRow)
num_prev_errs = len(self.errors) num_prev_errs = len(self.errors)
email = self.parse_email(r.email) email = self.parse_email(r.email)
krestni = self.parse_name(r.krestni) krestni = self.parse_name(r.krestni) if r.krestni else None
prijmeni = self.parse_name(r.prijmeni) prijmeni = self.parse_name(r.prijmeni) if r.prijmeni else None
school_place = self.parse_school(r.kod_skoly) 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)) 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) rok_naroz = self.parse_born(r.rok_naroz) if r.rok_naroz else None
misto = self.parse_opt_place(r.kod_mista, 'místo') misto = self.parse_opt_place(r.kod_mista, 'místo')
oblast = self.parse_opt_place(r.kod_oblasti, 'oblast') oblast = self.parse_opt_place(r.kod_oblasti, 'oblast')
if (len(self.errors) > num_prev_errs if (len(self.errors) > num_prev_errs
or email is None 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):
return return
user = self.find_or_create_user(email, krestni, prijmeni, is_org=False) user = self.find_or_create_user(email, krestni, prijmeni, is_org=False)
if user is None: if user is None:
return 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: if part is None:
return return
......
...@@ -20,16 +20,16 @@ když přidáte vlastní sloupce s novými názvy, budou se ignorovat. ...@@ -20,16 +20,16 @@ když přidáte vlastní sloupce s novými názvy, budou se ignorovat.
<h2>Import účastníků</h2> <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> <table class=data>
<tr><th>Název<th>Obsah <tr><th>Název<th>Obsah
<tr><td><b>email</b><td>E-mailová adresa <tr><td><b>email</b><td>E-mailová adresa
<tr><td><b>krestni</b><td>Křestní jméno <tr><td><i>krestni</i><td>Křestní jméno
<tr><td><b>prijmeni</b><td>Příjmení <tr><td><i>prijmeni</i><td>Příjmení
<tr><td><b>kod_skoly</b><td>Kód školy (viz katalog škol na tomto webu) <tr><td><i>kod_skoly</i><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><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><b>rok_naroz</b><td>Rok narození <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, <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ě 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í. má pak právo odevzdávat za účastníka řešení.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment