API Write Access with OAuth2 #104

This commit is contained in:
Daniel Grams 2021-02-09 12:14:27 +01:00
parent c5c14f9675
commit 67d87047a0
6 changed files with 243 additions and 80 deletions

View File

@ -48,7 +48,7 @@ pybabel extract -F babel.cfg -o messages.pot . && pybabel extract -F babel.cfg -
### Extract new msgid's and merge into *.po files ### Extract new msgid's and merge into *.po files
```sh ```sh
pybabel extract -F babel.cfg -o messages.pot . && pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot . && pybabel update -i messages.pot -d project/translations pybabel extract -F babel.cfg -o messages.pot . && pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot . && pybabel update -N -i messages.pot -d project/translations
``` ```
#### Compile after translation is done #### Compile after translation is done

View File

@ -12,6 +12,7 @@ from flask_mail import Mail, email_dispatched
from flask_migrate import Migrate from flask_migrate import Migrate
from flask_gzip import Gzip from flask_gzip import Gzip
from webargs import flaskparser from webargs import flaskparser
from project.custom_session_interface import CustomSessionInterface
# Create app # Create app
app = Flask(__name__) app = Flask(__name__)
@ -102,6 +103,7 @@ from project.forms.security import ExtendedRegisterForm
user_datastore = SQLAlchemySessionUserDatastore(db.session, User, Role) user_datastore = SQLAlchemySessionUserDatastore(db.session, User, Role)
security = Security(app, user_datastore, register_form=ExtendedRegisterForm) security = Security(app, user_datastore, register_form=ExtendedRegisterForm)
app.session_interface = CustomSessionInterface()
# OAuth2 # OAuth2
from project.oauth2 import config_oauth from project.oauth2 import config_oauth

View File

@ -0,0 +1,11 @@
from flask import request
from flask.sessions import SecureCookieSessionInterface
class CustomSessionInterface(SecureCookieSessionInterface):
"""Prevent creating session from API requests."""
def save_session(self, *args, **kwargs):
if "authorization" in request.headers:
return
return super(CustomSessionInterface, self).save_session(*args, **kwargs)

View File

