diff --git a/src/c3nav/control/templates/control/map_updates.html b/src/c3nav/control/templates/control/map_updates.html
index 7030969c..6b0b05f5 100644
--- a/src/c3nav/control/templates/control/map_updates.html
+++ b/src/c3nav/control/templates/control/map_updates.html
@@ -56,20 +56,14 @@
manage.py clearmapcache
{% elif update.type == 'control_panel' %}
{% url 'control.users.detail' user=update.user.pk as user_url %}
- {% blocktrans with user_name=update.user.username %}
- via control panel by {{ user_name }}
- {% endblocktrans %}
+ {% blocktrans with user_name=update.user.username %}via control panel by {{ user_name }}{% endblocktrans %}
{% elif update.type == 'direct_edit' %}
{% url 'control.users.detail' user=update.user.pk as user_url %}
- {% blocktrans with user_name=update.user.username %}
- direct edit by {{ user_name }}
- {% endblocktrans %}
+ {% blocktrans with user_name=update.user.username %}direct edit by {{ user_name }}{% endblocktrans %}
{% elif update.type == 'changeset' %}
{% url 'control.users.detail' user=update.user.pk as user_url %}
{% url 'control.users.detail' user=update.changeset.author.pk as author_url %}
- {% blocktrans with changeset_id=update.changeset.pk user_name=update.user.username author_name=update.changeset.author.username %}
- Changeset #{{ changeset_id }} by {{ author_name }} applied by {{ user_name }}
- {% endblocktrans %}
+ {% blocktrans with changeset_id=update.changeset.pk user_name=update.user.username author_name=update.changeset.author.username %}Changeset #{{ changeset_id }} by {{ author_name }} applied by {{ user_name }}{% endblocktrans %}
{% else %}
{{ update.type }}
{% endif %}
diff --git a/src/c3nav/locale/de/LC_MESSAGES/django.po b/src/c3nav/locale/de/LC_MESSAGES/django.po
index 5f8d8109..bac3c867 100644
--- a/src/c3nav/locale/de/LC_MESSAGES/django.po
+++ b/src/c3nav/locale/de/LC_MESSAGES/django.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-07 20:00+0100\n"
-"PO-Revision-Date: 2018-12-07 20:28+0100\n"
+"POT-Creation-Date: 2018-12-16 02:44+0100\n"
+"PO-Revision-Date: 2018-12-16 02:44+0100\n"
"Last-Translator: Laura Klünder \n"
"Language-Team: \n"
"Language: de\n"
@@ -62,105 +62,161 @@ msgstr "Befugnisse"
msgid "Important dates"
msgstr "Wichtige Daten"
-#: c3nav/control/forms.py:78
+#: c3nav/control/forms.py:79
msgid "choose permissions…"
msgstr "Erlaubnsise auswählen…"
-#: c3nav/control/forms.py:79
+#: c3nav/control/forms.py:80
#, python-format
msgid "everything possible (%d permission)"
msgid_plural "everything possible (%d permissions)"
msgstr[0] "alles mögliche (%d Erlaubnis)"
msgstr[1] "alles mögliche (%d Erlaubnisse)"
-#: c3nav/control/forms.py:83
+#: c3nav/control/forms.py:84
msgid "Access Permission Groups"
msgstr "Zugangserlaubnisgruppen"
-#: c3nav/control/forms.py:87 c3nav/control/templates/control/access.html:4
+#: c3nav/control/forms.py:88 c3nav/control/templates/control/access.html:4
#: c3nav/control/templates/control/user.html:60
#: c3nav/mapdata/models/access.py:149
msgid "Access Permissions"
msgstr "Zugangserlaubnisse"
-#: c3nav/control/forms.py:96 c3nav/control/templates/control/user.html:91
+#: c3nav/control/forms.py:97 c3nav/control/templates/control/user.html:91
#: c3nav/control/templates/control/user.html:134
msgid "never"
msgstr "nie"
-#: c3nav/control/forms.py:100
+#: c3nav/control/forms.py:101
#, python-format
msgid "in %d minute"
msgid_plural "in %d minutes"
msgstr[0] "in %d Minute"
msgstr[1] "in %d Minuten"
-#: c3nav/control/forms.py:104
+#: c3nav/control/forms.py:105
#, python-format
msgid "in %d hour"
msgid_plural "in %d hours"
msgstr[0] "in %d Stunde"
msgstr[1] "in %d Stunden"
-#: c3nav/control/forms.py:107
+#: c3nav/control/forms.py:108
msgid "in 1½ hour"
msgstr "in 1½ Stunden"
-#: c3nav/control/forms.py:111
+#: c3nav/control/forms.py:112
#, python-format
msgid "in %d day"
msgid_plural "in %d days"
msgstr[0] "in %d Tag"
msgstr[1] "in %d Tagen"
-#: c3nav/control/forms.py:118
+#: c3nav/control/forms.py:119
msgid "can pass on"
msgstr "kann weitergeben"
-#: c3nav/control/models.py:14
+#: c3nav/control/forms.py:252
+msgid "no"
+msgstr "nein"
+
+#: c3nav/control/forms.py:252
+msgid "yes"
+msgstr "ja"
+
+#: c3nav/control/forms.py:272
+msgid "any type"
+msgstr "beliebiger Typ"
+
+#: c3nav/control/forms.py:276 c3nav/control/forms.py:280
+msgid "any"
+msgstr "beliebig"
+
+#: c3nav/control/forms.py:276
+msgid "geometries changed"
+msgstr "geometrien geändert"
+
+#: c3nav/control/forms.py:276
+msgid "no geometries changed"
+msgstr "keine geometrien geändert"
+
+#: c3nav/control/forms.py:280
+msgid "processed"
+msgstr "verarbeitet"
+
+#: c3nav/control/forms.py:280
+msgid "not processed"
+msgstr "nicht verarbeitet"
+
+#: c3nav/control/forms.py:287
+msgid "user id"
+msgstr "User ID"
+
+#: c3nav/control/models.py:20
msgid "can review changesets"
msgstr "kann Änderungssets überprüfen"
-#: c3nav/control/models.py:15
+#: c3nav/control/models.py:21
msgid "can activate direct editing"
msgstr "kann direktes Bearbeiten aktivieren"
-#: c3nav/control/models.py:16
+#: c3nav/control/models.py:22
msgid "max changes per changeset"
msgstr "maximale Anzahl änderungen pro Änderungsset"
-#: c3nav/control/models.py:17
+#: c3nav/control/models.py:23
msgid "can always access editor"
msgstr "kann immer auf den Editor zugreifen"
-#: c3nav/control/models.py:18
+#: c3nav/control/models.py:24
msgid "can always access base map data"
msgstr "kann immer auf die Basiskartendaten zugreifen"
-#: c3nav/control/models.py:20
+#: c3nav/control/models.py:25
+msgid "manage map updates"
+msgstr "Kartenänderungen verwalten"
+
+#: c3nav/control/models.py:27
msgid "can access control panel"
msgstr "kann auf das Control Panel zugreifen"
-#: c3nav/control/models.py:21
+#: c3nav/control/models.py:28
msgid "can grant control permissions"
msgstr "kann Control-Panel-Befugnisse erteilen"
-#: c3nav/control/models.py:22
+#: c3nav/control/models.py:29
msgid "manage announcements"
msgstr "Ankündigungen verwalten"
-#: c3nav/control/models.py:23
+#: c3nav/control/models.py:30
msgid "can grant access to everything"
msgstr "kann alle Zugangserlaubnisse erteilen"
-#: c3nav/control/models.py:24 c3nav/control/templates/control/user.html:30
+#: c3nav/control/models.py:31
+msgid "can grant space access"
+msgstr "kann Raum-Zugriffsberechtigungen erteilen"
+
+#: c3nav/control/models.py:32 c3nav/control/templates/control/user.html:30
msgid "API secret"
msgstr "API secret"
-#: c3nav/control/models.py:27 c3nav/control/models.py:28
+#: c3nav/control/models.py:35 c3nav/control/models.py:36
msgid "User Permissions"
msgstr "Benutzerbefugnisse"
+#: c3nav/control/models.py:99 c3nav/control/templates/control/user.html:164
+msgid "can edit"
+msgstr "kann bearbeiten"
+
+#: c3nav/control/models.py:102
+msgid "user space access"
+msgstr "Benutzer-Raumzugrifsberechtigung"
+
+#: c3nav/control/models.py:103
+msgid "user space accesses"
+msgstr "Benutzer-Raumzugrifsberechtigungen"
+
#: c3nav/control/templates/control/access.html:7
msgid "Generate QR Code"
msgstr "QR Code generieren"
@@ -200,8 +256,9 @@ msgid "Users"
msgstr "Benutzer"
#: c3nav/control/templates/control/announcements.html:9
+#: c3nav/control/templates/control/map_updates.html:44
#: c3nav/control/templates/control/users.html:15
-#: c3nav/mapdata/models/base.py:41 c3nav/mapdata/utils/locations.py:302
+#: c3nav/mapdata/models/base.py:41 c3nav/mapdata/utils/locations.py:306
msgid "ID"
msgstr "ID"
@@ -262,6 +319,10 @@ msgstr "Zugang"
msgid "Announcements"
msgstr "Ankündigungen"
+#: c3nav/control/templates/control/base.html:25
+msgid "Map Updates"
+msgstr "Kartenänderungen"
+
#: c3nav/control/templates/control/fragment_pagination.html:5
msgid "first"
msgstr "erste"
@@ -287,6 +348,95 @@ msgstr "letzte"
msgid "Welcome to the c3nav control panel."
msgstr "Willkommen im c3nav control panel."
+#: c3nav/control/templates/control/map_updates.html:4
+#: c3nav/mapdata/models/update.py:35
+msgid "Map updates"
+msgstr "Kartenänderungen"
+
+#: c3nav/control/templates/control/map_updates.html:9
+#: c3nav/control/templates/control/map_updates.html:15
+msgid "Create map update"
+msgstr "Kartenängerung erstellen"
+
+#: c3nav/control/templates/control/map_updates.html:19
+msgid "Process updates"
+msgstr "Kartenänderungen verarbeiten"
+
+#: c3nav/control/templates/control/map_updates.html:23
+msgid "Map updates are currently processed automatically."
+msgstr "Kartenänderungen werden aktuell automatisch verarbeitet."
+
+#: c3nav/control/templates/control/map_updates.html:25
+msgid "Map updates are currently not processed automatically."
+msgstr "Kartenänderungen werden aktuell nicht automatisch verarbeitet."
+
+#: c3nav/control/templates/control/map_updates.html:27
+msgid "Process map updates now"
+msgstr "Kartenänderungen jetzt verarbeiten"
+
+#: c3nav/control/templates/control/map_updates.html:32
+msgid "List of map updates"
+msgstr "Liste von Kartenänderungen"
+
+#: c3nav/control/templates/control/map_updates.html:37
+msgid "Filter"
+msgstr "Filtern"
+
+#: c3nav/control/templates/control/map_updates.html:45
+msgid "Date"
+msgstr "Datum"
+
+#: c3nav/control/templates/control/map_updates.html:46
+msgid "Reason"
+msgstr "Grund"
+
+#: c3nav/control/templates/control/map_updates.html:47
+msgid "Geometries"
+msgstr "Geometrien"
+
+#: c3nav/control/templates/control/map_updates.html:48
+msgid "Processed"
+msgstr "Verarbeitet"
+
+#: c3nav/control/templates/control/map_updates.html:60
+#, python-format
+msgid "via control panel by %(user_name)s"
+msgstr "via Control Panel von %(user_name)s"
+
+#: c3nav/control/templates/control/map_updates.html:63
+#, python-format
+msgid "direct edit by %(user_name)s"
+msgstr "direktes Bearbeiten von %(user_name)s"
+
+#: c3nav/control/templates/control/map_updates.html:67
+#, python-format
+msgid ""
+"Changeset #%(changeset_id)s by %(author_name)s"
+"a> applied by %(user_name)s"
+msgstr ""
+"Änderungsset #%(changeset_id)s von "
+"%(author_name)s angewendet von %(user_name)s"
+
+#: c3nav/control/templates/control/map_updates.html:74
+#: c3nav/control/templates/control/map_updates.html:81
+#: c3nav/control/templates/control/user.html:97
+#: c3nav/control/templates/control/user.html:140
+#: c3nav/control/templates/control/user.html:172
+#: c3nav/mapdata/models/geometry/level.py:140
+#: c3nav/mapdata/models/locations.py:104 c3nav/mapdata/models/locations.py:105
+msgid "Yes"
+msgstr "Ja"
+
+#: c3nav/control/templates/control/map_updates.html:76
+#: c3nav/control/templates/control/map_updates.html:83
+#: c3nav/control/templates/control/user.html:99
+#: c3nav/control/templates/control/user.html:142
+#: c3nav/control/templates/control/user.html:174
+#: c3nav/mapdata/models/geometry/level.py:140
+#: c3nav/mapdata/models/locations.py:104 c3nav/mapdata/models/locations.py:105
+msgid "No"
+msgstr "Nein"
+
#: c3nav/control/templates/control/user.html:8
msgid "show in django admin panel"
msgstr "im django Admin Panel zeigen"
@@ -350,7 +500,7 @@ msgid "back"
msgstr "zurück"
#: c3nav/control/templates/control/user.html:73
-#: c3nav/mapdata/models/access.py:77 c3nav/mapdata/models/geometry/space.py:355
+#: c3nav/mapdata/models/access.py:77 c3nav/mapdata/models/geometry/space.py:365
#: c3nav/site/models.py:17
msgid "author"
msgstr "Autor"
@@ -371,21 +521,8 @@ msgstr "kann erteilen"
msgid "key"
msgstr "key"
-#: c3nav/control/templates/control/user.html:97
-#: c3nav/control/templates/control/user.html:140
-#: c3nav/mapdata/models/geometry/level.py:135
-#: c3nav/mapdata/models/locations.py:102 c3nav/mapdata/models/locations.py:103
-msgid "Yes"
-msgstr "Ja"
-
-#: c3nav/control/templates/control/user.html:99
-#: c3nav/control/templates/control/user.html:142
-#: c3nav/mapdata/models/geometry/level.py:135
-#: c3nav/mapdata/models/locations.py:102 c3nav/mapdata/models/locations.py:103
-msgid "No"
-msgstr "Nein"
-
#: c3nav/control/templates/control/user.html:104
+#: c3nav/control/templates/control/user.html:178
#: c3nav/editor/templates/editor/changeset.html:124
#: c3nav/editor/templates/editor/delete.html:17
#: c3nav/editor/templates/editor/edit.html:27
@@ -393,6 +530,7 @@ msgid "Delete"
msgstr "Löschen"
#: c3nav/control/templates/control/user.html:114
+#: c3nav/control/templates/control/user.html:193
msgid "Add"
msgstr "Hinzufügen"
@@ -405,12 +543,24 @@ msgstr "Zugangsbeschränkung"
#: c3nav/control/templates/control/user.html:145
#: c3nav/editor/templates/editor/fragment_changesets.html:10
#: c3nav/editor/templates/editor/list.html:26
-#: c3nav/site/templates/site/map.html:74 c3nav/site/templates/site/map.html:108
-#: c3nav/site/templates/site/map.html:120
-#: c3nav/site/templates/site/map.html:126
+#: c3nav/site/templates/site/map.html:75 c3nav/site/templates/site/map.html:109
+#: c3nav/site/templates/site/map.html:121
+#: c3nav/site/templates/site/map.html:127
msgid "Details"
msgstr "Details"
+#: c3nav/control/templates/control/user.html:157
+msgid "Space Access"
+msgstr "Raumzugriffserlaubnis"
+
+#: c3nav/control/templates/control/user.html:163
+#: c3nav/editor/templates/editor/space.html:9
+#: c3nav/mapdata/models/geometry/level.py:122
+#: c3nav/mapdata/models/geometry/space.py:81
+#: c3nav/mapdata/utils/locations.py:314
+msgid "Space"
+msgstr "Raum"
+
#: c3nav/control/templates/control/users.html:8
msgid "Search"
msgstr "Suchen"
@@ -419,27 +569,27 @@ msgstr "Suchen"
msgid "Username"
msgstr "Benutzername"
-#: c3nav/control/views.py:75
+#: c3nav/control/views.py:79
msgid "Unknown access permission."
msgstr "Unbekannte Zugangserlaubnis."
-#: c3nav/control/views.py:79
+#: c3nav/control/views.py:83
msgid "Access Permission successfully deleted."
msgstr "Zugangserlaubnis erfolgreich gelöscht."
-#: c3nav/control/views.py:81
+#: c3nav/control/views.py:85
msgid "You cannot delete this Access Permission."
msgstr "Du kannst diese Zugangsberechtigung nicht löschen."
-#: c3nav/control/views.py:91
+#: c3nav/control/views.py:95
msgid "This user already has an API secret."
msgstr "Dieser Benutzer hat bereis ein API Secret."
-#: c3nav/control/views.py:95
+#: c3nav/control/views.py:99
msgid "This user does not have an API secret."
msgstr "Dieser Benutzer hat kein API Secret."
-#: c3nav/control/views.py:104
+#: c3nav/control/views.py:108
#, python-format
msgid ""
"The new API secret is: %s – be sure to note it down now, it won't be shown "
@@ -448,61 +598,98 @@ msgstr ""
"Das neue API Secret ist: %s – notier es dir sofort, denn es wird nicht "
"erneut angezeigt."
-#: c3nav/control/views.py:111
+#: c3nav/control/views.py:115
msgid "API secret successfully deleted!"
msgstr "API secret erfolgreich gelöscht!"
-#: c3nav/control/views.py:135
+#: c3nav/control/views.py:139
msgid "General permissions successfully updated."
msgstr "Generelle Befugnisse erfolgreich gespeichert."
-#: c3nav/control/views.py:162
+#: c3nav/control/views.py:166
msgid "Access permissions successfully granted."
msgstr "Zugangserlaubnis erfolgreich erteilt."
-#: c3nav/control/views.py:222
+#: c3nav/control/views.py:206
+msgid "User space access could not be granted because it already exists."
+msgstr ""
+"Benutzer-Raumzugriffserlaubnis konnte nicht gewährt werden weil sie bereits "
+"existiert."
+
+#: c3nav/control/views.py:208
+msgid "User space access successfully granted."
+msgstr "Benutzer-Raumzugriffserlaubnis erfolgreich gewährt."
+
+#: c3nav/control/views.py:219
+msgid "Unknown space access."
+msgstr "Unbekannte Raumzugriffserlaubnis."
+
+#: c3nav/control/views.py:223
+msgid "Space access successfully deleted."
+msgstr "Raumzugriffserlaubnis erfolgreich gelöscht."
+
+#: c3nav/control/views.py:225
+msgid "You cannot delete this space access."
+msgstr "Du kannst diese Raumzugriffserlaubnis nicht löschen."
+
+#: c3nav/control/views.py:268
msgid "Access successfully granted."
msgstr "Zugangserlaubnis erfolgreich erteilt."
-#: c3nav/control/views.py:226
+#: c3nav/control/views.py:272
msgid "Token successfully revoked."
msgstr "Token erfolgreich invalidiert."
-#: c3nav/control/views.py:237
+#: c3nav/control/views.py:283
msgid "You can only display your most recently created token."
msgstr "Du kannst nur deinen zuletzt erstellten Code anzeigen."
-#: c3nav/editor/api.py:315
+#: c3nav/control/views.py:361
+msgid "Map update successfully created."
+msgstr "Kartenänderung erfolgreich erstellt."
+
+#: c3nav/control/views.py:366
+msgid "Map update processing successfully queued."
+msgstr "Kartenänderungsverarbeitung erfolgreich veranlasst."
+
+#: c3nav/control/views.py:368
+msgid ""
+"Map update processing was not be queued because celery is not configured."
+msgstr ""
+"Kartenänderungsverarbeitung konnte nicht veranlasst werden da Celery nicht "
+"konfiguriert ist."
+
+#: c3nav/editor/api.py:326
msgid "No matching editor view endpoint found."
msgstr "Es wurde keine passende Editor-Endpunkt gefunden."
-#: c3nav/editor/api.py:318
+#: c3nav/editor/api.py:329
msgid "Matching editor view point does not provide an API."
msgstr "Der entsprechende Editor-Endpunkt bietet diese API nicht an."
-#: c3nav/editor/api.py:401
+#: c3nav/editor/api.py:412
msgid "You don't have the permission to activate direct editing."
msgstr "Du darfst direktes Bearbeiten nicht aktivieren."
-#: c3nav/editor/api.py:405
+#: c3nav/editor/api.py:416
msgid "You cannot activate direct editing if you have an active changeset."
msgstr ""
"Du kannst direktes Bearbeiten nicht aktivieren, wenn du ein aktives "
"Änderungsset hast."
-#: c3nav/editor/api.py:436 c3nav/editor/views/changes.py:66
+#: c3nav/editor/api.py:447 c3nav/editor/views/changes.py:66
msgid "You can not activate this change set."
msgstr "Du kannst dieses Änderungsset nicht aktivieren."
-#: c3nav/editor/api.py:446 c3nav/editor/views/changes.py:399
+#: c3nav/editor/api.py:457 c3nav/editor/views/changes.py:399
msgid "You cannot edit this change set."
msgstr "Du kannst dieses Änderungsset nicht bearbeiten."
-#: c3nav/editor/api.py:475 c3nav/editor/views/changes.py:56
+#: c3nav/editor/api.py:486 c3nav/editor/views/changes.py:56
msgid "You can not edit changes on this change set."
msgstr "Du kannst keine Änderungen dieses Änderungssets bearbeiten."
-#: c3nav/editor/api.py:485 c3nav/editor/views/changes.py:52
+#: c3nav/editor/api.py:496 c3nav/editor/views/changes.py:52
msgid ""
"You cannot restore this object, because it depends on a deleted object or it "
"would violate a unique contraint."
@@ -510,75 +697,75 @@ msgstr ""
"Du kannst dieses Objekt nicht wiederherstellen weil es ein anderes Objekt "
"benötigt oder weil es einer Eindeutigen Beschränkung wiedersprechen würde."
-#: c3nav/editor/api.py:493 c3nav/editor/views/changes.py:72
+#: c3nav/editor/api.py:504 c3nav/editor/views/changes.py:72
msgid "You need to log in to propose changes."
msgstr "Du musst dich anmelden um Änderungen vorzuschlagen."
-#: c3nav/editor/api.py:498 c3nav/editor/views/changes.py:77
+#: c3nav/editor/api.py:509 c3nav/editor/views/changes.py:77
msgid "You need to add a title an a description to propose this change set."
msgstr ""
"Du musst einen Titel und eine Beschreibung hinzufügen, um dieses "
"Änderungsset vorzuschlagen."
-#: c3nav/editor/api.py:501 c3nav/editor/views/changes.py:84
+#: c3nav/editor/api.py:512 c3nav/editor/views/changes.py:84
msgid "You cannot propose this change set."
msgstr "Du kannst dieses Änderungsset nicht vorschlagen."
-#: c3nav/editor/api.py:511 c3nav/editor/views/changes.py:94
+#: c3nav/editor/api.py:522 c3nav/editor/views/changes.py:94
msgid "You cannot unpropose this change set."
msgstr "Du kannst diesen Änderungsvorschlag nicht zurücknehmen."
-#: c3nav/editor/api.py:521 c3nav/editor/views/changes.py:104
+#: c3nav/editor/api.py:532 c3nav/editor/views/changes.py:104
msgid "You cannot review these changes."
msgstr "Du kannst diese Änderungen nicht überprüfen."
-#: c3nav/editor/api.py:531 c3nav/editor/views/changes.py:111
+#: c3nav/editor/api.py:542 c3nav/editor/views/changes.py:111
msgid "You cannot reject these changes."
msgstr "Du kannst diese Änderungen nicht ablehnen."
-#: c3nav/editor/api.py:545 c3nav/editor/views/changes.py:131
+#: c3nav/editor/api.py:556 c3nav/editor/views/changes.py:131
msgid "You cannot unreject these changes."
msgstr "Du kannst diese Änderungsablehnung nicht zurücknehmen."
-#: c3nav/editor/api.py:555 c3nav/editor/views/changes.py:142
+#: c3nav/editor/api.py:566 c3nav/editor/views/changes.py:142
msgid "You cannot accept and apply these changes."
msgstr "Du kannst diese Änderungen nicht akzeptieren und anwenden."
-#: c3nav/editor/api.py:565 c3nav/editor/views/changes.py:155
+#: c3nav/editor/api.py:576 c3nav/editor/views/changes.py:155
msgid "You cannot delete this change set."
msgstr "Du kannst dieses Änderungsset nicht löschen."
-#: c3nav/editor/forms.py:174
+#: c3nav/editor/forms.py:177
msgid "Redirecting Slugs (comma seperated)"
msgstr "Umleitungs-Slugs (mit Komma getrennt)"
-#: c3nav/editor/forms.py:207
+#: c3nav/editor/forms.py:210
#, python-format
msgid "Can not add redirecting slug “%s”: it's the slug of this object."
msgstr ""
"Umleitungs-Slug „%s“ kann nicht hinzugefügt werden: Es ist der Slug dieses "
"Objects."
-#: c3nav/editor/forms.py:214
+#: c3nav/editor/forms.py:217
#, python-format
msgid "Can not add redirecting slug “%s”: it is already used elsewhere."
msgstr ""
"Umleitungs-Slug „%s“ kann nicht hinzugefügt werden: Er wird bereits an "
"anderer Stelle verwendet."
-#: c3nav/editor/forms.py:221
+#: c3nav/editor/forms.py:224
msgid "Invalid JSON."
msgstr "Invalides JSON."
-#: c3nav/editor/forms.py:284
+#: c3nav/editor/forms.py:287
msgid "Final rejection"
msgstr "Endgültige Ablehnung"
-#: c3nav/editor/forms.py:292
+#: c3nav/editor/forms.py:295
msgid "create one way edges"
msgstr "Kante nur in eine Richtung erstellen"
-#: c3nav/editor/forms.py:293
+#: c3nav/editor/forms.py:296
msgid "activate next node after connecting"
msgstr "nächsten Knoten nach dem Verbinden aktivieren"
@@ -661,8 +848,8 @@ msgid "last state update"
msgstr "letzte Statusänderung"
#: c3nav/editor/models/changeset.py:48 c3nav/mapdata/models/base.py:59
-#: c3nav/mapdata/models/graph.py:34 c3nav/mapdata/models/locations.py:183
-#: c3nav/mapdata/utils/locations.py:337
+#: c3nav/mapdata/models/graph.py:34 c3nav/mapdata/models/locations.py:202
+#: c3nav/mapdata/utils/locations.py:342
msgid "Title"
msgstr "Titel"
@@ -676,21 +863,21 @@ msgstr "zugewiesen"
#: c3nav/editor/models/changeset.py:53
msgid "map update"
-msgstr "Kartenupdate"
+msgstr "Kartenänderung"
#: c3nav/editor/models/changeset.py:59
msgid "Change Sets"
msgstr "Änderungssets"
-#: c3nav/editor/models/changeset.py:703
+#: c3nav/editor/models/changeset.py:781
msgid "Direct editing active"
msgstr "Direktes Bearbeiten aktiv"
-#: c3nav/editor/models/changeset.py:704
+#: c3nav/editor/models/changeset.py:782
msgid "No objects changed"
msgstr "Keine Objekte geändert"
-#: c3nav/editor/models/changeset.py:705
+#: c3nav/editor/models/changeset.py:783
#, python-format
msgid "%(num)d object changed"
msgid_plural "%(num)d objects changed"
@@ -949,7 +1136,7 @@ msgid "Log out"
msgstr "Abmelden"
#: c3nav/editor/templates/editor/fragment_nav.html:23
-#: c3nav/editor/views/account.py:27 c3nav/site/views.py:216
+#: c3nav/editor/views/account.py:27 c3nav/site/views.py:226
msgid "Log in"
msgstr "Anmelden"
@@ -991,13 +1178,13 @@ msgstr "Einstellungen für neue Kanten"
#: c3nav/editor/templates/editor/index.html:10
#: c3nav/editor/templates/editor/level.html:16
-#: c3nav/mapdata/models/geometry/level.py:55 c3nav/mapdata/models/level.py:29
-#: c3nav/mapdata/utils/locations.py:304
+#: c3nav/mapdata/models/geometry/level.py:56 c3nav/mapdata/models/level.py:29
+#: c3nav/mapdata/utils/locations.py:308
msgid "Level"
msgstr "Etage"
#: c3nav/editor/templates/editor/level.html:22
-#: c3nav/editor/templates/editor/space.html:14 c3nav/editor/views/edit.py:495
+#: c3nav/editor/templates/editor/space.html:14 c3nav/editor/views/edit.py:485
msgid "back to overview"
msgstr "zurück zur Übersicht"
@@ -1021,13 +1208,6 @@ msgstr "Karte zeigen"
msgid "Show details"
msgstr "Details anzeigen"
-#: c3nav/editor/templates/editor/space.html:9
-#: c3nav/mapdata/models/geometry/level.py:121
-#: c3nav/mapdata/models/geometry/space.py:79
-#: c3nav/mapdata/utils/locations.py:310
-msgid "Space"
-msgstr "Raum"
-
#: c3nav/editor/templates/editor/user.html:10
msgid "That's you!"
msgstr "Das bist du!"
@@ -1083,7 +1263,7 @@ msgid "Activate direct editing"
msgstr "Direktes Bearbeiten aktivieren"
#: c3nav/editor/templates/editor/user.html:54 c3nav/editor/views/account.py:85
-#: c3nav/site/templates/site/account.html:29 c3nav/site/views.py:281
+#: c3nav/site/templates/site/account.html:29 c3nav/site/views.py:291
msgid "Change password"
msgstr "Passwort ändern"
@@ -1104,15 +1284,15 @@ msgid "All recent change sets"
msgstr "Alle kürzlichen Änderungssets"
#: c3nav/editor/views/account.py:30 c3nav/editor/views/account.py:61
-#: c3nav/site/views.py:223 c3nav/site/views.py:258
+#: c3nav/site/views.py:233 c3nav/site/views.py:268
msgid "Create new account"
msgstr "Neues Konto erstellen"
-#: c3nav/editor/views/account.py:75 c3nav/site/views.py:272
+#: c3nav/editor/views/account.py:75 c3nav/site/views.py:282
msgid "Password successfully changed."
msgstr "Passwort erfolgreich geändert."
-#: c3nav/editor/views/base.py:131
+#: c3nav/editor/views/base.py:138
msgid "Log in required."
msgstr "Login erforderlich."
@@ -1191,101 +1371,101 @@ msgstr "Umleitungs-Slugs"
msgid "deleted"
msgstr "gelöscht"
-#: c3nav/editor/views/edit.py:263
+#: c3nav/editor/views/edit.py:265
msgid "You can not create new objects because your changeset is full."
msgstr ""
"Du kannst keine neuen Objekte erstellen weil dein Änderungsset voll ist."
-#: c3nav/editor/views/edit.py:267 c3nav/editor/views/edit.py:288
+#: c3nav/editor/views/edit.py:269 c3nav/editor/views/edit.py:290
msgid "You can not edit this object because your changeset is full."
msgstr "Du kannst diese Objekt nicht löschen weil dein Änderungsset voll ist."
-#: c3nav/editor/views/edit.py:281
+#: c3nav/editor/views/edit.py:283
msgid "You need to log in to create Wifi Measurements."
msgstr "Du musst dich anmelden um WLAN Messungen zu erstellen."
-#: c3nav/editor/views/edit.py:294
+#: c3nav/editor/views/edit.py:296
msgid "You can not edit this object."
msgstr "Du kannst dieses Objekt nicht bearbeiten."
-#: c3nav/editor/views/edit.py:307
+#: c3nav/editor/views/edit.py:308
msgid ""
"You can not delete this object because other objects still depend on it."
msgstr ""
"Du kannst dieses Objekt nicht löschen weil andere Objekte sich darauf "
"beziehen."
-#: c3nav/editor/views/edit.py:318 c3nav/editor/views/edit.py:377
-#: c3nav/editor/views/edit.py:615 c3nav/editor/views/edit.py:652
-#: c3nav/editor/views/edit.py:670
+#: c3nav/editor/views/edit.py:319 c3nav/editor/views/edit.py:379
+#: c3nav/editor/views/edit.py:607 c3nav/editor/views/edit.py:644
+#: c3nav/editor/views/edit.py:662
msgid "You can not edit changes on this changeset."
msgstr "Du kannst keine Änderungen dieses Änderungssets bearbeiten."
-#: c3nav/editor/views/edit.py:333
+#: c3nav/editor/views/edit.py:334
msgid "Object was successfully deleted."
msgstr "Objekt wurde erfolgreich gelöscht."
-#: c3nav/editor/views/edit.py:361
+#: c3nav/editor/views/edit.py:363
msgid "Duplicate entry."
msgstr "Doppelter Eintrag."
-#: c3nav/editor/views/edit.py:373
+#: c3nav/editor/views/edit.py:375
msgid "Object was successfully saved."
msgstr "Objekt wurde erfolgreich gespeichert."
-#: c3nav/editor/views/edit.py:448 c3nav/editor/views/edit.py:575
+#: c3nav/editor/views/edit.py:449 c3nav/editor/views/edit.py:567
msgid "back to level"
msgstr "zurück zur Etage"
-#: c3nav/editor/views/edit.py:488 c3nav/editor/views/edit.py:587
+#: c3nav/editor/views/edit.py:479 c3nav/editor/views/edit.py:579
msgid "back to space"
msgstr "zurück zum Raum"
-#: c3nav/editor/views/edit.py:531
+#: c3nav/editor/views/edit.py:523
msgid "Could not edit edge because your changeset is full."
msgstr "Kante konnte nicht bearbeitet werden weil dein Änderungsset voll ist."
-#: c3nav/editor/views/edit.py:538
+#: c3nav/editor/views/edit.py:530
msgid "Reverse edge created."
msgstr "Umgekehrte Kante erstellt."
-#: c3nav/editor/views/edit.py:538
+#: c3nav/editor/views/edit.py:530
msgid "Edge created."
msgstr "Kante erstellt."
-#: c3nav/editor/views/edit.py:541
+#: c3nav/editor/views/edit.py:533
msgid "Reverse edge deleted."
msgstr "Umgekehrte Kante gelöscht."
-#: c3nav/editor/views/edit.py:541
+#: c3nav/editor/views/edit.py:533
msgid "Edge deleted."
msgstr "Kante gelöscht."
-#: c3nav/editor/views/edit.py:546
+#: c3nav/editor/views/edit.py:538
msgid "Reverse edge overwritten."
msgstr "Umgekehrte Kante überschrieben."
-#: c3nav/editor/views/edit.py:546
+#: c3nav/editor/views/edit.py:538
msgid "Edge overwritten."
msgstr "Kante überschrieben."
-#: c3nav/editor/views/edit.py:589
+#: c3nav/editor/views/edit.py:581
msgid "to level graph"
msgstr "zum Etagengraph"
-#: c3nav/editor/views/edit.py:605
+#: c3nav/editor/views/edit.py:597
msgid "You can not delete this graph node because your changeset is full."
msgstr "Du kannst diesen Knoten nicht löschen weil dein Änderungsset voll ist."
-#: c3nav/editor/views/edit.py:617
+#: c3nav/editor/views/edit.py:609
msgid "Graph Node was successfully deleted."
msgstr "Graphknoten wurde erfolgreich gelöscht."
-#: c3nav/editor/views/edit.py:658
+#: c3nav/editor/views/edit.py:650
msgid "You can not add graph nodes because your changeset is full."
msgstr "Du kannst keine Graphknoten erstellen weil dein Änderungsset voll ist."
-#: c3nav/editor/views/edit.py:665
+#: c3nav/editor/views/edit.py:657
msgid "New graph node created."
msgstr "Neuer Graphknoten erstellt."
@@ -1368,8 +1548,8 @@ msgid "Invalid zoom"
msgstr "Invalider zoom"
#: c3nav/mapdata/management/commands/rendermap.py:60
-msgid "Zoom has to be between 1 and 32"
-msgstr "Zoom muss zwischen 1 und 32 liegen"
+msgid "Zoom has to be between 0 and 32"
+msgstr "Zoom muss zwischen 0 und 32 liegen"
#: c3nav/mapdata/management/commands/rendermap.py:66
msgid "filetype to render"
@@ -1475,8 +1655,8 @@ msgstr "Zugangserlaubnis-Token"
msgid "Access Permission Tokens"
msgstr "Zugangserlaubnis-Token"
-#: c3nav/mapdata/models/access.py:133 c3nav/site/views.py:77
-#: c3nav/site/views.py:315
+#: c3nav/mapdata/models/access.py:133 c3nav/site/views.py:79
+#: c3nav/site/views.py:325
msgid "Area successfully unlocked."
msgid_plural "Areas successfully unlocked."
msgstr[0] "Bereich erfolgreich freigeschaltet."
@@ -1490,7 +1670,7 @@ msgstr "Zugangserlaubnis-Token"
msgid "Access Permission"
msgstr "Zugangserlaubnis"
-#: c3nav/mapdata/models/base.py:40 c3nav/mapdata/utils/locations.py:301
+#: c3nav/mapdata/models/base.py:40 c3nav/mapdata/utils/locations.py:305
msgid "Type"
msgstr "Typ"
@@ -1515,76 +1695,76 @@ msgstr "obere koordinate"
msgid "right coordinate"
msgstr "rechte koordinate"
-#: c3nav/mapdata/models/geometry/level.py:30
+#: c3nav/mapdata/models/geometry/level.py:31
msgid "level"
msgstr "Etage"
-#: c3nav/mapdata/models/geometry/level.py:71
+#: c3nav/mapdata/models/geometry/level.py:72
#, python-brace-format
msgid "{category}, {level}"
msgstr "{category}, {level}"
-#: c3nav/mapdata/models/geometry/level.py:103
+#: c3nav/mapdata/models/geometry/level.py:104
msgid "Building"
msgstr "Gebäude"
-#: c3nav/mapdata/models/geometry/level.py:104
+#: c3nav/mapdata/models/geometry/level.py:105
msgid "Buildings"
msgstr "Gebäude"
-#: c3nav/mapdata/models/geometry/level.py:113
-#: c3nav/mapdata/models/geometry/level.py:134
-#: c3nav/mapdata/models/geometry/space.py:164
-#: c3nav/mapdata/models/geometry/space.py:184
+#: c3nav/mapdata/models/geometry/level.py:114
+#: c3nav/mapdata/models/geometry/level.py:139
+#: c3nav/mapdata/models/geometry/space.py:170
+#: c3nav/mapdata/models/geometry/space.py:190
msgid "height"
msgstr "Höhe"
-#: c3nav/mapdata/models/geometry/level.py:115
+#: c3nav/mapdata/models/geometry/level.py:116
msgid "only outside of building"
msgstr "nur außerhalb von Gebäuden"
-#: c3nav/mapdata/models/geometry/level.py:116
+#: c3nav/mapdata/models/geometry/level.py:117
msgid "Enter description"
msgstr "Betretensbeschreibung"
-#: c3nav/mapdata/models/geometry/level.py:118
+#: c3nav/mapdata/models/geometry/level.py:119
msgid "always accessible (overwrites base mapdata setting)"
msgstr "immer zugänglich (überschreibt Basiskartendaten-Einstellung)"
-#: c3nav/mapdata/models/geometry/level.py:122
+#: c3nav/mapdata/models/geometry/level.py:123
msgid "Spaces"
msgstr "Räume"
-#: c3nav/mapdata/models/geometry/level.py:135 c3nav/mapdata/models/level.py:84
+#: c3nav/mapdata/models/geometry/level.py:140 c3nav/mapdata/models/level.py:84
msgid "outside only"
msgstr "Nur draußen"
-#: c3nav/mapdata/models/geometry/level.py:149
+#: c3nav/mapdata/models/geometry/level.py:154
msgid "Door"
msgstr "Tür"
-#: c3nav/mapdata/models/geometry/level.py:150
+#: c3nav/mapdata/models/geometry/level.py:155
msgid "Doors"
msgstr "Türen"
-#: c3nav/mapdata/models/geometry/level.py:159
-#: c3nav/mapdata/models/geometry/space.py:260
+#: c3nav/mapdata/models/geometry/level.py:164
+#: c3nav/mapdata/models/geometry/space.py:270
msgid "altitude"
msgstr "Bodenhöhe"
-#: c3nav/mapdata/models/geometry/level.py:160
+#: c3nav/mapdata/models/geometry/level.py:165
msgid "second altitude"
msgstr "zweite Bodenhöhe"
-#: c3nav/mapdata/models/geometry/level.py:165
+#: c3nav/mapdata/models/geometry/level.py:170
msgid "Altitude Area"
msgstr "Höhenbereich"
-#: c3nav/mapdata/models/geometry/level.py:166
+#: c3nav/mapdata/models/geometry/level.py:171
msgid "Altitude Areas"
msgstr "Höhenbereiche"
-#: c3nav/mapdata/models/geometry/level.py:261
+#: c3nav/mapdata/models/geometry/level.py:277
#, python-format
msgid ""
"AltitudeMarker #%(marker_id)d in Space #%(space_id)d on Level "
@@ -1593,12 +1773,12 @@ msgstr ""
"Höhenmarker #%(marker_id)d in Raum #%(space_id)d auf Etage %(level_label)s "
"ist nicht in einem begehbaren Bereich platziert"
-#: c3nav/mapdata/models/geometry/level.py:575
+#: c3nav/mapdata/models/geometry/level.py:591
#, python-format
msgid "%d altitude areas built."
msgstr "%d Höhenbereiche gebaut."
-#: c3nav/mapdata/models/geometry/level.py:576
+#: c3nav/mapdata/models/geometry/level.py:592
#, python-format
msgid ""
"%(num_modified)d modified, %(num_deleted)d deleted, %(num_created)d created."
@@ -1606,146 +1786,146 @@ msgstr ""
"%(num_modified)d geändert, %(num_deleted)d entfernt, %(num_created)d "
"erstellt."
-#: c3nav/mapdata/models/geometry/space.py:23
-#: c3nav/mapdata/models/geometry/space.py:276
-#: c3nav/mapdata/models/geometry/space.py:313
+#: c3nav/mapdata/models/geometry/space.py:25
+#: c3nav/mapdata/models/geometry/space.py:286
+#: c3nav/mapdata/models/geometry/space.py:323
msgid "space"
msgstr "Raum"
-#: c3nav/mapdata/models/geometry/space.py:52
+#: c3nav/mapdata/models/geometry/space.py:54
#, python-brace-format
msgid "{category}, {space}, {level}"
msgstr "{category}, {space}, {level}"
-#: c3nav/mapdata/models/geometry/space.py:56
+#: c3nav/mapdata/models/geometry/space.py:58
#, python-brace-format
msgid "{category}, {space}"
msgstr "{category}, {space}"
-#: c3nav/mapdata/models/geometry/space.py:106
+#: c3nav/mapdata/models/geometry/space.py:108
msgid "Column"
msgstr "Säule"
-#: c3nav/mapdata/models/geometry/space.py:107
+#: c3nav/mapdata/models/geometry/space.py:109
msgid "Columns"
msgstr "Säulen"
-#: c3nav/mapdata/models/geometry/space.py:116
+#: c3nav/mapdata/models/geometry/space.py:118
msgid "slow down factor"
msgstr "Verlangsamungsfaktor"
-#: c3nav/mapdata/models/geometry/space.py:120
+#: c3nav/mapdata/models/geometry/space.py:122
msgid "Area"
msgstr "Bereich"
-#: c3nav/mapdata/models/geometry/space.py:121
-#: c3nav/mapdata/utils/locations.py:316
+#: c3nav/mapdata/models/geometry/space.py:123
+#: c3nav/mapdata/utils/locations.py:320
msgid "Areas"
msgstr "Bereiche"
-#: c3nav/mapdata/models/geometry/space.py:142
+#: c3nav/mapdata/models/geometry/space.py:148
msgid "Stair"
msgstr "Stufe"
-#: c3nav/mapdata/models/geometry/space.py:143
+#: c3nav/mapdata/models/geometry/space.py:149
msgid "Stairs"
msgstr "Stufen"
-#: c3nav/mapdata/models/geometry/space.py:154
+#: c3nav/mapdata/models/geometry/space.py:160
msgid "Ramp"
msgstr "Rampe"
-#: c3nav/mapdata/models/geometry/space.py:155
+#: c3nav/mapdata/models/geometry/space.py:161
msgid "Ramps"
msgstr "Rampen"
-#: c3nav/mapdata/models/geometry/space.py:168
+#: c3nav/mapdata/models/geometry/space.py:174
msgid "Obstacle"
msgstr "Hindernis"
-#: c3nav/mapdata/models/geometry/space.py:169
+#: c3nav/mapdata/models/geometry/space.py:175
msgid "Obstacles"
msgstr "Hindernisse"
-#: c3nav/mapdata/models/geometry/space.py:183
+#: c3nav/mapdata/models/geometry/space.py:189
msgid "width"
msgstr "Breite"
-#: c3nav/mapdata/models/geometry/space.py:188
+#: c3nav/mapdata/models/geometry/space.py:194
msgid "Line Obstacle"
msgstr "Linienhindernis"
-#: c3nav/mapdata/models/geometry/space.py:189
+#: c3nav/mapdata/models/geometry/space.py:195
msgid "Line Obstacles"
msgstr "Linienhindernisse"
-#: c3nav/mapdata/models/geometry/space.py:224
+#: c3nav/mapdata/models/geometry/space.py:230
msgid "Point of Interest"
msgstr "Ort von Interesse"
-#: c3nav/mapdata/models/geometry/space.py:225
+#: c3nav/mapdata/models/geometry/space.py:231
msgid "Points of Interest"
msgstr "Orte von Interesse"
-#: c3nav/mapdata/models/geometry/space.py:250
+#: c3nav/mapdata/models/geometry/space.py:260
msgid "Hole"
msgstr "Loch"
-#: c3nav/mapdata/models/geometry/space.py:251
+#: c3nav/mapdata/models/geometry/space.py:261
msgid "Holes"
msgstr "Löcher"
-#: c3nav/mapdata/models/geometry/space.py:263
+#: c3nav/mapdata/models/geometry/space.py:273
msgid "Altitude Marker"
msgstr "Höhenmarker"
-#: c3nav/mapdata/models/geometry/space.py:264
+#: c3nav/mapdata/models/geometry/space.py:274
msgid "Altitude Markers"
msgstr "Höhenmarker"
-#: c3nav/mapdata/models/geometry/space.py:277
-#: c3nav/mapdata/models/geometry/space.py:316
+#: c3nav/mapdata/models/geometry/space.py:287
+#: c3nav/mapdata/models/geometry/space.py:326
msgid "target space"
msgstr "Zielraum"
-#: c3nav/mapdata/models/geometry/space.py:279
-#: c3nav/mapdata/models/geometry/space.py:318 c3nav/mapdata/models/graph.py:44
+#: c3nav/mapdata/models/geometry/space.py:289
+#: c3nav/mapdata/models/geometry/space.py:328 c3nav/mapdata/models/graph.py:44
msgid "description"
msgstr "Beschreibung"
-#: c3nav/mapdata/models/geometry/space.py:282
+#: c3nav/mapdata/models/geometry/space.py:292
msgid "Leave description"
msgstr "Verlassensbeschreibung"
-#: c3nav/mapdata/models/geometry/space.py:283
+#: c3nav/mapdata/models/geometry/space.py:293
msgid "Leave descriptions"
msgstr "Verlassensbeschreibungen"
-#: c3nav/mapdata/models/geometry/space.py:314
+#: c3nav/mapdata/models/geometry/space.py:324
msgid "origin space"
msgstr "Ursprungsraum"
-#: c3nav/mapdata/models/geometry/space.py:321
+#: c3nav/mapdata/models/geometry/space.py:331
msgid "Cross description"
msgstr "Durchschreitungsbeschreibung"
-#: c3nav/mapdata/models/geometry/space.py:322
+#: c3nav/mapdata/models/geometry/space.py:332
msgid "Cross descriptions"
msgstr "Durchschreitungsbeschreibungen"
-#: c3nav/mapdata/models/geometry/space.py:356
+#: c3nav/mapdata/models/geometry/space.py:366
msgid "comment"
msgstr "Kommentar"
-#: c3nav/mapdata/models/geometry/space.py:357
+#: c3nav/mapdata/models/geometry/space.py:367
msgid "Measurement list"
msgstr "Messungsliste"
-#: c3nav/mapdata/models/geometry/space.py:360
+#: c3nav/mapdata/models/geometry/space.py:370
msgid "Wi-Fi Measurement"
msgstr "WLAN Messung"
-#: c3nav/mapdata/models/geometry/space.py:361
+#: c3nav/mapdata/models/geometry/space.py:371
msgid "Wi-Fi Measurements"
msgstr "WLAN Messungen"
@@ -1757,7 +1937,7 @@ msgstr "Graphknoten"
msgid "Graph Nodes"
msgstr "Graphknoten"
-#: c3nav/mapdata/models/graph.py:35 c3nav/mapdata/models/locations.py:184
+#: c3nav/mapdata/models/graph.py:35 c3nav/mapdata/models/locations.py:203
msgid "Title (Plural)"
msgstr "Titel (Plural)"
@@ -1853,108 +2033,116 @@ msgstr "Etagen"
msgid "default height"
msgstr "Standarddeckenhöhe"
-#: c3nav/mapdata/models/locations.py:45 c3nav/mapdata/models/locations.py:65
-#: c3nav/mapdata/utils/locations.py:303
+#: c3nav/mapdata/models/locations.py:46 c3nav/mapdata/models/locations.py:66
+#: c3nav/mapdata/utils/locations.py:307
msgid "Slug"
msgstr "Slug"
-#: c3nav/mapdata/models/locations.py:73 c3nav/mapdata/models/locations.py:74
+#: c3nav/mapdata/models/locations.py:74 c3nav/mapdata/models/locations.py:75
msgid "Location with Slug"
msgstr "Ort mit Slug"
-#: c3nav/mapdata/models/locations.py:79
+#: c3nav/mapdata/models/locations.py:80
msgid "can be searched"
msgstr "zur Suche zugelassen"
-#: c3nav/mapdata/models/locations.py:80 c3nav/mapdata/models/locations.py:103
+#: c3nav/mapdata/models/locations.py:81 c3nav/mapdata/models/locations.py:105
msgid "can describe"
msgstr "beschreibend"
-#: c3nav/mapdata/models/locations.py:102
+#: c3nav/mapdata/models/locations.py:104
msgid "searchable"
msgstr "suchbar"
-#: c3nav/mapdata/models/locations.py:129 c3nav/mapdata/models/locations.py:243
+#: c3nav/mapdata/models/locations.py:135 c3nav/mapdata/models/locations.py:262
msgid "Location Groups"
msgstr "Ortgruppen"
-#: c3nav/mapdata/models/locations.py:181 c3nav/mapdata/models/source.py:15
+#: c3nav/mapdata/models/locations.py:166
+msgid "Grid Squares"
+msgstr "Planquadrate"
+
+#: c3nav/mapdata/models/locations.py:166 c3nav/mapdata/utils/locations.py:326
+msgid "Grid Square"
+msgstr "Planquadrat"
+
+#: c3nav/mapdata/models/locations.py:200 c3nav/mapdata/models/source.py:15
msgid "Name"
msgstr "Name"
-#: c3nav/mapdata/models/locations.py:182
+#: c3nav/mapdata/models/locations.py:201
msgid "single selection"
msgstr "nur eine Auswahl möglich"
-#: c3nav/mapdata/models/locations.py:185
+#: c3nav/mapdata/models/locations.py:204
msgid "allow levels"
msgstr "bei Etagen erlauben"
-#: c3nav/mapdata/models/locations.py:186
+#: c3nav/mapdata/models/locations.py:205
msgid "allow spaces"
msgstr "bei Räumen erlauben"
-#: c3nav/mapdata/models/locations.py:187
+#: c3nav/mapdata/models/locations.py:206
msgid "allow areas"
msgstr "bei Bereichen erlauben"
-#: c3nav/mapdata/models/locations.py:188
+#: c3nav/mapdata/models/locations.py:207
msgid "allow pois"
msgstr "bei POI erlauben"
-#: c3nav/mapdata/models/locations.py:196
+#: c3nav/mapdata/models/locations.py:215
msgid "Location Group Category"
msgstr "Ortgruppenkategorie"
-#: c3nav/mapdata/models/locations.py:197
+#: c3nav/mapdata/models/locations.py:216
msgid "Location Group Categories"
msgstr "Ortgruppenkategorien"
-#: c3nav/mapdata/models/locations.py:235 c3nav/mapdata/models/locations.py:263
+#: c3nav/mapdata/models/locations.py:254 c3nav/mapdata/models/locations.py:282
msgid "Category"
msgstr "Kategorie"
-#: c3nav/mapdata/models/locations.py:237
+#: c3nav/mapdata/models/locations.py:256
msgid "background color"
msgstr "Hintergrundfarbe"
-#: c3nav/mapdata/models/locations.py:242
+#: c3nav/mapdata/models/locations.py:261
msgid "Location Group"
msgstr "Ortgruppe"
-#: c3nav/mapdata/models/locations.py:265 c3nav/mapdata/models/locations.py:280
+#: c3nav/mapdata/models/locations.py:284 c3nav/mapdata/models/locations.py:299
msgid "color"
msgstr "Farbe"
-#: c3nav/mapdata/models/locations.py:266
+#: c3nav/mapdata/models/locations.py:285
msgid "priority"
msgstr "Priorität"
-#: c3nav/mapdata/models/locations.py:276
+#: c3nav/mapdata/models/locations.py:295
msgid "search"
msgstr "suchen"
-#: c3nav/mapdata/models/locations.py:278
+#: c3nav/mapdata/models/locations.py:297
msgid "describe"
msgstr "beschreiben"
-#: c3nav/mapdata/models/locations.py:282
+#: c3nav/mapdata/models/locations.py:301
msgid "internal"
msgstr "intern"
-#: c3nav/mapdata/models/locations.py:299
+#: c3nav/mapdata/models/locations.py:318
#, python-brace-format
msgid "{category_title}, {num_locations}"
msgstr "{category_title}, {num_locations}"
-#: c3nav/mapdata/models/locations.py:301
+#: c3nav/mapdata/models/locations.py:320
#, python-format
msgid "%(num)d location"
msgid_plural "%(num)d locations"
msgstr[0] "%(num)d Ort"
msgstr[1] "%(num)d Orte"
-#: c3nav/mapdata/models/locations.py:323
+#: c3nav/mapdata/models/locations.py:342
msgid "target"
msgstr "Ziel"
@@ -1966,80 +2154,88 @@ msgstr "Vorlage"
msgid "Sources"
msgstr "Vorlagen"
-#: c3nav/mapdata/models/update.py:28
-msgid "Map update"
-msgstr "Kartenupdate"
+#: c3nav/mapdata/models/update.py:22
+msgid "changeset applied"
+msgstr "Ä'nderungsset angewendet"
-#: c3nav/mapdata/models/update.py:29
-msgid "Map updates"
-msgstr "Kartenupdates"
+#: c3nav/mapdata/models/update.py:23
+msgid "direct edit"
+msgstr "direktes Bearbeiten"
+
+#: c3nav/mapdata/models/update.py:24
+msgid "via control panel"
+msgstr "via Control Panel"
+
+#: c3nav/mapdata/models/update.py:34
+msgid "Map update"
+msgstr "Kartenänderung"
#: c3nav/mapdata/tasks.py:36
#, python-format
msgid "%d map update processed."
msgid_plural "%d map updates processed."
-msgstr[0] "%d Kartenupdate verarbeitet."
-msgstr[1] "%d Kartenupdates verarbeitet."
+msgstr[0] "%d Kartenänderung verarbeitet."
+msgstr[1] "%d Kartenänderungen verarbeitet."
#: c3nav/mapdata/tasks.py:39
#, python-format
msgid "Last processed update: %(date)s (#%(id)d)"
msgstr "Letztes verarbeitetes Update: %(date)s (#%(id)d)"
-#: c3nav/mapdata/utils/locations.py:301
+#: c3nav/mapdata/utils/locations.py:305
msgid "Coordinates"
msgstr "Koordinaten"
-#: c3nav/mapdata/utils/locations.py:322
+#: c3nav/mapdata/utils/locations.py:327
msgid "Near Area"
msgstr "Naher Bereich"
-#: c3nav/mapdata/utils/locations.py:328
+#: c3nav/mapdata/utils/locations.py:333
msgid "Near POI"
msgstr "Naher POI"
-#: c3nav/mapdata/utils/locations.py:334
+#: c3nav/mapdata/utils/locations.py:339
msgid "X Coordinate"
msgstr "X-Koordinate"
-#: c3nav/mapdata/utils/locations.py:335
+#: c3nav/mapdata/utils/locations.py:340
msgid "Y Coordinate"
msgstr "Y-Koordinate"
-#: c3nav/mapdata/utils/locations.py:336
+#: c3nav/mapdata/utils/locations.py:341
msgid "Altitude"
msgstr "Höhe"
-#: c3nav/mapdata/utils/locations.py:338
+#: c3nav/mapdata/utils/locations.py:343
msgid "Subtitle"
msgstr "Untertitel"
-#: c3nav/mapdata/utils/locations.py:370
+#: c3nav/mapdata/utils/locations.py:385
#, python-format
msgid "In %(level)s"
msgstr "In %(level)s"
-#: c3nav/mapdata/utils/locations.py:376
+#: c3nav/mapdata/utils/locations.py:391
#, python-format
msgid "Near %(poi)s"
msgstr "Nahe %(poi)s"
-#: c3nav/mapdata/utils/locations.py:380
+#: c3nav/mapdata/utils/locations.py:395
#, python-format
msgid "near %(area)s"
msgstr "nahe %(area)s"
-#: c3nav/mapdata/utils/locations.py:382
+#: c3nav/mapdata/utils/locations.py:397
#, python-format
msgid "In %(area)s"
msgstr "Nahe %(area)s"
-#: c3nav/mapdata/utils/locations.py:386
+#: c3nav/mapdata/utils/locations.py:401
#, python-format
msgid "Near %(area)s"
msgstr "Nahe %(area)s"
-#: c3nav/mapdata/utils/locations.py:388
+#: c3nav/mapdata/utils/locations.py:403
#, python-format
msgid "In %(space)s"
msgstr "In %(space)s"
@@ -2120,7 +2316,7 @@ msgid "Invalid Scan. Invalid last timestamp."
msgstr "Invalider Scan. Letzter Zeitstempel ungültig."
#: c3nav/routing/models.py:20 c3nav/routing/models.py:21
-#: c3nav/site/templates/site/map.html:133
+#: c3nav/site/templates/site/map.html:134
msgid "Route options"
msgstr "Routenoptionen"
@@ -2212,11 +2408,11 @@ msgstr "einige Wegtypen vermieden"
msgid "default options"
msgstr "Standardoptionen"
-#: c3nav/settings.py:275
+#: c3nav/settings.py:281
msgid "English"
msgstr "Englisch"
-#: c3nav/settings.py:276
+#: c3nav/settings.py:282
msgid "German"
msgstr "Deutsch"
@@ -2269,91 +2465,91 @@ msgstr "Editor"
msgid "API"
msgstr "API"
-#: c3nav/site/templates/site/map.html:31
+#: c3nav/site/templates/site/map.html:32
msgid "Show only this location"
msgstr "Nur diesen Ort anzeigen"
-#: c3nav/site/templates/site/map.html:32
+#: c3nav/site/templates/site/map.html:33
msgid "Route to here"
msgstr "Route hierhin"
-#: c3nav/site/templates/site/map.html:33
+#: c3nav/site/templates/site/map.html:34
msgid "Route from here"
msgstr "Route von hier aus"
-#: c3nav/site/templates/site/map.html:36 c3nav/site/templates/site/map.html:78
+#: c3nav/site/templates/site/map.html:37 c3nav/site/templates/site/map.html:79
msgid "Share"
msgstr "Teilen"
-#: c3nav/site/templates/site/map.html:40
+#: c3nav/site/templates/site/map.html:41
msgid "share"
msgstr "Teilen"
-#: c3nav/site/templates/site/map.html:41
+#: c3nav/site/templates/site/map.html:42
msgid "create shortcut"
msgstr "Verknüpfung anlegen"
-#: c3nav/site/templates/site/map.html:45
+#: c3nav/site/templates/site/map.html:46
msgid "Wifi-based location"
msgstr "WLAN-basierte Ortung"
-#: c3nav/site/templates/site/map.html:46
+#: c3nav/site/templates/site/map.html:47
msgid "Get the c3nav app for Android to see your location on the map."
msgstr ""
"Hole dir die c3nav-App für Android um deine Position auf der Karte zu sehen."
-#: c3nav/site/templates/site/map.html:58 c3nav/site/templates/site/map.html:65
+#: c3nav/site/templates/site/map.html:59 c3nav/site/templates/site/map.html:66
msgid "Search any location…"
msgstr "Suche einen beliebigen Ort…"
-#: c3nav/site/templates/site/map.html:82
+#: c3nav/site/templates/site/map.html:83
msgid "Route"
msgstr "Route"
-#: c3nav/site/templates/site/map.html:94 c3nav/site/templates/site/map.html:104
+#: c3nav/site/templates/site/map.html:95 c3nav/site/templates/site/map.html:105
msgid "Swap"
msgstr "Vertauschen"
-#: c3nav/site/templates/site/map.html:98
+#: c3nav/site/templates/site/map.html:99
msgid "Close"
msgstr "Schließen"
-#: c3nav/site/templates/site/map.html:118
+#: c3nav/site/templates/site/map.html:119
msgid "Open in Editor"
msgstr "Im Editor öffnen"
-#: c3nav/site/templates/site/map.html:138
+#: c3nav/site/templates/site/map.html:139
msgid "Save and reroute"
msgstr "Speichern und neu routen"
-#: c3nav/site/templates/site/map.html:139
+#: c3nav/site/templates/site/map.html:140
msgid "Just reroute"
msgstr "Nur neu routen"
-#: c3nav/site/views.py:69 c3nav/site/views.py:307
+#: c3nav/site/views.py:71 c3nav/site/views.py:317
msgid "You need to log in to unlock areas."
msgstr "Du musst dich anmelden um Bereiche freizuschalten."
-#: c3nav/site/views.py:195
+#: c3nav/site/views.py:205
msgid "Areas could not be unlocked because the token has expired."
msgstr ""
"Zugangserlaubnis konnte nicht gewährt werden weil der Code abgelaufen ist."
-#: c3nav/site/views.py:238
+#: c3nav/site/views.py:248
msgid "account creation is currently disabled."
msgstr "Benutzerregistrierung ist momentan deaktiviert."
-#: c3nav/site/views.py:300
+#: c3nav/site/views.py:310
msgid "This token does not exist or was already redeemed."
msgstr "Dieser Code existiert nicht oder wurde bereits eingelöst."
-#: c3nav/site/views.py:320
+#: c3nav/site/views.py:330
msgid "Unlock area"
msgid_plural "Unlock areas"
msgstr[0] "Bereich freischalten"
msgstr[1] "Bereiche freischalten"
-#: c3nav/site/views.py:321
+#: c3nav/site/views.py:331
msgid "You have been invited to unlock the following area:"
msgid_plural "You have been invited to unlock the following areas:"
msgstr[0] "Du wurdest eingeladen, den folgenden Bereich freizuschalten:"
diff --git a/src/c3nav/mapdata/models/update.py b/src/c3nav/mapdata/models/update.py
index de1adca5..6693361d 100644
--- a/src/c3nav/mapdata/models/update.py
+++ b/src/c3nav/mapdata/models/update.py
@@ -22,7 +22,7 @@ class MapUpdate(models.Model):
('changeset', _('changeset applied')),
('direct_edit', _('direct edit')),
('control_panel', _('via control panel')),
- ('management', _('manage.py clearmapcache')),
+ ('management', 'manage.py clearmapcache'),
)
datetime = models.DateTimeField(auto_now_add=True, db_index=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT)