diff --git a/mo/web/org_users.py b/mo/web/org_users.py index 88354ecde8af6b7aa76613696cdf13fd052ad264..3fc728ec0e5f767e18ffd247ecf141f8c941929e 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 db299584495544a3fbcf001bf98841ca5b60b54a..c4e9308c16d2dfea137c21e3ac2c1c33d4c8cd36 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 9a018a0bcb5223e0a7e3c8eb64ed9512d65039a1..2e9541cd208dd186577a472f710616b166bdf523 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'}) }}