diff --git a/bin/register-year b/bin/register-year index 2799b375381c193a9a335c609521baad5c972276..1b1da151e99ff972259b4914a4aea65b7e56aa9f 100755 --- a/bin/register-year +++ b/bin/register-year @@ -13,7 +13,7 @@ parser.add_argument('--uid', type=int, help='ID uživatele') parser.add_argument('--year', type=int, required=True, help='ročník MO') parser.add_argument('--school', type=str, required=True, help='kód školy') parser.add_argument('--grade', type=str, required=True, help='třída') -parser.add_argument('--birth-year', type=int, required=True, help='rok narození') +parser.add_argument('--birth-year', type=int, help='rok narození') args = parser.parse_args() init_standalone() diff --git a/mo/users.py b/mo/users.py index 685112af5559960b4f41b7f315f153753352895e..be100b53cdcf9799b6f2ef1d874cd0c20de1cd18 100644 --- a/mo/users.py +++ b/mo/users.py @@ -158,11 +158,8 @@ def find_or_create_participant(user: db.User, year: int, school_id: Optional[int school_id = prev_part.school else: raise mo.CheckError('Osoba s daným e-mailem zatím není zaregistrovaná do ročníku, je nutné uvést školu.') - if not birth_year: - if prev_part: - birth_year = prev_part.birth_year - else: - raise mo.CheckError('Osoba s daným e-mailem zatím není zaregistrovaná do ročníku, je nutné uvést rok narození.') + if not birth_year and prev_part: + birth_year = prev_part.birth_year if not grade: raise mo.CheckError('Osoba s daným e-mailem zatím není zaregistrovaná do ročníku, je nutné uvést ročník.') @@ -193,7 +190,7 @@ def find_or_create_participant(user: db.User, year: int, school_id: Optional[int if ((school_id and part.school != school_id) or (grade and part.grade != grade) - or (birth_year and part.birth_year != birth_year)): + or (birth_year is not None and part.birth_year is not None and part.birth_year != birth_year)): raise mo.CheckError('Účastník již zaregistrován s odlišnou školou/ročníkem/rokem narození') return part, is_new diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py index 60c642fd7b22030b5a04e7307d94aed8c57bb474..caf515d4225572d06886af481989531fb627a3e5 100644 --- a/mo/web/org_contest.py +++ b/mo/web/org_contest.py @@ -1847,7 +1847,7 @@ class ParticipantAddForm(FlaskForm): last_name = mo_fields.LastName(validators=[validators.Optional()]) school = mo_fields.School(validators=[validators.Optional()]) grade = mo_fields.Grade(validators=[validators.Optional()]) - birth_year = mo_fields.BirthYear(validators=[validators.Optional()]) + birth_year = mo_fields.BirthYear(description='Není povinné uvádět.') participation_place = mo_fields.Place("Kód soutěžního místa") save = wtforms.SubmitField("Přidat") diff --git a/mo/web/org_users.py b/mo/web/org_users.py index 7dc43cd04e5a34168824b8c7bf83639a1615e054..8acae46f87cf4e72fa16e8642c768db988bfe041 100644 --- a/mo/web/org_users.py +++ b/mo/web/org_users.py @@ -572,7 +572,7 @@ def org_user_new(): class ParticipantEditForm(FlaskForm): school = mo_fields.School("Škola", validators=[DataRequired()], render_kw={'autofocus': True}) grade = mo_fields.Grade("Třída", validators=[DataRequired()]) - birth_year = mo_fields.BirthYear("Rok narození", validators=[DataRequired()]) + birth_year = mo_fields.BirthYear("Rok narození") submit = wtforms.SubmitField("Uložit") diff --git a/mo/web/table.py b/mo/web/table.py index a18bd2c6cf51134547dc19c697d7afb658c663f9..0ceaf2757d4f9fa5a8b5fb00963ca42a3071e41d 100644 --- a/mo/web/table.py +++ b/mo/web/table.py @@ -187,6 +187,8 @@ class Table: val = r.get(c.key) if isinstance(val, Cell): tab.append(val.to_html()) + elif val is None: + tab.append(f'\t<td>') else: tab.append(f'\t<td>{escape(str(val))}') diff --git a/mo/web/templates/doc_import.html b/mo/web/templates/doc_import.html index 023519e5e2cc9972575701308d3b7e88e897910a..ee35f3728082aa6b8f102869a90d1c91759d45f2 100644 --- a/mo/web/templates/doc_import.html +++ b/mo/web/templates/doc_import.html @@ -33,7 +33,7 @@ když přidáte vlastní sloupce s novými názvy, budou se ignorovat. Pokud importujete do soutěže v domácím nebo školním kole, můžete kód školy vynechat a doplní se vaše škola. <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>rok_naroz<td>Rok narození (nepovinný, ale doporučujeme uvádět) <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í. diff --git a/mo/web/templates/org_contest_add_user.html b/mo/web/templates/org_contest_add_user.html index fe181f2379b20d2247f56a900b49dcae74bbf22c..c4dfd50da2bac3bee97e818724c9aeb86599d5fb 100644 --- a/mo/web/templates/org_contest_add_user.html +++ b/mo/web/templates/org_contest_add_user.html @@ -10,7 +10,7 @@ {% block body %} -<p>Jméno, škola, ročník a rok narození nejsou povinné pro již registrované účty.</p> +<p>Jméno, škola, ročník nejsou povinné pro již registrované účty.</p> {{ wtf.quick_form(form, form_type='simple', button_map={'save': 'primary'}) }} diff --git a/mo/web/templates/org_contest_user.html b/mo/web/templates/org_contest_user.html index 91919e04160490e1e5c87012284f2bdd70658596..b70d3de90714f95f7d8cfa9cbd29dfe224239e24 100644 --- a/mo/web/templates/org_contest_user.html +++ b/mo/web/templates/org_contest_user.html @@ -35,7 +35,7 @@ <tr><td>E-mail:<td>{{ user.email|mailto }}{{ user|user_flags }} <tr><td>Škola:<td><a href='{{ url_for('org_place', id=pant.school) }}'>{{ pant.school_place.name }}</a> <tr><td>Třída:<td>{{ pant.grade }} - <tr><td>Rok narození:<td>{{ pant.birth_year }} + <tr><td>Rok narození:<td>{{ pant.birth_year|none_value('–') }} <tr><td>Poznámka:<td style="white-space: pre-line;">{{ user.note }} <thead> <tr><th colspan='2'>Účast v kole diff --git a/mo/web/templates/org_user.html b/mo/web/templates/org_user.html index c8ff380bde1072979144cfeaec93af046effa2d0..313a25696dc925a0cf221c45cb3fd8fd9f022fcf 100644 --- a/mo/web/templates/org_user.html +++ b/mo/web/templates/org_user.html @@ -61,7 +61,7 @@ <td>{{ participant.year }} <td><a href="{{ url_for('org_place', id=participant.school) }}">{{ participant.school_place.name }}</a> <td>{{ participant.grade }} - <td>{{ participant.birth_year }} + <td>{{ participant.birth_year|none_value('–') }} <td><div class="btn-group"> <a class="btn btn-xs btn-primary" href="{{ url_for('org_user_participant_edit', user_id=user.user_id, year=participant.year) }}">Editovat</a> <form class="btn-group" method="POST" onsubmit="return confirm('Opravdu nenávratně smazat?')" action='{{ url_for('org_user_participant_delete', user_id=user.user_id, year=participant.year) }}'> diff --git a/mo/web/templates/settings.html b/mo/web/templates/settings.html index 29470c2e99b5fd2f6736897f51d2036b8c22c58a..50335f12b36d2aaae770f8dedb7ac131278de930 100644 --- a/mo/web/templates/settings.html +++ b/mo/web/templates/settings.html @@ -12,7 +12,7 @@ {% if pant %} <tr><th>Škola<td>{{ pant.school_place.name }} <tr><th>Ročník<td>{{ pant.grade }} - <tr><th>Rok narození<td>{{ pant.birth_year }} + <tr><th>Rok narození<td>{{ pant.birth_year|none_value('–') }} {% endif %} </table> diff --git a/mo/web/user.py b/mo/web/user.py index b0673e40a2a64945c06b9270969a8d9fb4dc4126..c429c0bb2fecc9775ba60c0c14850edbda87b9d7 100644 --- a/mo/web/user.py +++ b/mo/web/user.py @@ -89,7 +89,7 @@ class JoinRoundForm(FlaskForm): town_list = wtforms.HiddenField() grade = mo_fields.Grade("Třída", validators=[DataRequired()]) - birth_year = mo_fields.BirthYear("Rok narození", validators=[DataRequired()]) + birth_year = mo_fields.BirthYear("Rok narození") submit = wtforms.SubmitField('Přihlásit se')