- [ ] place wählen (gefiltert nach organizer und freigegebene)

This commit is contained in:
Daniel Grams 2020-07-31 08:41:14 +02:00
parent 870c393d6b
commit 4561ac0efc
8 changed files with 238 additions and 128 deletions

37
app.py
View File

@ -705,7 +705,12 @@ def assign_location_values(target, origin):
@app.before_first_request
def create_initial_data():
pass
events = Event.query.all()
for event in events:
if event.external_link and event.external_link.startswith('https://goslar.feripro.de/programm/40/anmeldung/veranstaltungen'):
event.event_place.public = False
db.session.commit()
def flash_errors(form):
for field, errors in form.errors.items():
@ -988,6 +993,19 @@ def api_events():
result['event'] = structured_events
return jsonify(result)
@app.route("/api/organizer/<int:id>/event_places")
def api_event_places(id):
places = get_event_places(id)
result = list()
for place in places:
item = {}
item["id"] = place.id
item["name"] = place.name
result.append(item)
return jsonify(result)
from forms.event import CreateEventForm, UpdateEventForm, DeleteEventForm
from forms.place import CreatePlaceForm, UpdatePlaceForm
from forms.organization import CreateOrganizationForm, UpdateOrganizationForm
@ -1009,14 +1027,23 @@ def update_event_with_form(event, form):
fs = form.photo_file.data
event.photo = upsert_image_with_data(event.photo, fs.read(), fs.content_type)
def get_event_places(organizer_id):
organizer = EventOrganizer.query.get(organizer_id)
return EventPlace.query.filter(or_(EventPlace.organizer_id == organizer_id, and_(EventPlace.public, EventPlace.admin_unit_id==organizer.admin_unit_id))).order_by(func.lower(EventPlace.name)).all()
def prepare_event_form(form):
form.organizer_id.choices = [(o.id, o.name) for o in EventOrganizer.query.filter(EventOrganizer.admin_unit_id == form.admin_unit_id.data).order_by(func.lower(EventOrganizer.name))]
form.place_id.choices = [(p.id, p.name) for p in Place.query.order_by('name')]
form.category_id.choices = sorted([(c.id, get_event_category_name(c)) for c in EventCategory.query.all()], key=lambda ooa: ooa[1])
form.admin_unit_id.choices = sorted([(admin_unit.id, admin_unit.name) for admin_unit in get_admin_units_for_event()], key=lambda admin_unit: admin_unit[1])
if form.organizer_id.data:
places = get_event_places(form.organizer_id.data)
form.event_place_id.choices = [(p.id, p.name) for p in places]
else:
form.event_place_id.choices = list()
form.organizer_id.choices.insert(0, (0, ''))
form.place_id.choices.insert(0, (0, ''))
form.event_place_id.choices.insert(0, (0, ''))
def event_create_base(admin_unit, organizer_id=0):
form = CreateEventForm(admin_unit_id=admin_unit.id, organizer_id=organizer_id, category_id=upsert_event_category('Other').id)
@ -1026,6 +1053,10 @@ def event_create_base(admin_unit, organizer_id=0):
event = Event()
update_event_with_form(event, form)
if form.event_place_choice.data == 2:
event.event_place.organizer_id = event.organizer_id
event.event_place.admin_unit_id = event.admin_unit_id
try:
db.session.add(event)
db.session.commit()

View File

