Ort löschen

This commit is contained in:
Daniel Grams 2020-10-04 13:32:32 +02:00
parent b0f57ef44b
commit 60f9e3f382
6 changed files with 80 additions and 11 deletions

View File

@ -37,6 +37,10 @@ class UpdateEventPlaceForm(BaseEventPlaceForm):
public = BooleanField(lazy_gettext('Other organizers can use this location'), validators=[Optional()])
submit = SubmitField(lazy_gettext("Update place"))
class DeleteEventPlaceForm(FlaskForm):
submit = SubmitField(lazy_gettext("Delete place"))
name = StringField(lazy_gettext('Name'), validators=[DataRequired()])
class FindEventPlaceForm(FlaskForm):
class Meta:
csrf = False

View File

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

View File

@ -32,6 +32,7 @@
<button class="btn btn-link dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ place.name }}</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="{{ url_for('event_place_update', id=place.id) }}">{{ _('Edit') }}</a>
<a class="dropdown-item" href="{{ url_for('event_place_delete', id=place.id) }}">{{ _('Delete') }}...</a>
</div>
</div>
</li>

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-10-04 12:59+0200\n"
"POT-Creation-Date: 2020-10-04 13:28+0200\n"
"PO-Revision-Date: 2020-06-07 18:51+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n"
@ -142,11 +142,11 @@ msgid "Longitude"
msgstr "Längengrad"
#: forms/admin_unit.py:19 forms/event.py:18 forms/event.py:36 forms/event.py:41
#: forms/event.py:118 forms/event_place.py:20 forms/organizer.py:19
#: forms/organizer.py:41 forms/reference.py:18 forms/reference_request.py:14
#: templates/_macros.html:97 templates/admin/admin_units.html:18
#: templates/event_place/list.html:19 templates/profile.html:16
#: templates/profile.html:36
#: forms/event.py:118 forms/event_place.py:20 forms/event_place.py:42
#: forms/organizer.py:19 forms/organizer.py:41 forms/reference.py:18
#: forms/reference_request.py:14 templates/_macros.html:97
#: templates/admin/admin_units.html:18 templates/event_place/list.html:19
#: templates/profile.html:16 templates/profile.html:36
msgid "Name"
msgstr "Name"
@ -278,7 +278,7 @@ msgstr "Vorheriges Startdatum"
msgid "Tags"
msgstr "Stichworte"
#: forms/event.py:51 forms/event.py:141 forms/event_place.py:44
#: forms/event.py:51 forms/event.py:141 forms/event_place.py:48
#: templates/_macros.html:363 templates/event/create.html:59
#: templates/event/update.html:46 templates/manage/events.html:17
#: templates/manage/places.html:17 templates/organizer/create.html:16
@ -351,7 +351,7 @@ msgstr "Bewertung"
#: forms/event.py:73 forms/event.py:74 forms/event.py:105
#: templates/_macros.html:333 templates/event/create.html:84
#: templates/event/update.html:55 templates/event_place/create.html:20
#: templates/event_place/update.html:20
#: templates/event_place/delete.html:13 templates/event_place/update.html:20
msgid "Place"
msgstr "Ort"
@ -475,7 +475,11 @@ msgstr "Ort hinzufügen"
msgid "Update place"
msgstr "Ort aktualisieren"
#: forms/event_place.py:43
#: forms/event_place.py:41 templates/event_place/delete.html:6
msgid "Delete place"
msgstr "Ort löschen"
#: forms/event_place.py:47
msgid "Find places"
msgstr "Orte finden"
@ -845,7 +849,7 @@ msgstr "Bearbeiten"
#: templates/manage/events.html:47 templates/manage/members.html:21
#: templates/manage/members.html:36 templates/manage/organizers.html:23
#: templates/manage/references_incoming.html:20
#: templates/manage/places.html:35 templates/manage/references_incoming.html:20
msgid "Delete"
msgstr "Löschen"
@ -980,6 +984,14 @@ msgstr "Ort erfolgreich erstellt"
msgid "Place successfully updated"
msgstr "Ort erfolgreich aktualisiert"
#: views/event_place.py:70
msgid "Entered name does not match place name"
msgstr "Der eingegebene Name entspricht nicht dem Namen des Ortes"
#: views/event_place.py:75
msgid "Place successfully deleted"
msgstr "Ort erfolgreich gelöscht"
#: views/event_review.py:55 views/reference_request_review.py:76
msgid "Event review status updated"
msgstr "Prüfungsstatus aktualisiert"

View File

@ -4,7 +4,7 @@ from flask import render_template, flash, url_for, redirect, request, jsonify
from flask_babelex import gettext
from flask_security import auth_required
from access import has_access, access_or_401, get_admin_unit_for_manage_or_404
from forms.event_place import UpdateEventPlaceForm, CreateEventPlaceForm
from forms.event_place import UpdateEventPlaceForm, CreateEventPlaceForm, DeleteEventPlaceForm
from .utils import flash_errors, upsert_image_with_data, send_mail, handleSqlError
from sqlalchemy.sql import asc, func
from sqlalchemy.exc import SQLAlchemyError
@ -57,6 +57,34 @@ def event_place_update(id):
form=form,
place=place)
@app.route('/event_place/<int:id>/delete', methods=('GET', 'POST'))
@auth_required()
def event_place_delete(id):
place = EventPlace.query.get_or_404(id)
access_or_401(place.adminunit, 'place:delete')
form = DeleteEventPlaceForm()
if form.validate_on_submit():
if form.name.data != place.name:
flash(gettext('Entered name does not match place name'), 'danger')
else:
try:
organizer_id=place.organizer.id
db.session.delete(place)
db.session.commit()
flash(gettext('Place successfully deleted'), 'success')
return redirect(url_for('manage_organizer_event_places', organizer_id=organizer_id))
except SQLAlchemyError as e:
db.session.rollback()
flash(handleSqlError(e), 'danger')
else:
flash_errors(form)
return render_template('event_place/delete.html',
form=form,
place=place)
def update_event_place_with_form(place, form):
form.populate_obj(place)