From 1393a13f3267a3435eb0d911e4ec66cf6ebe40be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Setni=C4=8Dka?= <setnicka@seznam.cz> Date: Sun, 21 Mar 2021 22:24:16 +0100 Subject: [PATCH] =?UTF-8?q?Editace=20email=C5=AF=20u=C5=BEivatel=C5=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Emaily soutěžících může editovat každý organizátor, který se dostane na stránku Soutěžící (teď zatím všichni). Email organizátora může editovat správce. Issue #117 --- mo/web/org_users.py | 46 ++++++++++++++++------------- mo/web/templates/org_user_edit.html | 2 +- mo/web/templates/org_user_new.html | 2 +- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/mo/web/org_users.py b/mo/web/org_users.py index 88354ecd..3fc728ec 100644 --- a/mo/web/org_users.py +++ b/mo/web/org_users.py @@ -322,14 +322,10 @@ def org_user(id: int): class UserEditForm(FlaskForm): first_name = wtforms.StringField("Jméno", validators=[Required()], render_kw={'autofocus': True}) last_name = wtforms.StringField("Příjmení", validators=[Required()]) + email = wtforms.StringField("E-mail", validators=[Required()]) note = wtforms.TextAreaField("Poznámka") submit = wtforms.SubmitField("Uložit") - -class NewUserForm(UserEditForm): - email = wtforms.StringField("E-mail", validators=[Required()]) - submit = wtforms.SubmitField("Vytvořit") - def validate_email(form, field): try: field.data = mo.users.normalize_email(field.data) @@ -357,24 +353,33 @@ def org_user_edit(id: int): raise werkzeug.exceptions.Forbidden() form = UserEditForm(obj=user) + if (user.is_org or user.is_admin) and not g.user.is_admin: + # emaily u organizátorů může editovat jen správce + del form.email if form.validate_on_submit(): - form.populate_obj(user) + check = True - if sess.is_modified(user): - changes = db.get_object_changes(user) + if mo.users.user_by_email(form.email.data) is not None: + flash('Zadaný e-mail nelze použít, existuje jiný účet s tímto e-mailem', 'danger') + check = False - app.logger.info(f"User {id} modified, changes: {changes}") - mo.util.log( - type=db.LogType.user, - what=id, - details={'action': 'edit', 'changes': changes}, - ) - sess.commit() - flash('Změny uživatele uloženy', 'success') - else: - flash(u'Žádné změny k uložení', 'info') + if check: + form.populate_obj(user) + if sess.is_modified(user): + changes = db.get_object_changes(user) + + app.logger.info(f"User {id} modified, changes: {changes}") + mo.util.log( + type=db.LogType.user, + what=id, + details={'action': 'edit', 'changes': changes}, + ) + sess.commit() + flash('Změny uživatele uloženy', 'success') + else: + flash(u'Žádné změny k uložení', 'info') - return redirect(url_for('org_user', id=id)) + return redirect(url_for('org_user', id=id)) return render_template('org_user_edit.html', user=user, form=form, is_org=is_org) @@ -392,7 +397,8 @@ def org_user_new(): elif not rr.have_right(Right.add_users): raise werkzeug.exceptions.Forbidden() - form = NewUserForm() + form = UserEditForm() + form.submit.label.text = 'Vytvořit' if form.validate_on_submit(): check = True diff --git a/mo/web/templates/org_user_edit.html b/mo/web/templates/org_user_edit.html index db299584..c4e9308c 100644 --- a/mo/web/templates/org_user_edit.html +++ b/mo/web/templates/org_user_edit.html @@ -18,7 +18,7 @@ <h3>Editace údajů</h3> -<p>E-mail nelze editovat. Pro jeho změnu kontaktujte někoho ze správců.</p> +{% if not form.email %}<p>E-mail u organizátora nelze editovat. Pro jeho změnu kontaktujte někoho ze správců.</p>{% endif %} {{ wtf.quick_form(form, form_type='horizontal', button_map={'submit': 'primary'}) }} diff --git a/mo/web/templates/org_user_new.html b/mo/web/templates/org_user_new.html index 9a018a0b..2e9541cd 100644 --- a/mo/web/templates/org_user_new.html +++ b/mo/web/templates/org_user_new.html @@ -3,7 +3,7 @@ {% block title %}Nový {% if is_org %}organizátor{% else %}soutěžící{% endif %}{% endblock %} {% block body %} -<p>Na zadanou e-mailovou adresu dorazí e-mail pro nastavení hesla. E-mailovou adresu po vytvoření účtu již nelze měnit.</p> +<p>Na zadanou e-mailovou adresu dorazí e-mail pro nastavení hesla.</p> {{ wtf.quick_form(form, form_type='horizontal', button_map={'submit': 'primary'}) }} -- GitLab