@ -9,7 +9,7 @@
<div class="w-normal"> <div class="w-normal">
{{ render_event_props(event, event.start, event.end, dates, user_rights['can_verify_event']) }} {{ render_event_props(event, event.start, event.end, dates, user_rights['can_update_event']) }}
{% if dates|length > 0 %} {% if dates|length > 0 %}
<div class="card mt-4"> <div class="card mt-4">

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-01-30 14:40+0100\n" "POT-Creation-Date: 2021-02-09 11:19+0100\n"
"PO-Revision-Date: 2020-06-07 18:51+0200\n" "PO-Revision-Date: 2020-06-07 18:51+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n" "Language: de\n"
@ -138,11 +138,51 @@ msgstr "Verifiziert"
msgid "EventReviewStatus.rejected" msgid "EventReviewStatus.rejected"
msgstr "Abgelehnt" msgstr "Abgelehnt"
#: project/utils.py:7 #: project/i10n.py:42
msgid "read"
msgstr "Lesen"
#: project/i10n.py:43
msgid "write"
msgstr "Schreiben"
#: project/i10n.py:44 project/templates/_macros.html:381
#: project/templates/event/actions.html:12
#: project/templates/event/create.html:62
#: project/templates/event/delete.html:13
#: project/templates/event/update.html:18
#: project/templates/reference/delete.html:13
#: project/templates/widget/event_suggestion/create.html:180
msgid "Event"
msgstr "Veranstaltung"
#: project/forms/event.py:265 project/forms/event.py:274
#: project/forms/event.py:326 project/forms/event.py:372
#: project/forms/event_suggestion.py:56 project/i10n.py:45
#: project/templates/_macros.html:456 project/templates/event/create.html:83
#: project/templates/event/update.html:49
#: project/templates/organizer/create.html:17
#: project/templates/organizer/delete.html:13
#: project/templates/organizer/update.html:17
msgid "Organizer"
msgstr "Veranstalter"
#: project/forms/event.py:249 project/forms/event.py:258
#: project/forms/event.py:318 project/forms/event_suggestion.py:49
#: project/i10n.py:46 project/templates/_macros.html:426
#: project/templates/event/create.html:108
#: project/templates/event/update.html:58
#: project/templates/event_place/create.html:21
#: project/templates/event_place/delete.html:13
#: project/templates/event_place/update.html:21
msgid "Place"
msgstr "Ort"
#: project/utils.py:9
msgid "Event_" msgid "Event_"
msgstr "Event_" msgstr "Event_"
#: project/utils.py:11 #: project/utils.py:13
msgid "." msgid "."
msgstr "." msgstr "."
@ -156,7 +196,7 @@ msgstr "Nutzungsbedingungen"
msgid "Legal notice" msgid "Legal notice"
msgstr "Impressum" msgstr "Impressum"
#: project/forms/admin.py:11 project/templates/_macros.html:993 #: project/forms/admin.py:11 project/templates/_macros.html:1008
#: project/templates/layout.html:175 #: project/templates/layout.html:175
#: project/templates/widget/event_suggestion/create.html:155 #: project/templates/widget/event_suggestion/create.html:155
#: project/views/root.py:42 #: project/views/root.py:42
@ -168,12 +208,12 @@ msgstr "Kontakt"
msgid "Privacy" msgid "Privacy"
msgstr "Datenschutz" msgstr "Datenschutz"
#: project/forms/admin.py:14 #: project/forms/admin.py:14 project/forms/oauth2_client.py:47
msgid "Save" msgid "Save"
msgstr "Speichern" msgstr "Speichern"
#: project/forms/admin.py:18 project/forms/admin_unit_member.py:11 #: project/forms/admin.py:18 project/forms/admin_unit_member.py:11
#: project/forms/admin_unit_member.py:31 project/templates/profile.html:40 #: project/forms/admin_unit_member.py:31 project/templates/profile.html:56
msgid "Roles" msgid "Roles"
msgstr "Rollen" msgstr "Rollen"
@ -232,12 +272,14 @@ msgstr "Längengrad"
#: project/forms/admin_unit.py:30 project/forms/event.py:39 #: project/forms/admin_unit.py:30 project/forms/event.py:39
#: project/forms/event.py:68 project/forms/event.py:358 #: project/forms/event.py:68 project/forms/event.py:358
#: project/forms/event_place.py:30 project/forms/event_place.py:55 #: project/forms/event_place.py:30 project/forms/event_place.py:55
#: project/forms/event_suggestion.py:25 project/forms/organizer.py:29 #: project/forms/event_suggestion.py:25 project/forms/oauth2_client.py:92
#: project/forms/organizer.py:56 project/forms/reference.py:39 #: project/forms/organizer.py:29 project/forms/organizer.py:56
#: project/forms/reference_request.py:21 project/templates/_macros.html:117 #: project/forms/reference.py:39 project/forms/reference_request.py:21
#: project/templates/_macros.html:117
#: project/templates/admin/admin_units.html:19 #: project/templates/admin/admin_units.html:19
#: project/templates/event_place/list.html:19 project/templates/profile.html:19 #: project/templates/event_place/list.html:19
#: project/templates/profile.html:39 #: project/templates/oauth2_client/list.html:25
#: project/templates/profile.html:35 project/templates/profile.html:55
msgid "Name" msgid "Name"
msgstr "Name" msgstr "Name"
@ -265,19 +307,19 @@ msgstr "Link URL"
#: project/forms/admin_unit.py:47 project/forms/admin_unit_member.py:10 #: project/forms/admin_unit.py:47 project/forms/admin_unit_member.py:10
#: project/forms/admin_unit_member.py:22 project/forms/admin_unit_member.py:27 #: project/forms/admin_unit_member.py:22 project/forms/admin_unit_member.py:27
#: project/forms/event.py:61 project/forms/event_suggestion.py:37 #: project/forms/event.py:61 project/forms/event_suggestion.py:37
#: project/forms/organizer.py:31 project/templates/_macros.html:229 #: project/forms/organizer.py:31 project/templates/_macros.html:244
#: project/templates/admin/users.html:19 #: project/templates/admin/users.html:19
msgid "Email" msgid "Email"
msgstr "Email" msgstr "Email"
#: project/forms/admin_unit.py:48 project/forms/event.py:62 #: project/forms/admin_unit.py:48 project/forms/event.py:62
#: project/forms/event_suggestion.py:30 project/forms/organizer.py:32 #: project/forms/event_suggestion.py:30 project/forms/organizer.py:32
#: project/templates/_macros.html:266 #: project/templates/_macros.html:281
msgid "Phone" msgid "Phone"
msgstr "Telefon" msgstr "Telefon"
#: project/forms/admin_unit.py:49 project/forms/event.py:63 #: project/forms/admin_unit.py:49 project/forms/event.py:63
#: project/forms/organizer.py:33 project/templates/_macros.html:274 #: project/forms/organizer.py:33 project/templates/_macros.html:289
msgid "Fax" msgid "Fax"
msgstr "Fax" msgstr "Fax"
@ -481,7 +523,7 @@ msgstr "Ticket Link"
msgid "Enter a link where tickets can be purchased." msgid "Enter a link where tickets can be purchased."
msgstr "Gib einen Link ein, über den Tickets gekauft werden können." msgstr "Gib einen Link ein, über den Tickets gekauft werden können."
#: project/forms/event.py:109 project/templates/_macros.html:211 #: project/forms/event.py:109 project/templates/_macros.html:226
msgid "Tags" msgid "Tags"
msgstr "Stichworte" msgstr "Stichworte"
@ -534,7 +576,7 @@ msgstr "Anmeldung erforderlich"
msgid "If the participants needs to register for the event." msgid "If the participants needs to register for the event."
msgstr "Wenn sich die Teilnehmer für die Veranstaltung anmelden müssen." msgstr "Wenn sich die Teilnehmer für die Veranstaltung anmelden müssen."
#: project/forms/event.py:143 project/templates/_macros.html:243 #: project/forms/event.py:143 project/templates/_macros.html:258
#: project/templates/layout.html:81 #: project/templates/layout.html:81
msgid "Booked up" msgid "Booked up"
msgstr "Ausgebucht" msgstr "Ausgebucht"
@ -628,7 +670,7 @@ msgstr "Der Start muss vor dem Ende sein."
msgid "An event can last a maximum of 24 hours." msgid "An event can last a maximum of 24 hours."
msgstr "Eine Veranstaltung darf maximal 24 Stunden dauern." msgstr "Eine Veranstaltung darf maximal 24 Stunden dauern."
#: project/forms/event.py:224 project/templates/_macros.html:387 #: project/forms/event.py:224 project/templates/_macros.html:402
msgid "Previous start date" msgid "Previous start date"
msgstr "Vorheriges Startdatum" msgstr "Vorheriges Startdatum"
@ -658,16 +700,6 @@ msgstr "Bewertung"
msgid "Choose how relevant the event is to your organization." msgid "Choose how relevant the event is to your organization."
msgstr "Wähle aus, wie relevant die Veranstaltung für deine Organisation ist." msgstr "Wähle aus, wie relevant die Veranstaltung für deine Organisation ist."
#: project/forms/event.py:249 project/forms/event.py:258
#: project/forms/event.py:318 project/forms/event_suggestion.py:49
#: project/templates/_macros.html:411 project/templates/event/create.html:108
#: project/templates/event/update.html:58
#: project/templates/event_place/create.html:21
#: project/templates/event_place/delete.html:13
#: project/templates/event_place/update.html:21
msgid "Place"
msgstr "Ort"
#: project/forms/event.py:251 #: project/forms/event.py:251
msgid "Select existing place" msgid "Select existing place"
msgstr "Vorhandenen Ort auswählen" msgstr "Vorhandenen Ort auswählen"
@ -676,17 +708,6 @@ msgstr "Vorhandenen Ort auswählen"
msgid "Enter new place" msgid "Enter new place"
msgstr "Neuen Ort eingeben" msgstr "Neuen Ort eingeben"
#: project/forms/event.py:265 project/forms/event.py:274
#: project/forms/event.py:326 project/forms/event.py:372
#: project/forms/event_suggestion.py:56 project/templates/_macros.html:441
#: project/templates/event/create.html:83
#: project/templates/event/update.html:49
#: project/templates/organizer/create.html:17
#: project/templates/organizer/delete.html:13
#: project/templates/organizer/update.html:17
msgid "Organizer"
msgstr "Veranstalter"
#: project/forms/event.py:267 #: project/forms/event.py:267
msgid "Select existing organizer" msgid "Select existing organizer"
msgstr "Vorhandenen Veranstalter auswählen" msgstr "Vorhandenen Veranstalter auswählen"
@ -727,6 +748,7 @@ msgstr ""
"Veranstalter hinzufügen und ändern." "Veranstalter hinzufügen und ändern."
#: project/forms/event.py:335 project/templates/event/update.html:39 #: project/forms/event.py:335 project/templates/event/update.html:39
#: project/templates/oauth2_token/list.html:21
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
@ -763,7 +785,7 @@ msgstr "Wähle den Status der Veranstaltung."
msgid "Update event" msgid "Update event"
msgstr "Veranstaltung aktualisieren" msgstr "Veranstaltung aktualisieren"
#: project/forms/event.py:357 project/templates/_macros.html:942 #: project/forms/event.py:357 project/templates/_macros.html:957
#: project/templates/event/actions.html:41 #: project/templates/event/actions.html:41
#: project/templates/event/delete.html:6 #: project/templates/event/delete.html:6
msgid "Delete event" msgid "Delete event"
@ -784,7 +806,7 @@ msgid "Keyword"
msgstr "Stichwort" msgstr "Stichwort"
#: project/forms/event.py:369 project/forms/event_date.py:23 #: project/forms/event.py:369 project/forms/event_date.py:23
#: project/forms/planing.py:16 project/templates/_macros.html:350 #: project/forms/planing.py:16 project/templates/_macros.html:365
msgid "Category" msgid "Category"
msgstr "Kategorie" msgstr "Kategorie"
@ -793,7 +815,7 @@ msgid "Find events"
msgstr "Veranstaltungen finden" msgstr "Veranstaltungen finden"
#: project/forms/event_date.py:26 project/forms/planing.py:19 #: project/forms/event_date.py:26 project/forms/planing.py:19
#: project/templates/_macros.html:119 project/templates/_macros.html:281 #: project/templates/_macros.html:119 project/templates/_macros.html:296
#: project/templates/admin_unit/create.html:27 #: project/templates/admin_unit/create.html:27
#: project/templates/admin_unit/update.html:28 #: project/templates/admin_unit/update.html:28
#: project/templates/event_place/create.html:30 #: project/templates/event_place/create.html:30
@ -891,6 +913,56 @@ msgstr "Unzulässig"
msgid "Reject event suggestion" msgid "Reject event suggestion"
msgstr "Vorgeschlagene Veranstaltung ablehnen" msgstr "Vorgeschlagene Veranstaltung ablehnen"
#: project/forms/oauth2_client.py:12
msgid "Client name"
msgstr "Client name"
#: project/forms/oauth2_client.py:14
msgid "Redirect URIs"
msgstr "Redirect URIs"
#: project/forms/oauth2_client.py:17
msgid "Grant types"
msgstr "Grant types"
#: project/forms/oauth2_client.py:20
msgid "Authorization Code"
msgstr "Authorization Code"
#: project/forms/oauth2_client.py:21
msgid "Refresh Token"
msgstr "Refresh Token"
#: project/forms/oauth2_client.py:26
msgid "Response types"
msgstr "Response types"
#: project/forms/oauth2_client.py:34
#: project/templates/oauth2_token/list.html:20
msgid "Scopes"
msgstr "Scopes"
#: project/forms/oauth2_client.py:39
msgid "Token endpoint auth method"
msgstr "Token endpoint auth method"
#: project/forms/oauth2_client.py:42
msgid "Client secret post"
msgstr "Client secret post"
#: project/forms/oauth2_client.py:43
msgid "Client secret basic"
msgstr "Client secret basic"
#: project/forms/oauth2_client.py:91
#: project/templates/oauth2_client/delete.html:6
msgid "Delete OAuth2 client"
msgstr "OAuth2 Client löschen"
#: project/forms/oauth2_token.py:7 project/templates/oauth2_token/revoke.html:6
msgid "Revoke OAuth2 token"
msgstr "OAuth2 Token widerrufen"
#: project/forms/organizer.py:47 project/templates/manage/organizers.html:12 #: project/forms/organizer.py:47 project/templates/manage/organizers.html:12
#: project/templates/organizer/create.html:11 #: project/templates/organizer/create.html:11
msgid "Create organizer" msgid "Create organizer"
@ -909,7 +981,7 @@ msgid "Weekdays"
msgstr "Wochentage" msgstr "Wochentage"
#: project/forms/reference.py:10 project/forms/reference_request.py:14 #: project/forms/reference.py:10 project/forms/reference_request.py:14
#: project/templates/_macros.html:462 #: project/templates/_macros.html:477
#: project/templates/admin_unit/create.html:17 #: project/templates/admin_unit/create.html:17
#: project/templates/admin_unit/update.html:18 #: project/templates/admin_unit/update.html:18
msgid "Admin unit" msgid "Admin unit"
@ -936,7 +1008,7 @@ msgstr "Anfrage speichern"
msgid "Delete request" msgid "Delete request"
msgstr "Anfrage löschen" msgstr "Anfrage löschen"
#: project/forms/reference_request.py:26 project/templates/_macros.html:1005 #: project/forms/reference_request.py:26 project/templates/_macros.html:1020
#: project/templates/event_suggestion/review_status.html:18 #: project/templates/event_suggestion/review_status.html:18
#: project/templates/reference_request/review_status.html:12 #: project/templates/reference_request/review_status.html:12
msgid "Review status" msgid "Review status"
@ -974,6 +1046,14 @@ msgstr "Unzulässig"
msgid "Save review" msgid "Save review"
msgstr "Prüfung speichern" msgstr "Prüfung speichern"
#: project/forms/security.py:28
msgid "Allow"
msgstr "Erlauben"
#: project/forms/security.py:29
msgid "Deny"
msgstr "Ablehnen"
#: project/forms/widgets.py:146 project/templates/_macros.html:58 #: project/forms/widgets.py:146 project/templates/_macros.html:58
msgid "This field is required." msgid "This field is required."
msgstr "Dieses Feld ist erforderlich." msgstr "Dieses Feld ist erforderlich."
@ -982,8 +1062,8 @@ msgstr "Dieses Feld ist erforderlich."
msgid "This field is optional." msgid "This field is optional."
msgstr "Dieses Feld ist optional." msgstr "Dieses Feld ist optional."
#: project/templates/_macros.html:116 project/templates/_macros.html:373 #: project/templates/_macros.html:116 project/templates/_macros.html:388
#: project/templates/_macros.html:380 project/templates/_macros.html:624 #: project/templates/_macros.html:395 project/templates/_macros.html:639
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
@ -999,53 +1079,44 @@ msgstr "Alle Veranstaltungen anzeigen"
msgid "Show on Google Maps" msgid "Show on Google Maps"
msgstr "Auf Google Maps anzeigen" msgstr "Auf Google Maps anzeigen"
#: project/templates/_macros.html:220 #: project/templates/_macros.html:235
msgid "Link" msgid "Link"
msgstr "Link" msgstr "Link"
#: project/templates/_macros.html:327 #: project/templates/_macros.html:342
#, python-format #, python-format
msgid "Created at %(created_at)s by %(created_by)s." msgid "Created at %(created_at)s by %(created_by)s."
msgstr "Erstellt am %(created_at)s von %(created_by)s." msgstr "Erstellt am %(created_at)s von %(created_by)s."
#: project/templates/_macros.html:329 #: project/templates/_macros.html:344
#, python-format #, python-format
msgid "Created at %(created_at)s." msgid "Created at %(created_at)s."
msgstr "Erstellt am %(created_at)s." msgstr "Erstellt am %(created_at)s."
#: project/templates/_macros.html:334 #: project/templates/_macros.html:349
#, python-format #, python-format
msgid "Last updated at %(updated_at)s by %(updated_by)s." msgid "Last updated at %(updated_at)s by %(updated_by)s."
msgstr "Zuletzt aktualisiert am %(updated_at)s von %(updated_by)s." msgstr "Zuletzt aktualisiert am %(updated_at)s von %(updated_by)s."
#: project/templates/_macros.html:336 #: project/templates/_macros.html:351
#, python-format #, python-format
msgid "Last updated at %(updated_at)s." msgid "Last updated at %(updated_at)s."
msgstr "Zuletzt aktualisiert am %(updated_at)s." msgstr "Zuletzt aktualisiert am %(updated_at)s."
#: project/templates/_macros.html:366 project/templates/event/actions.html:12 #: project/templates/_macros.html:391
#: project/templates/event/create.html:62
#: project/templates/event/delete.html:13
#: project/templates/event/update.html:18
#: project/templates/reference/delete.html:13
#: project/templates/widget/event_suggestion/create.html:180
msgid "Event"
msgstr "Veranstaltung"
#: project/templates/_macros.html:376
#, python-format #, python-format
msgid "%(count)d event dates" msgid "%(count)d event dates"
msgstr "%(count)d Termine" msgstr "%(count)d Termine"
#: project/templates/_macros.html:431 #: project/templates/_macros.html:446
msgid "Show directions" msgid "Show directions"
msgstr "Anreise planen" msgstr "Anreise planen"
#: project/templates/_macros.html:543 #: project/templates/_macros.html:558
msgid "Search location on Google" msgid "Search location on Google"
msgstr "Ort bei Google suchen" msgstr "Ort bei Google suchen"
#: project/templates/_macros.html:575 project/templates/_macros.html:577 #: project/templates/_macros.html:590 project/templates/_macros.html:592
#: project/templates/event_date/list.html:272 #: project/templates/event_date/list.html:272
#: project/templates/widget/event_suggestion/create.html:144 #: project/templates/widget/event_suggestion/create.html:144
#: project/templates/widget/event_suggestion/create.html:169 #: project/templates/widget/event_suggestion/create.html:169
@ -1056,7 +1127,7 @@ msgstr "Ort bei Google suchen"
msgid "Previous" msgid "Previous"
msgstr "Zurück" msgstr "Zurück"
#: project/templates/_macros.html:580 project/templates/_macros.html:582 #: project/templates/_macros.html:595 project/templates/_macros.html:597
#: project/templates/event_date/list.html:273 #: project/templates/event_date/list.html:273
#: project/templates/widget/event_suggestion/create.html:145 #: project/templates/widget/event_suggestion/create.html:145
#: project/templates/widget/event_suggestion/create.html:170 #: project/templates/widget/event_suggestion/create.html:170
@ -1066,39 +1137,39 @@ msgstr "Zurück"
msgid "Next" msgid "Next"
msgstr "Weiter" msgstr "Weiter"
#: project/templates/_macros.html:647 #: project/templates/_macros.html:662
msgid "Radius" msgid "Radius"
msgstr "Umkreis" msgstr "Umkreis"
#: project/templates/_macros.html:852 #: project/templates/_macros.html:867
msgid "Edit image" msgid "Edit image"
msgstr "Bild bearbeiten" msgstr "Bild bearbeiten"
#: project/templates/_macros.html:873 #: project/templates/_macros.html:888
msgid "Close" msgid "Close"
msgstr "Schließen" msgstr "Schließen"
#: project/templates/_macros.html:874 #: project/templates/_macros.html:889
msgid "Okay" msgid "Okay"
msgstr "OK" msgstr "OK"
#: project/templates/_macros.html:883 project/templates/_macros.html:885 #: project/templates/_macros.html:898 project/templates/_macros.html:900
msgid "Choose image file" msgid "Choose image file"
msgstr "Bild-Datei auswählen" msgstr "Bild-Datei auswählen"
#: project/templates/_macros.html:937 project/templates/reference/read.html:13 #: project/templates/_macros.html:952 project/templates/reference/read.html:13
msgid "Actions" msgid "Actions"
msgstr "Aktionen" msgstr "Aktionen"
#: project/templates/_macros.html:941 project/templates/event/actions.html:40 #: project/templates/_macros.html:956 project/templates/event/actions.html:40
msgid "Edit event" msgid "Edit event"
msgstr "Veranstaltung bearbeiten" msgstr "Veranstaltung bearbeiten"
#: project/templates/_macros.html:944 project/templates/manage/events.html:30 #: project/templates/_macros.html:959 project/templates/manage/events.html:30
msgid "More" msgid "More"
msgstr "Mehr" msgstr "Mehr"
#: project/templates/_macros.html:965 #: project/templates/_macros.html:980
msgid "Event suggestion" msgid "Event suggestion"
msgstr "Veranstaltungsvorschlag" msgstr "Veranstaltungsvorschlag"
@ -1107,7 +1178,7 @@ msgid "Widget als iFrame einbetten"
msgstr "Widget als iFrame einbetten" msgstr "Widget als iFrame einbetten"
#: project/templates/home.html:26 project/templates/home.html:142 #: project/templates/home.html:26 project/templates/home.html:142
#: project/templates/security/login_user.html:25 project/views/widget.py:155 #: project/templates/security/login_user.html:26 project/views/widget.py:155
msgid "Register for free" msgid "Register for free"
msgstr "Kostenlos registrieren" msgstr "Kostenlos registrieren"
@ -1134,7 +1205,10 @@ msgstr "Beispiel"
msgid "Developer" msgid "Developer"
msgstr "Entwickler" msgstr "Entwickler"
#: project/templates/layout.html:127 project/templates/profile.html:4 #: project/templates/layout.html:127
#: project/templates/oauth2_client/list.html:10
#: project/templates/oauth2_client/read.html:15
#: project/templates/oauth2_token/list.html:10 project/templates/profile.html:4
#: project/templates/profile.html:10 #: project/templates/profile.html:10
msgid "Profile" msgid "Profile"
msgstr "Profil" msgstr "Profil"
@ -1217,8 +1291,21 @@ msgstr "Widgets"
msgid "Settings" msgid "Settings"
msgstr "Einstellungen" msgstr "Einstellungen"
#: project/templates/oauth2_client/list.html:4
#: project/templates/oauth2_client/list.html:11
#: project/templates/oauth2_client/read.html:16
#: project/templates/profile.html:19
msgid "OAuth2 clients"
msgstr "OAuth2 Clients"
#: project/templates/oauth2_token/list.html:4
#: project/templates/oauth2_token/list.html:11
#: project/templates/profile.html:24
msgid "OAuth2 tokens"
msgstr "OAuth2 Token"
#: project/templates/manage/admin_units.html:8 #: project/templates/manage/admin_units.html:8
#: project/templates/manage/members.html:9 project/templates/profile.html:14 #: project/templates/manage/members.html:9 project/templates/profile.html:30
msgid "Invitations" msgid "Invitations"
msgstr "Einladungen" msgstr "Einladungen"
@ -1227,7 +1314,7 @@ msgstr "Einladungen"
#: project/templates/admin/admin_units.html:11 #: project/templates/admin/admin_units.html:11
#: project/templates/manage/admin_units.html:3 #: project/templates/manage/admin_units.html:3
#: project/templates/manage/admin_units.html:16 #: project/templates/manage/admin_units.html:16
#: project/templates/profile.html:34 #: project/templates/profile.html:50
msgid "Admin Units" msgid "Admin Units"
msgstr "Organisationen" msgstr "Organisationen"
@ -1243,6 +1330,7 @@ msgstr "Benutzer"
#: project/templates/manage/organizers.html:22 #: project/templates/manage/organizers.html:22
#: project/templates/manage/places.html:27 #: project/templates/manage/places.html:27
#: project/templates/manage/references_incoming.html:20 #: project/templates/manage/references_incoming.html:20
#: project/templates/oauth2_client/list.html:34
msgid "Edit" msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
@ -1438,6 +1526,7 @@ msgstr "Anzeigen"
#: project/templates/manage/organizers.html:23 #: project/templates/manage/organizers.html:23
#: project/templates/manage/places.html:28 #: project/templates/manage/places.html:28
#: project/templates/manage/references_incoming.html:21 #: project/templates/manage/references_incoming.html:21
#: project/templates/oauth2_client/list.html:35
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
@ -1479,6 +1568,37 @@ msgstr "Link, um Veranstaltungen vorzuschlagen"
msgid "URL für Infoscreen" msgid "URL für Infoscreen"
msgstr "URL für Infoscreen" msgstr "URL für Infoscreen"
#: project/templates/oauth2_client/create.html:4
#: project/templates/oauth2_client/create.html:8
#: project/templates/oauth2_client/list.html:17
msgid "Create OAuth2 client"
msgstr "OAuth2 Client hinzufügen"
#: project/templates/oauth2_client/delete.html:13
msgid "OAuth2 client"
msgstr "OAuth2 Client"
#: project/templates/oauth2_client/update.html:4
#: project/templates/oauth2_client/update.html:8
msgid "Update OAuth2 client"
msgstr "OAuth2 Client aktualisieren"
#: project/templates/oauth2_token/list.html:19
msgid "Client"
msgstr "Client"
#: project/templates/oauth2_token/list.html:30
msgid "Revoked"
msgstr "Widerrufen"
#: project/templates/oauth2_token/list.html:30
msgid "Active"
msgstr "Aktiv"
#: project/templates/oauth2_token/list.html:31
msgid "Revoke"
msgstr "Widerrufen"
#: project/templates/planing/list.html:4 project/templates/planing/list.html:93 #: project/templates/planing/list.html:4 project/templates/planing/list.html:93
msgid "Event Planing" msgid "Event Planing"
msgstr "Planungsassistent" msgstr "Planungsassistent"
@ -1503,7 +1623,17 @@ msgstr "Empfehlung aktualisieren für Veranstaltung \"%(name)s\""
msgid "Review event reference request" msgid "Review event reference request"
msgstr "Empfehlungsanfrage prüfen" msgstr "Empfehlungsanfrage prüfen"
#: project/templates/security/login_user.html:23 #: project/templates/security/authorize.html:10
#, python-format
msgid "\"%(client_name)s\" wants to access your account"
msgstr "\"%(client_name)s\" möchte auf deinen Account zugreifen"
#: project/templates/security/authorize.html:14
#, python-format
msgid "This will allow \"%(client_name)s\" to:"
msgstr "Dies ermöglicht \"%(client_name)s\":"
#: project/templates/security/login_user.html:24
msgid "You do not have an account yet? Not a problem!" msgid "You do not have an account yet? Not a problem!"
msgstr "Du hast noch keinen Account? Kein Problem!" msgstr "Du hast noch keinen Account? Kein Problem!"
@ -1628,6 +1758,26 @@ msgstr "Veranstaltungsvorschlag erfolgreich abgelehnt"
msgid "Event review status updated" msgid "Event review status updated"
msgstr "Prüfungsstatus aktualisiert" msgstr "Prüfungsstatus aktualisiert"
#: project/views/oauth2_client.py:36
msgid "OAuth2 client successfully created"
msgstr "OAuth2 Client erfolgreich erstellt"
#: project/views/oauth2_client.py:61
msgid "OAuth2 client successfully updated"
msgstr "OAuth2 Client erfolgreich aktualisiert"
#: project/views/oauth2_client.py:84
msgid "Entered name does not match OAuth2 client name"
msgstr "Der eingegebene Name entspricht nicht dem Namen des OAuth2 Clients"
#: project/views/oauth2_client.py:89
msgid "OAuth2 client successfully deleted"
msgstr "OAuth2 Client erfolgreich gelöscht""
#: project/views/oauth2_token.py:30
msgid "OAuth2 token successfully revoked"
msgstr "OAuth2 token erfolgreich widerrufen"
#: project/views/organizer.py:36 #: project/views/organizer.py:36
msgid "Organizer successfully created" msgid "Organizer successfully created"
msgstr "Veranstalter erfolgreich erstellt" msgstr "Veranstalter erfolgreich erstellt"