@ -14,8 +14,9 @@ class EventPlaceLocationForm(FlaskForm):
city = StringField(lazy_gettext('City'), validators=[Optional()])
class EventPlaceForm(FlaskForm):
name = StringField(lazy_gettext('New place'), validators=[Optional()])
name = StringField(lazy_gettext('Name'), validators=[Optional()])
location = FormField(EventPlaceLocationForm, default=lambda: Location())
public = BooleanField(lazy_gettext('Other organizers can use this location'), default="checked", render_kw ={'checked':''}, validators=[Optional()])
def populate_obj(self, obj):
for name, field in self._fields.items():
@ -30,8 +31,7 @@ class EventOrganizerForm(FlaskForm):
phone = StringField(lazy_gettext('Phone'), validators=[Optional()])
fax = StringField(lazy_gettext('Fax'), validators=[Optional()])
class CreateEventForm(FlaskForm):
submit = SubmitField(lazy_gettext("Create event"))
class BaseEventForm(FlaskForm):
name = StringField(lazy_gettext('Name'), validators=[DataRequired()])
external_link = StringField(lazy_gettext('Link URL'), validators=[Optional()])
ticket_link = StringField(lazy_gettext('Ticket Link URL'), validators=[Optional()])
@ -42,10 +42,7 @@ class CreateEventForm(FlaskForm):
previous_start_date = CustomDateTimeField(lazy_gettext('Previous start date'), validators=[Optional()])
tags = StringField(lazy_gettext('Tags'), validators=[Optional()])
event_place = FormField(EventPlaceForm, default=lambda: EventPlace())
organizer_id = SelectField(lazy_gettext('Organizer'), validators=[DataRequired()], coerce=int)
place_id = SelectField(lazy_gettext('Existing place'), validators=[Optional()], coerce=int)
category_id = SelectField(lazy_gettext('Category'), validators=[DataRequired()], coerce=int)
admin_unit_id = SelectField(lazy_gettext('Admin unit'), validators=[DataRequired()], coerce=int)
@ -66,23 +63,36 @@ class CreateEventForm(FlaskForm):
photo_file = FileField(lazy_gettext('Photo'), validators=[FileAllowed(['jpg', 'jpeg', 'png'], lazy_gettext('Images only!'))])
class CreateEventForm(BaseEventForm):
event_place_choice = RadioField(lazy_gettext('Place'), choices=[(1,lazy_gettext('Select existing place')), (2,lazy_gettext('Enter new place'))], default=1, coerce=int)
event_place_id = SelectField(lazy_gettext('Place'), validators=[Optional()], coerce=int)
new_event_place = FormField(EventPlaceForm, default=lambda: EventPlace())
submit = SubmitField(lazy_gettext("Create event"))
def populate_obj(self, obj):
for name, field in self._fields.items():
if name == 'event_place' and not obj.event_place:
obj.event_place = EventPlace()
if name == 'new_event_place':
if self.event_place_choice.data != 2:
continue
if not obj.event_place:
obj.event_place = EventPlace()
field.populate_obj(obj, 'event_place')
field.populate_obj(obj, name)
def validate(self):
if not super(CreateEventForm, self).validate():
if not super(BaseEventForm, self).validate():
return False
if self.place_id.data == 0 and not self.event_place.form.name.data:
if self.event_place_id.data == 0 and not self.new_event_place.form.name.data:
msg = gettext('Select existing place or enter new place')
self.place_id.errors.append(msg)
self.event_place.form.name.errors.append(msg)
self.event_place_id.errors.append(msg)
self.new_event_place.form.name.errors.append(msg)
return False
return True
class UpdateEventForm(CreateEventForm):
class UpdateEventForm(BaseEventForm):
event_place_id = SelectField(lazy_gettext('Place'), validators=[DataRequired()], coerce=int)
status = SelectField(lazy_gettext('Status'), coerce=int, choices=[
(int(EventStatus.scheduled), lazy_gettext('EventStatus.scheduled')),
(int(EventStatus.cancelled), lazy_gettext('EventStatus.cancelled')),

View File

@ -23,7 +23,7 @@ class CreateEventPlaceForm(FlaskForm):
photo_file = FileField(lazy_gettext('Photo'), validators=[FileAllowed(['jpg', 'jpeg', 'png'], lazy_gettext('Images only!'))])
description = TextAreaField(lazy_gettext('Description'), validators=[Optional()])
location = FormField(EventPlaceLocationForm)
public = BooleanField(lazy_gettext('Other organizers can use this location'), validators=[Optional()])
public = BooleanField(lazy_gettext('Other organizers can use this location'), default="checked", render_kw ={'checked':''}, validators=[Optional()])
class UpdateEventPlaceForm(CreateEventPlaceForm):
submit = SubmitField(lazy_gettext("Update place"))

View File

@ -476,4 +476,35 @@
{{ render_tab('organizers', _('Organizers'), url_for('manage_admin_unit_organizers', id=admin_unit.id), active_id) }}
{{ render_tab('places', _('Places'), url_for('manage_admin_unit_event_places', id=admin_unit.id), active_id) }}
</ul>
{% endmacro %}
{% macro render_event_organizer_places_header() %}
<script>
$( function() {
$("#organizer_id").change(function(){
var organizer_id = $(this).val();
$.ajax({
url: '/api/organizer/' + organizer_id + '/event_places',
type: 'get',
dataType: 'json',
success:function(response){
var len = response.length;
$("#event_place_id").empty();
$("#event_place_id").append("<option value='"+0+"'></option>");
for( var i = 0; i<len; i++){
var id = response[i]['id'];
var name = response[i]['name'];
$("#event_place_id").append("<option value='"+id+"'>"+name+"</option>");
}
}
});
});
});
</script>
{% endmacro %}

View File

@ -1,6 +1,31 @@
{% extends "layout.html" %}
{% from "_macros.html" import render_datepicker_js, render_field_with_errors, render_field %}
{% from "_macros.html" import render_event_organizer_places_header, render_datepicker_js, render_field_with_errors, render_field %}
{% block header %}
<script>
$( function() {
function update_place_container(value) {
switch (value) {
case '1':
$('#existing_place_container').show();
$('#new_place_container').hide();
break;
case '2':
$('#existing_place_container').hide();
$('#new_place_container').show();
break;
}
}
$('input[type=radio][name=event_place_choice]').on('change', function() {
update_place_container($(this).val());
});
update_place_container($('input[type=radio][name=event_place_choice]:checked').val());
});
</script>
{{ render_event_organizer_places_header() }}
{% endblock %}
{% block content %}
<h1>{{ _('Create event') }}</h1>
@ -43,16 +68,28 @@
{{ _('Place') }} *
</div>
<div class="card-body">
{{ render_field_with_errors(form.place_id, class="autocomplete w-100") }}
<div class="my-4">
{{ form.event_place.hidden_tag() }}
{{ render_field_with_errors(form.event_place.form.name) }}
<div>
{% for subfield in form.event_place_choice %}
<div class="form-check form-check-inline">
<td>{{ subfield(class="form-check-input") }}</td>
<td>{{ subfield.label(class="form-check-label") }}</td>
</div>
{% endfor %}
</div>
{{ form.event_place.form.location.hidden_tag() }}
{{ render_field_with_errors(form.event_place.form.location.street) }}
{{ render_field_with_errors(form.event_place.form.location.postalCode) }}
{{ render_field_with_errors(form.event_place.form.location.city) }}
<div class="my-4" id="existing_place_container">
{{ render_field_with_errors(form.event_place_id, class="autocomplete w-100") }}
</div>
<div class="my-4" id="new_place_container">
{{ form.new_event_place.hidden_tag() }}
{{ render_field_with_errors(form.new_event_place.form.name) }}
{{ form.new_event_place.form.location.hidden_tag() }}
{{ render_field_with_errors(form.new_event_place.form.location.street) }}
{{ render_field_with_errors(form.new_event_place.form.location.postalCode) }}
{{ render_field_with_errors(form.new_event_place.form.location.city) }}
{{ render_field_with_errors(form.new_event_place.form.public, style="width: fit-content; flex: initial;") }}
</div>
</div>

View File

@ -1,6 +1,8 @@
{% extends "layout.html" %}
{% from "_macros.html" import render_datepicker_js, render_field_with_errors, render_field %}
{% from "_macros.html" import render_event_organizer_places_header, render_datepicker_js, render_field_with_errors, render_field %}
{% block header %}
{{ render_event_organizer_places_header() }}
{% endblock %}
{% block content %}
<h1>{{ _('Update event') }}</h1>
@ -53,17 +55,7 @@
{{ _('Place') }}
</div>
<div class="card-body">
{{ render_field_with_errors(form.place_id, class="autocomplete w-100") }}
<div class="my-4">
{{ form.event_place.hidden_tag() }}
{{ render_field_with_errors(form.event_place.form.name) }}
{{ form.event_place.form.location.hidden_tag() }}
{{ render_field_with_errors(form.event_place.form.location.street) }}
{{ render_field_with_errors(form.event_place.form.location.postalCode) }}
{{ render_field_with_errors(form.event_place.form.location.city) }}
</div>
{{ render_field_with_errors(form.event_place_id, class="autocomplete w-100") }}
</div>
</div>

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-07-30 17:45+0200\n"
"POT-Creation-Date: 2020-07-31 08:33+0200\n"
"PO-Revision-Date: 2020-06-07 18:51+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n"
@ -102,60 +102,60 @@ msgstr "Sonstiges"
msgid "Typical Age range"
msgstr "Typische Altersspanne"
#: app.py:713
#: app.py:718
#, python-format
msgid "Error in the %s field - %s"
msgstr "Fehler im Feld %s: %s"
#: app.py:765
#: app.py:770
msgid "Admin unit successfully updated"
msgstr "Verwaltungseinheit erfolgreich aktualisiert"
#: app.py:823
#: app.py:828
msgid "Organization successfully created"
msgstr "Organisation erfolgreich erstellt"
#: app.py:844
#: app.py:849
msgid "Organization successfully updated"
msgstr "Organisation erfolgreich aktualisiert"
#: app.py:904 app.py:1349
#: app.py:909 app.py:1380
msgid "Place successfully updated"
msgstr "Ort erfolgreich aktualisiert"
#: app.py:928 app.py:1378
#: app.py:933 app.py:1409
msgid "Place successfully created"
msgstr "Ort erfolgreich erstellt"
#: app.py:1032
#: app.py:1063
msgid "Event successfully created"
msgstr "Veranstaltung erfolgreich erstellt"
#: app.py:1067
#: app.py:1098
msgid "Event successfully updated"
msgstr "Veranstaltung erfolgreich aktualisiert"
#: app.py:1090
#: app.py:1121
msgid "Entered name does not match event name"
msgstr "Der eingegebene Name entspricht nicht dem Namen der Veranstaltung"
#: app.py:1095
#: app.py:1126
msgid "Event successfully deleted"
msgstr "Veranstaltung erfolgreich gelöscht"
#: app.py:1265
#: app.py:1296
msgid "Organizer successfully created"
msgstr "Veranstalter erfolgreich erstellt"
#: app.py:1287
#: app.py:1318
msgid "Organizer successfully updated"
msgstr "Veranstalter erfolgreich aktualisiert"
#: app.py:1309
#: app.py:1340
msgid "Entered name does not match organizer name"
msgstr "Der eingegebene Name entspricht nicht dem Namen des Veranstalters"
#: app.py:1314
#: app.py:1345
msgid "Organizer successfully deleted"
msgstr "Veranstalter erfolgreich gelöscht"
@ -193,15 +193,15 @@ msgstr "Breitengrad"
msgid "Longitude"
msgstr "Längengrad"
#: forms/admin_unit.py:19 forms/event.py:35 forms/event.py:97
#: forms/event_place.py:21 forms/organization.py:19 forms/organizer.py:19
#: forms/organizer.py:41 forms/place.py:19 templates/_macros.html:98
#: templates/admin/admin_units.html:18 templates/admin_unit/list.html:13
#: templates/admin_unit/read.html:66 templates/admin_unit/read.html:88
#: templates/event/list.html:17 templates/event_place/list.html:19
#: templates/organization/list.html:19 templates/organization/read.html:64
#: templates/place/list.html:19 templates/profile.html:15
#: templates/profile.html:37
#: forms/admin_unit.py:19 forms/event.py:17 forms/event.py:35
#: forms/event.py:107 forms/event_place.py:21 forms/organization.py:19
#: forms/organizer.py:19 forms/organizer.py:41 forms/place.py:19
#: templates/_macros.html:98 templates/admin/admin_units.html:18
#: templates/admin_unit/list.html:13 templates/admin_unit/read.html:66
#: templates/admin_unit/read.html:88 templates/event/list.html:17
#: templates/event_place/list.html:19 templates/organization/list.html:19
#: templates/organization/read.html:64 templates/place/list.html:19
#: templates/profile.html:15 templates/profile.html:37
msgid "Name"
msgstr "Name"
@ -213,23 +213,23 @@ msgstr "Kurzname"
msgid "Short name must contain only letters numbers or underscore"
msgstr "Der Kurzname darf nur Buchstaben, Nummern und Unterstriche enthalten"
#: forms/admin_unit.py:21 forms/event.py:28 forms/event.py:36
#: forms/admin_unit.py:21 forms/event.py:29 forms/event.py:36
#: forms/event_place.py:22 forms/organization.py:20 forms/organizer.py:20
#: forms/place.py:20
msgid "Link URL"
msgstr "Link URL"
#: forms/admin_unit.py:22 forms/event.py:29 forms/organization.py:21
#: forms/admin_unit.py:22 forms/event.py:30 forms/organization.py:21
#: forms/organizer.py:21 templates/_macros.html:204
msgid "Email"
msgstr "Email"
#: forms/admin_unit.py:23 forms/event.py:30 forms/organization.py:22
#: forms/admin_unit.py:23 forms/event.py:31 forms/organization.py:22
#: forms/organizer.py:22 templates/_macros.html:219
msgid "Phone"
msgstr "Telefon"
#: forms/admin_unit.py:24 forms/event.py:31 forms/organization.py:23
#: forms/admin_unit.py:24 forms/event.py:32 forms/organization.py:23
#: forms/organizer.py:23 templates/_macros.html:227
msgid "Fax"
msgstr "Fax"
@ -238,7 +238,7 @@ msgstr "Fax"
msgid "Logo"
msgstr "Logo"
#: forms/admin_unit.py:25 forms/event.py:67 forms/event_place.py:23
#: forms/admin_unit.py:25 forms/event.py:64 forms/event_place.py:23
#: forms/organization.py:24 forms/organizer.py:24 forms/place.py:21
msgid "Images only!"
msgstr "Nur Fotos!"
@ -252,19 +252,14 @@ msgstr "Verwaltungseinheit erstellen"
msgid "Update admin unit"
msgstr "Verwaltungseinheit aktualisieren"
#: forms/event.py:17
msgid "New place"
msgstr "Neuer Ort"
#: forms/event.py:19 forms/event_place.py:26
msgid "Other organizers can use this location"
msgstr "Andere Veranstalter können diesen Ort verwenden"
#: forms/event.py:27
#: forms/event.py:28
msgid "Organizator"
msgstr "Organisator"
#: forms/event.py:34 templates/event/create.html:6 templates/home.html:11
#: templates/manage/events.html:36 templates/manage/organizers.html:22
msgid "Create event"
msgstr "Veranstaltung erstellen"
#: forms/event.py:37
msgid "Ticket Link URL"
msgstr "Ticket Link"
@ -293,121 +288,140 @@ msgstr "Vorheriges Startdatum"
msgid "Tags"
msgstr "Stichworte"
#: forms/event.py:47 forms/event.py:102 forms/event_place.py:33
#: templates/_macros.html:356 templates/event/create.html:34
#: templates/event/update.html:44 templates/manage/events.html:18
#: forms/event.py:45 forms/event.py:112 forms/event_place.py:33
#: templates/_macros.html:356 templates/event/create.html:59
#: templates/event/update.html:46 templates/manage/events.html:18
#: templates/manage/places.html:18 templates/organizer/create.html:16
#: templates/organizer/delete.html:13 templates/organizer/update.html:16
msgid "Organizer"
msgstr "Veranstalter"
#: forms/event.py:48
msgid "Existing place"
msgstr "Existierender Ort"
#: forms/event.py:49 templates/_macros.html:292
#: forms/event.py:46 templates/_macros.html:292
msgid "Category"
msgstr "Kategorie"
#: forms/event.py:50 forms/organization.py:37 templates/_macros.html:371
#: templates/admin_unit/update.html:16 templates/event/update.html:99
#: forms/event.py:47 forms/organization.py:37 templates/_macros.html:371
#: templates/admin_unit/update.html:16 templates/event/update.html:91
#: templates/organization/create.html:58
msgid "Admin unit"
msgstr "Verwaltungseinheit"
#: forms/event.py:52
#: forms/event.py:49
msgid "Kid friendly"
msgstr "Für Kinder geeignet"
#: forms/event.py:53
#: forms/event.py:50
msgid "Accessible for free"
msgstr "Kostenlos zugänglich"
#: forms/event.py:54
#: forms/event.py:51
msgid "Typical Age from"
msgstr "Typisches Alter von"
#: forms/event.py:55
#: forms/event.py:52
msgid "Typical Age to"
msgstr "Typisches Alter bis"
#: forms/event.py:57
#: forms/event.py:54
msgid "Target group origin"
msgstr "Für Touristen/Einwohner geeignet"
#: forms/event.py:58
#: forms/event.py:55
msgid "EventTargetGroupOrigin.both"
msgstr "Für Touristen und Einwohner"
#: forms/event.py:59
#: forms/event.py:56
msgid "EventTargetGroupOrigin.tourist"
msgstr "Hauptsächlich für Touristen"
#: forms/event.py:60
#: forms/event.py:57
msgid "EventTargetGroupOrigin.resident"
msgstr "Hauptsächlich für Einwohner"
#: forms/event.py:62
#: forms/event.py:59
msgid "Attendance mode"
msgstr "Teilnahme"
#: forms/event.py:63
#: forms/event.py:60
msgid "EventAttendanceMode.offline"
msgstr "Offline"
#: forms/event.py:64
#: forms/event.py:61
msgid "EventAttendanceMode.online"
msgstr "Online"
#: forms/event.py:65
#: forms/event.py:62
msgid "EventAttendanceMode.mixed"
msgstr "Online und offline"
#: forms/event.py:67 forms/event_place.py:23 forms/place.py:21
#: forms/event.py:64 forms/event_place.py:23 forms/place.py:21
msgid "Photo"
msgstr "Foto"
#: forms/event.py:79
#: forms/event.py:67 forms/event.py:68 forms/event.py:94
#: templates/_macros.html:306 templates/event/create.html:68
#: templates/event/update.html:55 templates/event_place/create.html:20
#: templates/event_place/update.html:20 templates/place/create.html:20
#: templates/place/update.html:20
msgid "Place"
msgstr "Ort"
#: forms/event.py:67
msgid "Select existing place"
msgstr "Vorhandenen Ort auswählen"
#: forms/event.py:67
msgid "Enter new place"
msgstr "Neuen Ort eingeben"
#: forms/event.py:71 templates/event/create.html:31 templates/home.html:11
#: templates/manage/events.html:36 templates/manage/organizers.html:22
msgid "Create event"
msgstr "Veranstaltung erstellen"
#: forms/event.py:87
msgid "Select existing place or enter new place"
msgstr "Existierenden Ort wählen oder neuen Ort eingeben"
#: forms/event.py:86 templates/event/update.html:34
#: forms/event.py:96 templates/event/update.html:36
msgid "Status"
msgstr "Status"
#: forms/event.py:87
#: forms/event.py:97
msgid "EventStatus.scheduled"
msgstr "Geplant"
#: forms/event.py:88
#: forms/event.py:98
msgid "EventStatus.cancelled"
msgstr "Abgesagt"
#: forms/event.py:89
#: forms/event.py:99
msgid "EventStatus.movedOnline"
msgstr "Online verschoben"
#: forms/event.py:90
#: forms/event.py:100
msgid "EventStatus.postponed"
msgstr "Verschoben"
#: forms/event.py:91
#: forms/event.py:101
msgid "EventStatus.rescheduled"
msgstr "Neu angesetzt"
#: forms/event.py:93 templates/event/read.html:24 templates/event/update.html:6
#: forms/event.py:103 templates/event/read.html:24
#: templates/event/update.html:8
msgid "Update event"
msgstr "Veranstaltung aktualisieren"
#: forms/event.py:96 templates/event/delete.html:6 templates/event/read.html:25
#: forms/event.py:106 templates/event/delete.html:6
#: templates/event/read.html:25
msgid "Delete event"
msgstr "Veranstaltung löschen"
#: forms/event.py:100
#: forms/event.py:110
msgid "Find events"
msgstr "Veranstaltungen finden"
#: forms/event.py:101 templates/manage/events.html:25
#: forms/event.py:111 templates/manage/events.html:25
#: templates/widget/event_date/list.html:31
msgid "Keyword"
msgstr "Stichwort"
@ -419,10 +433,6 @@ msgstr "Stichwort"
msgid "Create place"
msgstr "Ort hinzufügen"
#: forms/event_place.py:26
msgid "Other organizers can use this location"
msgstr "Andere Veranstalter können diesen Ort verwenden"
#: forms/event_place.py:29 forms/place.py:26 templates/event_place/read.html:12
#: templates/event_place/update.html:10 templates/place/read.html:12
#: templates/place/update.html:10
@ -496,8 +506,8 @@ msgstr "Auf Google Maps anzeigen"
msgid "Link"
msgstr "Link"
#: templates/_macros.html:255 templates/event/create.html:13
#: templates/event/delete.html:13 templates/event/update.html:13
#: templates/_macros.html:255 templates/event/create.html:38
#: templates/event/delete.html:13 templates/event/update.html:15
msgid "Event"
msgstr "Veranstaltung"
@ -506,13 +516,6 @@ msgstr "Veranstaltung"
msgid "%(count)d event dates"
msgstr "%(count)d Termine"
#: templates/_macros.html:306 templates/event/create.html:43
#: templates/event/update.html:53 templates/event_place/create.html:20
#: templates/event_place/update.html:20 templates/place/create.html:20
#: templates/place/update.html:20
msgid "Place"
msgstr "Ort"
#: templates/_macros.html:326 templates/_macros.html:346
msgid "Show directions"
msgstr "Anreise planen"
@ -599,8 +602,8 @@ msgstr "Mitglieder"
msgid "You are a member of this admin unit."
msgstr "Du bist Mitglied dieser Verwaltungseinheit"
#: templates/admin_unit/update.html:44 templates/event/create.html:75
#: templates/event/update.html:84 templates/event_place/create.html:44
#: templates/admin_unit/update.html:44 templates/event/create.html:112
#: templates/event/update.html:76 templates/event_place/create.html:44
#: templates/event_place/update.html:44 templates/organization/create.html:45
#: templates/organization/update.html:45 templates/organizer/create.html:43
#: templates/organizer/update.html:43 templates/place/create.html:44
@ -608,11 +611,11 @@ msgstr "Du bist Mitglied dieser Verwaltungseinheit"
msgid "Additional information"
msgstr "Zusätzliche Informationen"
#: templates/event/create.html:23 templates/event/update.html:23
#: templates/event/create.html:48 templates/event/update.html:25
msgid "Event date"
msgstr "Termin"
#: templates/event/create.html:63 templates/event/update.html:72
#: templates/event/create.html:100 templates/event/update.html:64
msgid "Target group"
msgstr "Zielgruppe"
@ -718,3 +721,9 @@ msgstr "bis"
#~ msgid "Contact"
#~ msgstr "Kontakt"
#~ msgid "New place"
#~ msgstr "Neuer Ort"
#~ msgid "Existing place"
#~ msgstr "Existierender Ort"