Delete event

This commit is contained in:
Daniel Grams 2020-07-17 21:40:19 +02:00
parent af56a9ea03
commit 21e96ecbf6
4 changed files with 61 additions and 2 deletions

32
app.py
View File

@ -662,6 +662,9 @@ def can_create_event():
def can_update_event(event):
return can_create_event()
def can_delete_event(event):
return can_update_event(event)
def can_create_place():
return can_create_event()
@ -1288,7 +1291,7 @@ def api_events():
result['event'] = structured_events
return jsonify(result)
from forms.event import CreateEventForm, UpdateEventForm
from forms.event import CreateEventForm, UpdateEventForm, DeleteEventForm
from forms.event_suggestion import CreateEventSuggestionForm
from forms.place import CreatePlaceForm, UpdatePlaceForm
from forms.organization import CreateOrganizationForm, UpdateOrganizationForm
@ -1364,6 +1367,33 @@ def event_update(event_id):
form=form,
event=event)
@app.route('/event/<int:event_id>/delete', methods=('GET', 'POST'))
def event_delete(event_id):
event = Event.query.get_or_404(event_id)
if not can_delete_event(event):
abort(401)
form = DeleteEventForm()
if form.validate_on_submit():
if form.name.data != event.name:
flash(gettext('Entered name does not match event name'), 'danger')
else:
try:
db.session.delete(event)
db.session.commit()
flash(gettext('Event successfully deleted'), 'success')
return redirect(url_for('events'))
except SQLAlchemyError as e:
flash(handleSqlError(e), 'danger')
else:
flash_errors(form)
return render_template('event/delete.html',
form=form,
event=event)
@app.route("/events/rrule", methods=['POST'])
def event_rrule():
year = request.json['year']

View File

@ -99,4 +99,8 @@ class CreateEventForm(FlaskForm):
return True
class UpdateEventForm(CreateEventForm):
submit = SubmitField(lazy_gettext("Update event"))
submit = SubmitField(lazy_gettext("Update event"))
class DeleteEventForm(FlaskForm):
submit = SubmitField(lazy_gettext("Delete event"))
name = StringField(lazy_gettext('Name'), validators=[DataRequired()])

View File

@ -0,0 +1,24 @@
{% extends "layout.html" %}
{% from "_macros.html" import render_datepicker_js, render_field_with_errors, render_field %}
{% block content %}
<h1>{{ _('Delete event') }} &quot;{{ event.name }}&quot;</h1>
<form action="{{ url_for('event_delete', event_id=event.id) }}" method="POST">
{{ form.hidden_tag() }}
<div class="card mb-4">
<div class="card-header">
{{ _('Event') }}
</div>
<div class="card-body">
{{ render_field_with_errors(form.name) }}
</div>
</div>
{{ render_field(form.submit) }}
</form>
{% endblock %}

View File

@ -29,6 +29,7 @@
{% if can_update_event %}
<div class="my-4">
<a class="btn btn-primary my-1" href="{{ url_for('event_update', event_id=event.id) }}" role="button"><i class="fa fa-edit"></i> {{ _('Update event') }}</a>
<a class="btn btn-danger my-1" href="{{ url_for('event_delete', event_id=event.id) }}" role="button"><i class="fa fa-trash"></i> {{ _('Delete event') }}...</a>
</div>
{% endif %}