Skip to content
Snippets Groups Projects
Commit 1242f8c0 authored by Martin Mareš's avatar Martin Mareš
Browse files

Změna účastníka na organizátora vyžaduje potvrzení přes mezistránku

Máme podezření, že původní JS potvrzení některé prohlížeče ignorovaly.

Closes #460.
parent 16144df1
No related branches found
No related tags found
No related merge requests found
......@@ -329,10 +329,6 @@ class ResendInviteForm(FlaskForm):
flash('Tento uživatel už má účet aktivovaný.', 'danger')
class UpgradeToOrgForm(FlaskForm):
upgrade = SubmitField()
@app.route('/org/org/<int:id>/', methods=('GET', 'POST'))
def org_org(id: int):
sess = db.get_session()
......@@ -440,19 +436,6 @@ def org_user(id: int):
resend_invite_form.do(user)
return redirect(url_for('org_user', id=id))
upgrade_form: Optional[UpgradeToOrgForm] = None
if rr.can_edit_user:
upgrade_form = UpgradeToOrgForm()
if upgrade_form.upgrade.data and upgrade_form.validate_on_submit():
try:
mo.users.change_user_to_org(user, reason='web')
sess.commit()
flash('Účet změněn na organizátorský.', 'success')
return redirect(url_for('org_org', id=user.user_id))
except mo.CheckError as e:
flash(str(e), 'danger')
return redirect(url_for('org_user', id=user.user_id))
participants = sess.query(db.Participant).filter_by(user_id=user.user_id)
participations = (
sess.query(db.Participation, db.Contest, db.Round)
......@@ -470,7 +453,6 @@ def org_user(id: int):
can_incarnate=g.user.is_admin,
participants=participants, participations=participations,
resend_invite_form=resend_invite_form,
upgrade_form=upgrade_form,
)
......@@ -852,3 +834,39 @@ def org_user_dsn(user_id: int):
.all())
return render_template('org_user_dsn.html', user=user, dsns=dsns)
class UpgradeToOrgForm(FlaskForm):
upgrade = SubmitField()
@app.route('/org/user/<int:user_id>/upgrade', methods=('GET', 'POST'))
def org_user_upgrade(user_id: int):
sess = db.get_session()
user = mo.users.user_by_uid(user_id)
if not user:
raise werkzeug.exceptions.NotFound()
rr = g.gatekeeper.rights_generic()
if not rr.can_edit_user(user):
raise werkzeug.exceptions.Forbidden()
if user.is_org or user.is_admin:
flash('Účet již je organizátorský.', 'warning')
return redirect(url_for('org_org', id=user.user_id))
form = UpgradeToOrgForm()
if form.validate_on_submit():
try:
mo.users.change_user_to_org(user, reason='web')
sess.commit()
flash('Účet změněn na organizátorský.', 'success')
return redirect(url_for('org_org', id=user.user_id))
except mo.CheckError as e:
flash(str(e), 'danger')
return redirect(url_for('org_user', id=user.user_id))
return render_template(
'org_user_upgrade.html', user=user,
form=form,
)
......@@ -32,12 +32,8 @@
</button>
</form>
{% endif %}
{% if upgrade_form %}
<form method=POST class='btn-group' onsubmit='return confirm("Změnit účastnický účet na organizátorský?");'>
{{ upgrade_form.csrf_token }}
<button class="btn btn-default" type='submit' name='upgrade' value='yes'>
Změnit na organizátora
</button>
{% if can_edit and not (user.is_admin or user.is_org) %}
<a class="btn btn-default" href="{{ url_for('org_user_upgrade', user_id=user.user_id) }}">Změnit na organizátora</a>
</form>
{% endif %}
{% if g.user.is_admin %}
......
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% block title %}Změna účtu na organizátorský{% endblock %}
{% block body %}
<p>
Chystáte se převést účet {{ user.full_name() }} ({{ user.email }}) na organizátorský.
</p>
<p>
<b>Opravdu si to přejete udělat? Pozor, tato změna je nevratná.</b>
</p>
<div class='btn-group' role='group'>
<form method=POST class='btn-group'>
<button class="btn btn-primary" type='submit' name='upgrade' value='yes'>
Provést
</button>
{{ form.csrf_token }}
<a class="btn btn-default" href="{{ url_for('org_user', id=user.user_id) }}">Vrátit se zpět</a>
</form>
</div>
{% endblock %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment