From 73308d96b166f9617b6af45754b4af04b2c65a63 Mon Sep 17 00:00:00 2001 From: Daniel Grams Date: Tue, 9 May 2023 22:40:33 +0200 Subject: [PATCH] Optional tos #471 --- cypress/e2e/root.cy.js | 2 +- messages.pot | 193 ++++++++--------- project/forms/common.py | 15 +- project/jinja_filters.py | 6 + project/services/admin.py | 8 + project/templates/layout.html | 2 + .../translations/de/LC_MESSAGES/messages.mo | Bin 41059 -> 41233 bytes .../translations/de/LC_MESSAGES/messages.po | 196 +++++++++--------- .../translations/en/LC_MESSAGES/messages.mo | Bin 4079 -> 4079 bytes .../translations/en/LC_MESSAGES/messages.po | 193 ++++++++--------- project/views/root.py | 6 +- tests/views/test_auth.py | 14 +- tests/views/test_root.py | 8 +- 13 files changed, 356 insertions(+), 287 deletions(-) diff --git a/cypress/e2e/root.cy.js b/cypress/e2e/root.cy.js index 0559b17..57d41c2 100644 --- a/cypress/e2e/root.cy.js +++ b/cypress/e2e/root.cy.js @@ -3,7 +3,7 @@ describe("Root", () => { cy.visit("/"); cy.screenshot("home"); - cy.visit("/tos"); + cy.visit("/tos", {failOnStatusCode: false}); cy.screenshot("tos"); cy.visit("/legal_notice"); diff --git a/messages.pot b/messages.pot index f83b1b7..124cf87 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-05-04 14:04+0200\n" +"POT-Creation-Date: 2023-05-09 22:22+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -198,25 +198,25 @@ msgstr "" msgid "You have received an invitation" msgstr "" -#: project/forms/admin.py:11 project/templates/layout.html:304 +#: project/forms/admin.py:11 project/templates/layout.html:305 #: project/views/root.py:55 msgid "Terms of service" msgstr "" -#: project/forms/admin.py:12 project/templates/layout.html:308 -#: project/views/root.py:63 +#: project/forms/admin.py:12 project/templates/layout.html:310 +#: project/views/root.py:67 msgid "Legal notice" msgstr "" #: project/forms/admin.py:13 project/templates/_macros.html:1473 -#: project/templates/layout.html:312 +#: project/templates/layout.html:314 #: project/templates/widget/event_suggestion/create.html:204 -#: project/views/admin_unit.py:83 project/views/root.py:71 +#: project/views/admin_unit.py:83 project/views/root.py:75 msgid "Contact" msgstr "" -#: project/forms/admin.py:14 project/templates/layout.html:316 -#: project/views/root.py:79 +#: project/forms/admin.py:14 project/templates/layout.html:318 +#: project/views/root.py:83 msgid "Privacy" msgstr "" @@ -229,8 +229,8 @@ msgstr "" msgid "Save" msgstr "" -#: project/forms/admin.py:21 project/forms/admin_unit_member.py:12 -#: project/forms/admin_unit_member.py:32 +#: project/forms/admin.py:21 project/forms/admin_unit_member.py:14 +#: project/forms/admin_unit_member.py:34 msgid "Roles" msgstr "" @@ -243,10 +243,10 @@ msgstr "" msgid "Delete user" msgstr "" -#: project/forms/admin.py:27 project/forms/admin_unit.py:47 -#: project/forms/admin_unit_member.py:11 project/forms/admin_unit_member.py:23 -#: project/forms/admin_unit_member.py:28 project/forms/event.py:107 -#: project/forms/event_suggestion.py:38 project/forms/organizer.py:27 +#: project/forms/admin.py:27 project/forms/admin_unit.py:53 +#: project/forms/admin_unit_member.py:12 project/forms/admin_unit_member.py:25 +#: project/forms/admin_unit_member.py:30 project/forms/event.py:107 +#: project/forms/event_suggestion.py:38 project/forms/organizer.py:33 #: project/forms/user.py:18 project/forms/user.py:23 #: project/templates/_macros.html:237 project/templates/_macros.html:1569 #: project/templates/admin/admin.html:27 project/templates/admin/email.html:4 @@ -308,13 +308,13 @@ msgstr "" msgid "Delete organization" msgstr "" -#: project/forms/admin.py:69 project/forms/admin_unit.py:28 -#: project/forms/admin_unit.py:134 project/forms/admin_unit.py:139 -#: project/forms/admin_unit.py:144 project/forms/event.py:85 -#: project/forms/event.py:114 project/forms/event_place.py:25 -#: project/forms/event_place.py:50 project/forms/event_suggestion.py:26 -#: project/forms/oauth2_client.py:66 project/forms/organizer.py:25 -#: project/forms/organizer.py:52 project/forms/reference_request.py:23 +#: project/forms/admin.py:69 project/forms/admin_unit.py:34 +#: project/forms/admin_unit.py:142 project/forms/admin_unit.py:147 +#: project/forms/admin_unit.py:152 project/forms/event.py:85 +#: project/forms/event.py:114 project/forms/event_place.py:30 +#: project/forms/event_place.py:56 project/forms/event_suggestion.py:26 +#: project/forms/oauth2_client.py:66 project/forms/organizer.py:30 +#: project/forms/organizer.py:58 project/forms/reference_request.py:23 #: project/templates/admin/admin_units.html:19 #: project/templates/event_place/list.html:19 #: project/templates/manage/organizers.html:18 @@ -347,139 +347,139 @@ msgstr "" msgid "Send newsletter" msgstr "" -#: project/forms/admin_unit.py:14 project/forms/event_place.py:12 -#: project/forms/organizer.py:12 +#: project/forms/admin_unit.py:15 project/forms/event_place.py:13 +#: project/forms/organizer.py:13 msgid "Street" msgstr "" -#: project/forms/admin_unit.py:15 project/forms/event.py:453 -#: project/forms/event_place.py:13 project/forms/organizer.py:13 +#: project/forms/admin_unit.py:18 project/forms/event.py:453 +#: project/forms/event_place.py:16 project/forms/organizer.py:16 msgid "Postal code" msgstr "" -#: project/forms/admin_unit.py:16 project/forms/event_place.py:14 -#: project/forms/organizer.py:14 +#: project/forms/admin_unit.py:21 project/forms/event_place.py:18 +#: project/forms/organizer.py:18 msgid "City" msgstr "" -#: project/forms/admin_unit.py:17 project/forms/event_place.py:15 -#: project/forms/organizer.py:15 +#: project/forms/admin_unit.py:23 project/forms/event_place.py:19 +#: project/forms/organizer.py:19 msgid "State" msgstr "" -#: project/forms/admin_unit.py:19 project/forms/event_place.py:17 -#: project/forms/organizer.py:17 +#: project/forms/admin_unit.py:25 project/forms/event_place.py:21 +#: project/forms/organizer.py:21 msgid "Latitude" msgstr "" -#: project/forms/admin_unit.py:22 project/forms/event_place.py:20 -#: project/forms/organizer.py:20 +#: project/forms/admin_unit.py:28 project/forms/event_place.py:24 +#: project/forms/organizer.py:24 msgid "Longitude" msgstr "" -#: project/forms/admin_unit.py:31 +#: project/forms/admin_unit.py:37 msgid "Short name" msgstr "" -#: project/forms/admin_unit.py:32 +#: project/forms/admin_unit.py:38 msgid "The short name is used to create a unique identifier for your events" msgstr "" -#: project/forms/admin_unit.py:40 project/templates/_macros.html:1611 +#: project/forms/admin_unit.py:46 project/templates/_macros.html:1611 msgid "Short name must contain only letters numbers or underscore" msgstr "" -#: project/forms/admin_unit.py:46 project/forms/event.py:106 -#: project/forms/event.py:124 project/forms/event_place.py:26 -#: project/forms/organizer.py:26 project/templates/manage/organizers.html:21 +#: project/forms/admin_unit.py:52 project/forms/event.py:106 +#: project/forms/event.py:124 project/forms/event_place.py:32 +#: project/forms/organizer.py:32 project/templates/manage/organizers.html:21 msgid "Link URL" msgstr "" -#: project/forms/admin_unit.py:48 project/forms/event.py:108 -#: project/forms/event_suggestion.py:31 project/forms/organizer.py:28 +#: project/forms/admin_unit.py:54 project/forms/event.py:108 +#: project/forms/event_suggestion.py:31 project/forms/organizer.py:34 #: project/templates/_macros.html:290 #: project/templates/manage/organizers.html:20 msgid "Phone" msgstr "" -#: project/forms/admin_unit.py:49 project/forms/event.py:109 -#: project/forms/organizer.py:29 project/templates/_macros.html:298 +#: project/forms/admin_unit.py:55 project/forms/event.py:109 +#: project/forms/organizer.py:35 project/templates/_macros.html:298 msgid "Fax" msgstr "" -#: project/forms/admin_unit.py:50 project/forms/organizer.py:30 +#: project/forms/admin_unit.py:56 project/forms/organizer.py:36 #: project/templates/manage/organizers.html:22 #: project/templates/manage/organizers.html:47 msgid "Logo" msgstr "" -#: project/forms/admin_unit.py:54 +#: project/forms/admin_unit.py:60 msgid "Allow verification requests" msgstr "" -#: project/forms/admin_unit.py:55 +#: project/forms/admin_unit.py:61 msgid "If set, unverified organizations may ask you for verification." msgstr "" -#: project/forms/admin_unit.py:61 +#: project/forms/admin_unit.py:67 msgid "Verification requests information" msgstr "" -#: project/forms/admin_unit.py:63 +#: project/forms/admin_unit.py:69 msgid "" "This text is shown to unverified organizations to help them decide " "whether they ask you for verification." msgstr "" -#: project/forms/admin_unit.py:79 +#: project/forms/admin_unit.py:85 msgid "Verify new organization" msgstr "" -#: project/forms/admin_unit.py:80 +#: project/forms/admin_unit.py:86 msgid "If set, events of the new organization are publicly visible." msgstr "" -#: project/forms/admin_unit.py:86 project/forms/reference_request.py:86 +#: project/forms/admin_unit.py:92 project/forms/reference_request.py:86 msgid "Verify reference requests automatically" msgstr "" -#: project/forms/admin_unit.py:87 +#: project/forms/admin_unit.py:93 msgid "" "If set, all upcoming reference requests of the new organization are " "verified automatically." msgstr "" -#: project/forms/admin_unit.py:98 project/templates/admin_unit/create.html:5 +#: project/forms/admin_unit.py:104 project/templates/admin_unit/create.html:5 #: project/templates/admin_unit/create.html:22 #: project/templates/manage/admin_units.html:32 msgid "Create organization" msgstr "" -#: project/forms/admin_unit.py:106 project/forms/admin_unit.py:129 +#: project/forms/admin_unit.py:112 project/forms/admin_unit.py:137 msgid "Update settings" msgstr "" -#: project/forms/admin_unit.py:110 +#: project/forms/admin_unit.py:117 msgid "Font" msgstr "" -#: project/forms/admin_unit.py:112 +#: project/forms/admin_unit.py:120 msgid "Background Color" msgstr "" -#: project/forms/admin_unit.py:118 +#: project/forms/admin_unit.py:126 msgid "Primary Color" msgstr "" -#: project/forms/admin_unit.py:124 +#: project/forms/admin_unit.py:132 msgid "Link Color" msgstr "" -#: project/forms/admin_unit.py:133 project/forms/user.py:17 +#: project/forms/admin_unit.py:141 project/forms/user.py:17 msgid "Request deletion" msgstr "" -#: project/forms/admin_unit.py:138 project/forms/user.py:22 +#: project/forms/admin_unit.py:146 project/forms/user.py:22 #: project/templates/admin_unit/cancel_deletion.html:6 #: project/templates/admin_unit/update.html:26 #: project/templates/manage/events.html:49 project/templates/profile.html:13 @@ -487,34 +487,34 @@ msgstr "" msgid "Cancel deletion" msgstr "" -#: project/forms/admin_unit.py:143 project/templates/layout.html:276 +#: project/forms/admin_unit.py:151 project/templates/layout.html:276 #: project/templates/manage/delete_membership.html:6 msgid "Leave organization" msgstr "" -#: project/forms/admin_unit_member.py:13 +#: project/forms/admin_unit_member.py:15 msgid "Invite" msgstr "" -#: project/forms/admin_unit_member.py:17 +#: project/forms/admin_unit_member.py:19 msgid "Accept" msgstr "" -#: project/forms/admin_unit_member.py:18 +#: project/forms/admin_unit_member.py:20 msgid "Decline" msgstr "" -#: project/forms/admin_unit_member.py:22 +#: project/forms/admin_unit_member.py:24 #: project/templates/manage/delete_invitation.html:6 msgid "Delete invitation" msgstr "" -#: project/forms/admin_unit_member.py:27 +#: project/forms/admin_unit_member.py:29 #: project/templates/manage/delete_member.html:6 msgid "Delete member" msgstr "" -#: project/forms/admin_unit_member.py:33 +#: project/forms/admin_unit_member.py:35 #: project/templates/admin_unit/update_member.html:6 msgid "Update member" msgstr "" @@ -527,74 +527,79 @@ msgstr "" msgid "Image" msgstr "" -#: project/forms/common.py:71 +#: project/forms/common.py:74 #, python-format msgid "" "I read and accept %(tos_open)sTerms of Service%(tos_close)s and " "%(privacy_open)sPrivacy%(privacy_close)s." msgstr "" -#: project/forms/common.py:82 +#: project/forms/common.py:84 +#, python-format +msgid "I read and accept %(privacy_open)sPrivacy%(privacy_close)s." +msgstr "" + +#: project/forms/common.py:95 msgid "0 (Little relevant)" msgstr "" -#: project/forms/common.py:87 +#: project/forms/common.py:100 msgid "5 (Default)" msgstr "" -#: project/forms/common.py:92 +#: project/forms/common.py:105 msgid "10 (Highlight)" msgstr "" -#: project/forms/common.py:96 +#: project/forms/common.py:109 msgid "Monday" msgstr "" -#: project/forms/common.py:97 +#: project/forms/common.py:110 msgid "Tueday" msgstr "" -#: project/forms/common.py:98 +#: project/forms/common.py:111 msgid "Wednesday" msgstr "" -#: project/forms/common.py:99 +#: project/forms/common.py:112 msgid "Thursday" msgstr "" -#: project/forms/common.py:100 +#: project/forms/common.py:113 msgid "Friday" msgstr "" -#: project/forms/common.py:101 +#: project/forms/common.py:114 msgid "Saturday" msgstr "" -#: project/forms/common.py:102 +#: project/forms/common.py:115 msgid "Sunday" msgstr "" -#: project/forms/common.py:106 +#: project/forms/common.py:119 msgid "500 m" msgstr "" -#: project/forms/common.py:107 +#: project/forms/common.py:120 msgid "5 km" msgstr "" -#: project/forms/common.py:108 +#: project/forms/common.py:121 msgid "10 km" msgstr "" -#: project/forms/common.py:109 +#: project/forms/common.py:122 msgid "20 km" msgstr "" -#: project/forms/common.py:110 +#: project/forms/common.py:123 msgid "50 km" msgstr "" -#: project/forms/common.py:111 +#: project/forms/common.py:124 msgid "100 km" msgstr "" @@ -641,7 +646,7 @@ msgstr "" msgid "Enter a short, meaningful name for the event." msgstr "" -#: project/forms/event.py:119 project/forms/event_place.py:28 +#: project/forms/event.py:119 project/forms/event_place.py:34 msgid "Description" msgstr "" @@ -782,7 +787,7 @@ msgstr "" msgid "Choose how people can attend the event." msgstr "" -#: project/forms/event.py:225 project/forms/event_place.py:27 +#: project/forms/event.py:225 project/forms/event_place.py:33 #: project/templates/manage/events.html:104 #: project/templates/manage/events.html:139 #: project/templates/manage/places.html:21 @@ -1016,23 +1021,23 @@ msgstr "" msgid "Find" msgstr "" -#: project/forms/event_place.py:41 project/templates/event_place/create.html:5 +#: project/forms/event_place.py:47 project/templates/event_place/create.html:5 #: project/templates/event_place/create.html:21 #: project/templates/event_place/list.html:11 #: project/templates/manage/places.html:11 msgid "Create place" msgstr "" -#: project/forms/event_place.py:45 project/templates/event_place/update.html:5 +#: project/forms/event_place.py:51 project/templates/event_place/update.html:5 #: project/templates/event_place/update.html:21 msgid "Update place" msgstr "" -#: project/forms/event_place.py:49 project/templates/event_place/delete.html:6 +#: project/forms/event_place.py:55 project/templates/event_place/delete.html:6 msgid "Delete place" msgstr "" -#: project/forms/event_place.py:57 +#: project/forms/event_place.py:63 msgid "Find places" msgstr "" @@ -1120,18 +1125,18 @@ msgstr "" msgid "Revoke OAuth2 token" msgstr "" -#: project/forms/organizer.py:43 project/templates/manage/organizers.html:11 +#: project/forms/organizer.py:49 project/templates/manage/organizers.html:11 #: project/templates/organizer/create.html:5 #: project/templates/organizer/create.html:21 msgid "Create organizer" msgstr "" -#: project/forms/organizer.py:47 project/templates/organizer/update.html:5 +#: project/forms/organizer.py:53 project/templates/organizer/update.html:5 #: project/templates/organizer/update.html:21 msgid "Update organizer" msgstr "" -#: project/forms/organizer.py:51 project/templates/organizer/delete.html:6 +#: project/forms/organizer.py:57 project/templates/organizer/delete.html:6 msgid "Delete organizer" msgstr "" @@ -1674,7 +1679,7 @@ msgid "Switch organization" msgstr "" #: project/templates/developer/read.html:4 -#: project/templates/developer/read.html:8 project/templates/layout.html:320 +#: project/templates/developer/read.html:8 project/templates/layout.html:322 #: project/templates/profile.html:46 msgid "Developer" msgstr "" diff --git a/project/forms/common.py b/project/forms/common.py index 11911a1..3d3c12a 100644 --- a/project/forms/common.py +++ b/project/forms/common.py @@ -61,15 +61,28 @@ class Base64ImageForm(BaseImageForm): def get_accept_tos_markup(): + from project.services.admin import has_tos + tos_open = '' % url_for("tos") tos_close = "" privacy_open = '' % url_for("privacy") privacy_close = "" + if has_tos(): + return Markup( + lazy_gettext( + "I read and accept %(tos_open)sTerms of Service%(tos_close)s and %(privacy_open)sPrivacy%(privacy_close)s.", + tos_open=tos_open, + tos_close=tos_close, + privacy_open=privacy_open, + privacy_close=privacy_close, + ) + ) + return Markup( lazy_gettext( - "I read and accept %(tos_open)sTerms of Service%(tos_close)s and %(privacy_open)sPrivacy%(privacy_close)s.", + "I read and accept %(privacy_open)sPrivacy%(privacy_close)s.", tos_open=tos_open, tos_close=tos_close, privacy_open=privacy_open, diff --git a/project/jinja_filters.py b/project/jinja_filters.py index d6ffbae..2e000d0 100644 --- a/project/jinja_filters.py +++ b/project/jinja_filters.py @@ -97,8 +97,14 @@ def get_context_processors(): "reference_requests_incoming_badge": reference_requests_incoming_badge, } + def has_tos(): + from project.services.admin import has_tos + + return has_tos() + return dict( current_admin_unit=get_current_admin_unit(), get_manage_menu_options=get_manage_menu_options, has_access=has_access, + has_tos=has_tos, ) diff --git a/project/services/admin.py b/project/services/admin.py index 717cf5b..5a130eb 100644 --- a/project/services/admin.py +++ b/project/services/admin.py @@ -1,3 +1,5 @@ +from sqlalchemy import exists, func + from project import db from project.models import Settings @@ -9,3 +11,9 @@ def upsert_settings(): db.session.add(result) return result + + +def has_tos(): + return db.session.scalar( + exists().where(func.coalesce(Settings.tos, "") != "").select() + ) diff --git a/project/templates/layout.html b/project/templates/layout.html index 8bd9698..d4dec18 100644 --- a/project/templates/layout.html +++ b/project/templates/layout.html @@ -300,10 +300,12 @@
    + {% if has_tos() %}
  • {{ _('Terms of service') }}
  • + {% endif %}
  • {{ _('Legal notice') }}
  • diff --git a/project/translations/de/LC_MESSAGES/messages.mo b/project/translations/de/LC_MESSAGES/messages.mo index a3d423009062f976e981edc3fcd4f7ebb9ec6c73..21fa5e7f61cda219c71dea2babc8b6ca3ac8538d 100644 GIT binary patch delta 8928 zcmYM(4Sdh#{>Sml?(gj$v#~ofYlbm1#F(3j+zXq~lDQd^`rY^g@r>C|p)nUeM-AjM#^ZI=h$C7V(*k2L96MqV_Cn40E>y>J(I2a@IX;Y8 zxC_VPJJ=f2GVDMGVkrHa5(;5B8H;cZYCwlE65qmL{1gN5Yt;2`F$8a-2INQU^kKqL z9d+c#6f8w$XY zqZC8#DQ#`jJRm#zPHcFNWet z^v5qzOL86q@hWPjH!&1Lvu);@pw>PGW3fH**YwRM|6vqn6KN(MHo+aJO?AlmHfkxp zzy$mr!!W3=Z72>^-y7A@y{HUUpa%9J2H+yp0IE^H!enPs^zGLHem?XI`?1% z@j+DT8&Cs$1AXyR9Ex8c$uVu)@gJ7pa$JRKKfJwtE(wV})4>)@FVwLchGTFF_QfNp zh5|d-y^x363lp3xkv`2q)O}}AdnYW{?x}p#(u_w9d=V;R9)|1u*SLyWREnQ*@yn2L4q4tVDTUfh06;)q|kywh_%oW%SH=>?DfV%G;)POIb_MeIA#JXW2Y6i2A zKFluEOi!X_bkmuhXJ1G|Py?BX8b}TDRyKQ4oA^CchZmf`V;pfpXM4Rpda5XP72{Fy zeAI~7pw96hQE$MvQM>r>s6F!oYLDDNWzIL>W*`#7iBnLiZil+w&0Q~c@z{LwAHjvm zROo?u&PUu0>roBta_&Pd$)8a7A9wYqT>V$5_O75h{M}s->tgS3iW+bRY9bxFkbljv zi>nxe>R`wIhke%YR^=oQo99{@hRs~REE!E zBKr2U8B9hpYyVgV1IW*8AcJ$M7=_*Q3G6sT8hocWXu!DkvFHYB?cGT)V9HB z;#|~oeNoR1M-6l|2I>5lQP7%BN2O?ia~Epu-$Xt5K59)rM(zH;VLV>ICiolbdQ30- zTmmXiLuE9}*$*|LGD-ht8U@`r8`aSw)QFe4xCWKt$5AhsXPt*Jo%n5c{d?5Re0$sX zK?JJ3Y*Z#XpxWt!Iz1)mslh1}l5i2m;#POVeoQ5P#rdUEJ5R?f4O1`|)!;}}hh?aC z%TW_qh+3LQF&Ur1rg*%F{HuYpRLDks?29H1757FpJPE6CHfpJUL@mK@*aH3eppfa# zB2*^IPy?NTT7oLnUfYJ*xW6y?_owg~74od}B5E^Ub_VpbaSCdwx}#EAgxUjRQENI2 zb-Wg0Pu!0g_??Sm`r8SNK;1vVqo7SzjvCo4)X0~kX1)$Ju$>r)PdlGSU9U&2?Ge;K zPPzKa7(jf}X^L&e0#PrbDAe;_imPacnsHB5gC(ex&Ty`AK970SpFlNW2H3TXKn=V# z>e%Mu?ahWd9VMtWpN-lZHOQXu%nk~{RQx|`ZI7cG_z1OmE}$N~ih3~QE_=N>Dz$B~ z3`e3~Fo#hCKZWY}8fp)O4zvSKKus_c19kqpQBbOiP)l&v?F)QiK&5^%24MyI;XKsL z7o!?pg&OEq48=XD3A~8Pz){roPf-K9h?>y9b)EiA{2=>4Hmczss5Kgdn(;W)0B1Po zVl(0;&du1K_#mpouP_sT!SUGgZe#dsmhod0zK6R|HE8khkT)ZtXT{T@K2aw}@) zhg|)usEmA$A$SgTtiD4&mrM|!K*~@Ns=Z>~Tt#=hWP&2J_ z?nOQLqKn^f@w=$adKR_oe?@g1HPog$9`#%rMq)k&V=-!C!!ZIYhm!wx6qZr30$)JA z@$!b*?`UIC8Ci)B;4_$wp~J0R@Nwb?kZhY@@D3~*VLy~Ak$0PU3VBzVi>Mb{)<}MT z#6cbfjp#AdK%U1!{2Y@pkp6i&sd*a|;JEzwPEj6V0+3`S!laWjmX5>gYUbZLgtH|2t}+exvQ?Omucet@Tih z!+TH}s6Ynpna3zJp<*j)00&WPdkkCS8B_-WW9+62MRgpHT9Q=M+O9%nVgqUqZO1^Y z!_K%5m4S1(60cyH&i}%(_7{uKF_#PeC3fw*U>0#Xs(u6Nw7iKL*hSRt4==SHwLwjw z18Qmdq7P2Tb&dEUgBr-Kaco4)yO(?E-z=k`HF^;z;8D~jOXcwLoEd`AI1Dv|NvM?0 zLCtiLi>py4{; z=l9MglWppHq3$ck?zjmH@g(-Z=yLm_8HTFgf||f-7dM;2yM(v|wFkUy6qJ%ZsB?V~ z1MxK%zlFN-H0nKZ9+mQ|s1G5%jWm!1Y=Wb)Emoqg@5H8f7~}Cn7ylhuTJk^5cASjb zo$awXPC#|E1pRR}2I1q*T2zB|7>WPu;uEONc@A}|enu@>0P7H9nD4ExD-QhH7YZk(GPc`?yEy)VxGrPd>1wI)2QdJqB8I=RQquib|9_LpZ-lZ z3Oa_pPz{el_K_(;tyKf|#ed;J>^;NY{}U=x0W^qFNhPhZsLS%G@+ZBz$758A!Z6qS(-RH}1aT!`8W#i;kdL{ui` zVIo#z8t#0M{I{WS#8q6z4C2PKZ3CTAn`tm6V-;!uJ23$3QA_X&hT<`dzzZrw24d&fiX_y7ZBP$(a&ZqA4?sOQ0`=SkjKV3X=N4l)K8niBM%0YA zV-o(^`3Y(QKYJ9kyMIG<*l4c35Q>VUU7U#88)>NfGf@M{L3Pv>HK5)u9_So_8dxdn z`N^o~r#rm|Dd@oks1B=LyxO@D^}r6)i0e=t?seB+!p6j}pmzBQ)P3hs9bZCU{3oiP zo9?>LyxYguGr<%zlVsF`*{BCQqE0~%REKq_hW4R4d;tez18QdB^X+FtG;SfDi#k1_ zyr0W)08Yb~a0n(Y)T^5Hub?oDiq~)yMlG^8mZM&&AK~r##r8X0Ip$Mei(T;~>Xd{n zu>%>5&4@=}3!H(iaSb-XL)Z`B!(^TRm@4}#RVUPDnTA@5m6(j{u_eCj{0PgXJ*{cl|S6DAQ~N4RKwda5uZji z{5tCTTd0AYMWy%_Y64LY*$(bNWo!Uy0uwP6XJR_8M`h?w9tFLzzC?}aJ5&lIAGTi} zlTa_1WK?}Fs)3%Ef|F3kZiS0?V=D0x=LKv<9QcUsr!DRv?v85D`^*)-K{a>{)j-^G z`(PK;jpH#Ar=w_yhXlHPisFqcRlvsLf~=a-V1VQ_yZ4gxbCL zp&D9%ccO=b@KwylkQFx0M-6N_YHzGZJ@*8vojTNj|BPD7cii<;s6Fuo2GGCx2L%n_ zM|XqYO8bHdL(Mc1)o?e|CM!ZUcsFVQV^C}S04gJMP#LVj7<>U+;!#Y-ubsZDm>~U| zbP8&q3^Q>Ss^MDHCVJNSDz+j%g__x~s5fEgA8fugLy0fvfFrv421v$Nxdi;6qf0SDdEC&M*=~s84scLuI0?i-%(X@x2&` zlQ0-7YRJFVYCaVj;TqI#e+o5&dTfiwQJd^%RKu;;*!z28Ht|Tz!iP|)-;ZkV1JndA zpq~F7HIUr3)`GR0p^je{?1Lq)emCm<@JG}!I_&(=`7LTjKI`og z1Uq9<^(|2;&%h|mad9DP;$ATY?eg)c&9)S^mYbZrQ3KnD+Rg8w*6u58j+d}825hiP z6_4yo(+At&UvMa1N6ox=Bj1j&67zKa|4E@E6?bg1|CBNT#}i+{92~OQ{vVQMSV;T| zK8L@d2KMw8-iG)lc0m8Fe12d)7NUn*+SgI<{tKvy`fOvr>HIgNpc|e=&HMz0;$Klq za}Hzh62{>z7suAx3}ia{pc7pv z51;#8TR5f7FELqMl!ho<_8Z0% zLq&^5Y^>e3qs%AywnKe;)FwKQ`Y;K9im%i!jf<(TOuZ7nacx0X{oMrxseuK_xw&0) VbL-cZ7AI^BnLoPz#Jt+9{{Z9yP#ypP delta 8898 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\n" "Language: de\n" @@ -199,25 +199,25 @@ msgstr "message" msgid "You have received an invitation" msgstr "Du hast eine Einladung erhalten" -#: project/forms/admin.py:11 project/templates/layout.html:304 +#: project/forms/admin.py:11 project/templates/layout.html:305 #: project/views/root.py:55 msgid "Terms of service" msgstr "Nutzungsbedingungen" -#: project/forms/admin.py:12 project/templates/layout.html:308 -#: project/views/root.py:63 +#: project/forms/admin.py:12 project/templates/layout.html:310 +#: project/views/root.py:67 msgid "Legal notice" msgstr "Impressum" #: project/forms/admin.py:13 project/templates/_macros.html:1473 -#: project/templates/layout.html:312 +#: project/templates/layout.html:314 #: project/templates/widget/event_suggestion/create.html:204 -#: project/views/admin_unit.py:83 project/views/root.py:71 +#: project/views/admin_unit.py:83 project/views/root.py:75 msgid "Contact" msgstr "Kontakt" -#: project/forms/admin.py:14 project/templates/layout.html:316 -#: project/views/root.py:79 +#: project/forms/admin.py:14 project/templates/layout.html:318 +#: project/views/root.py:83 msgid "Privacy" msgstr "Datenschutz" @@ -230,8 +230,8 @@ msgstr "Startseite" msgid "Save" msgstr "Speichern" -#: project/forms/admin.py:21 project/forms/admin_unit_member.py:12 -#: project/forms/admin_unit_member.py:32 +#: project/forms/admin.py:21 project/forms/admin_unit_member.py:14 +#: project/forms/admin_unit_member.py:34 msgid "Roles" msgstr "Rollen" @@ -244,10 +244,10 @@ msgstr "Nutzer aktualisieren" msgid "Delete user" msgstr "Nutzer löschen" -#: project/forms/admin.py:27 project/forms/admin_unit.py:47 -#: project/forms/admin_unit_member.py:11 project/forms/admin_unit_member.py:23 -#: project/forms/admin_unit_member.py:28 project/forms/event.py:107 -#: project/forms/event_suggestion.py:38 project/forms/organizer.py:27 +#: project/forms/admin.py:27 project/forms/admin_unit.py:53 +#: project/forms/admin_unit_member.py:12 project/forms/admin_unit_member.py:25 +#: project/forms/admin_unit_member.py:30 project/forms/event.py:107 +#: project/forms/event_suggestion.py:38 project/forms/organizer.py:33 #: project/forms/user.py:18 project/forms/user.py:23 #: project/templates/_macros.html:237 project/templates/_macros.html:1569 #: project/templates/admin/admin.html:27 project/templates/admin/email.html:4 @@ -317,13 +317,13 @@ msgstr "Organisation aktualisieren" msgid "Delete organization" msgstr "Organisation löschen" -#: project/forms/admin.py:69 project/forms/admin_unit.py:28 -#: project/forms/admin_unit.py:134 project/forms/admin_unit.py:139 -#: project/forms/admin_unit.py:144 project/forms/event.py:85 -#: project/forms/event.py:114 project/forms/event_place.py:25 -#: project/forms/event_place.py:50 project/forms/event_suggestion.py:26 -#: project/forms/oauth2_client.py:66 project/forms/organizer.py:25 -#: project/forms/organizer.py:52 project/forms/reference_request.py:23 +#: project/forms/admin.py:69 project/forms/admin_unit.py:34 +#: project/forms/admin_unit.py:142 project/forms/admin_unit.py:147 +#: project/forms/admin_unit.py:152 project/forms/event.py:85 +#: project/forms/event.py:114 project/forms/event_place.py:30 +#: project/forms/event_place.py:56 project/forms/event_suggestion.py:26 +#: project/forms/oauth2_client.py:66 project/forms/organizer.py:30 +#: project/forms/organizer.py:58 project/forms/reference_request.py:23 #: project/templates/admin/admin_units.html:19 #: project/templates/event_place/list.html:19 #: project/templates/manage/organizers.html:18 @@ -356,90 +356,90 @@ msgstr "Nachricht" msgid "Send newsletter" msgstr "Newsletter senden" -#: project/forms/admin_unit.py:14 project/forms/event_place.py:12 -#: project/forms/organizer.py:12 +#: project/forms/admin_unit.py:15 project/forms/event_place.py:13 +#: project/forms/organizer.py:13 msgid "Street" msgstr "Straße" -#: project/forms/admin_unit.py:15 project/forms/event.py:453 -#: project/forms/event_place.py:13 project/forms/organizer.py:13 +#: project/forms/admin_unit.py:18 project/forms/event.py:453 +#: project/forms/event_place.py:16 project/forms/organizer.py:16 msgid "Postal code" msgstr "Postleitzahl" -#: project/forms/admin_unit.py:16 project/forms/event_place.py:14 -#: project/forms/organizer.py:14 +#: project/forms/admin_unit.py:21 project/forms/event_place.py:18 +#: project/forms/organizer.py:18 msgid "City" msgstr "Stadt/Ort" -#: project/forms/admin_unit.py:17 project/forms/event_place.py:15 -#: project/forms/organizer.py:15 +#: project/forms/admin_unit.py:23 project/forms/event_place.py:19 +#: project/forms/organizer.py:19 msgid "State" msgstr "Bundesland" -#: project/forms/admin_unit.py:19 project/forms/event_place.py:17 -#: project/forms/organizer.py:17 +#: project/forms/admin_unit.py:25 project/forms/event_place.py:21 +#: project/forms/organizer.py:21 msgid "Latitude" msgstr "Breitengrad" -#: project/forms/admin_unit.py:22 project/forms/event_place.py:20 -#: project/forms/organizer.py:20 +#: project/forms/admin_unit.py:28 project/forms/event_place.py:24 +#: project/forms/organizer.py:24 msgid "Longitude" msgstr "Längengrad" -#: project/forms/admin_unit.py:31 +#: project/forms/admin_unit.py:37 msgid "Short name" msgstr "Kurzname" -#: project/forms/admin_unit.py:32 +#: project/forms/admin_unit.py:38 msgid "The short name is used to create a unique identifier for your events" msgstr "" "Der Kurzname wird verwendet, um die Veranstaltungen der Organisation " "eindeutig zu identifizieren. Der Kurzname darf nur Buchstaben, Nummern " "und Unterstriche enthalten." -#: project/forms/admin_unit.py:40 project/templates/_macros.html:1611 +#: project/forms/admin_unit.py:46 project/templates/_macros.html:1611 msgid "Short name must contain only letters numbers or underscore" msgstr "Der Kurzname darf nur Buchstaben, Nummern und Unterstriche enthalten" -#: project/forms/admin_unit.py:46 project/forms/event.py:106 -#: project/forms/event.py:124 project/forms/event_place.py:26 -#: project/forms/organizer.py:26 project/templates/manage/organizers.html:21 +#: project/forms/admin_unit.py:52 project/forms/event.py:106 +#: project/forms/event.py:124 project/forms/event_place.py:32 +#: project/forms/organizer.py:32 project/templates/manage/organizers.html:21 msgid "Link URL" msgstr "Link URL" -#: project/forms/admin_unit.py:48 project/forms/event.py:108 -#: project/forms/event_suggestion.py:31 project/forms/organizer.py:28 +#: project/forms/admin_unit.py:54 project/forms/event.py:108 +#: project/forms/event_suggestion.py:31 project/forms/organizer.py:34 #: project/templates/_macros.html:290 #: project/templates/manage/organizers.html:20 msgid "Phone" msgstr "Telefon" -#: project/forms/admin_unit.py:49 project/forms/event.py:109 -#: project/forms/organizer.py:29 project/templates/_macros.html:298 +#: project/forms/admin_unit.py:55 project/forms/event.py:109 +#: project/forms/organizer.py:35 project/templates/_macros.html:298 msgid "Fax" msgstr "Fax" -#: project/forms/admin_unit.py:50 project/forms/organizer.py:30 +#: project/forms/admin_unit.py:56 project/forms/organizer.py:36 #: project/templates/manage/organizers.html:22 #: project/templates/manage/organizers.html:47 msgid "Logo" msgstr "Logo" -#: project/forms/admin_unit.py:54 +#: project/forms/admin_unit.py:60 msgid "Allow verification requests" msgstr "Verifizierungsanfragen erlauben" -#: project/forms/admin_unit.py:55 +#: project/forms/admin_unit.py:61 msgid "If set, unverified organizations may ask you for verification." msgstr "" "Wenn gesetzt, können nicht verifizierte Organisationen um eine " "Verifizierung bitten." -#: project/forms/admin_unit.py:61 +#: project/forms/admin_unit.py:67 msgid "Verification requests information" msgstr "Text für Verifizierungsanfragen" -#: project/forms/admin_unit.py:63 +#: project/forms/admin_unit.py:69 msgid "" "This text is shown to unverified organizations to help them decide " "whether they ask you for verification." @@ -447,21 +447,21 @@ msgstr "" "Dieser Text wird nicht verifizierten Organisationen angezeigt, um ihnen " "bei der Entscheidung zu helfen, ob sie um eine Verifizierung bitten." -#: project/forms/admin_unit.py:79 +#: project/forms/admin_unit.py:85 msgid "Verify new organization" msgstr "Neue Organisation verifizieren" -#: project/forms/admin_unit.py:80 +#: project/forms/admin_unit.py:86 msgid "If set, events of the new organization are publicly visible." msgstr "" "Wenn gesetzt, sind Veranstaltungen der neuen Organisation öffentlich " "sichtbar." -#: project/forms/admin_unit.py:86 project/forms/reference_request.py:86 +#: project/forms/admin_unit.py:92 project/forms/reference_request.py:86 msgid "Verify reference requests automatically" msgstr "Empfehlungsanfragen automatisch verifizieren" -#: project/forms/admin_unit.py:87 +#: project/forms/admin_unit.py:93 msgid "" "If set, all upcoming reference requests of the new organization are " "verified automatically." @@ -469,37 +469,37 @@ msgstr "" "Wenn gesetzt, werden alle zukünftigen Empfehlungsanfragen der neuen " "Organisation automatisch verifiziert." -#: project/forms/admin_unit.py:98 project/templates/admin_unit/create.html:5 +#: project/forms/admin_unit.py:104 project/templates/admin_unit/create.html:5 #: project/templates/admin_unit/create.html:22 #: project/templates/manage/admin_units.html:32 msgid "Create organization" msgstr "Organisation erstellen" -#: project/forms/admin_unit.py:106 project/forms/admin_unit.py:129 +#: project/forms/admin_unit.py:112 project/forms/admin_unit.py:137 msgid "Update settings" msgstr "Einstellungen speichern" -#: project/forms/admin_unit.py:110 +#: project/forms/admin_unit.py:117 msgid "Font" msgstr "Schriftart" -#: project/forms/admin_unit.py:112 +#: project/forms/admin_unit.py:120 msgid "Background Color" msgstr "Hintergrundfarbe" -#: project/forms/admin_unit.py:118 +#: project/forms/admin_unit.py:126 msgid "Primary Color" msgstr "Hauptfarbe" -#: project/forms/admin_unit.py:124 +#: project/forms/admin_unit.py:132 msgid "Link Color" msgstr "Linkfarbe" -#: project/forms/admin_unit.py:133 project/forms/user.py:17 +#: project/forms/admin_unit.py:141 project/forms/user.py:17 msgid "Request deletion" msgstr "Löschung beantragen" -#: project/forms/admin_unit.py:138 project/forms/user.py:22 +#: project/forms/admin_unit.py:146 project/forms/user.py:22 #: project/templates/admin_unit/cancel_deletion.html:6 #: project/templates/admin_unit/update.html:26 #: project/templates/manage/events.html:49 project/templates/profile.html:13 @@ -507,34 +507,34 @@ msgstr "Löschung beantragen" msgid "Cancel deletion" msgstr "Löschen abbrechen" -#: project/forms/admin_unit.py:143 project/templates/layout.html:276 +#: project/forms/admin_unit.py:151 project/templates/layout.html:276 #: project/templates/manage/delete_membership.html:6 msgid "Leave organization" msgstr "Organisation verlassen" -#: project/forms/admin_unit_member.py:13 +#: project/forms/admin_unit_member.py:15 msgid "Invite" msgstr "Einladen" -#: project/forms/admin_unit_member.py:17 +#: project/forms/admin_unit_member.py:19 msgid "Accept" msgstr "Akzeptieren" -#: project/forms/admin_unit_member.py:18 +#: project/forms/admin_unit_member.py:20 msgid "Decline" msgstr "Ablehnen" -#: project/forms/admin_unit_member.py:22 +#: project/forms/admin_unit_member.py:24 #: project/templates/manage/delete_invitation.html:6 msgid "Delete invitation" msgstr "Einladung löschen" -#: project/forms/admin_unit_member.py:27 +#: project/forms/admin_unit_member.py:29 #: project/templates/manage/delete_member.html:6 msgid "Delete member" msgstr "Mitglied löschen" -#: project/forms/admin_unit_member.py:33 +#: project/forms/admin_unit_member.py:35 #: project/templates/admin_unit/update_member.html:6 msgid "Update member" msgstr "Mitglied aktualisieren" @@ -547,7 +547,7 @@ msgstr "Copyright Text" msgid "Image" msgstr "Bild" -#: project/forms/common.py:71 +#: project/forms/common.py:74 #, python-format msgid "" "I read and accept %(tos_open)sTerms of Service%(tos_close)s and " @@ -557,67 +557,75 @@ msgstr "" "%(privacy_open)sDatenschutzerklärung%(privacy_close)s gelesen und " "akzeptiere diese." -#: project/forms/common.py:82 +#: project/forms/common.py:84 +#, python-format +msgid "I read and accept %(privacy_open)sPrivacy%(privacy_close)s." +msgstr "" +"Ich habe die " +"%(privacy_open)sDatenschutzerklärung%(privacy_close)s gelesen und " +"akzeptiere diese." + +#: project/forms/common.py:95 msgid "0 (Little relevant)" msgstr "0 (Wenig relevant)" -#: project/forms/common.py:87 +#: project/forms/common.py:100 msgid "5 (Default)" msgstr "5 (Standard)" -#: project/forms/common.py:92 +#: project/forms/common.py:105 msgid "10 (Highlight)" msgstr "10 (Highlight)" -#: project/forms/common.py:96 +#: project/forms/common.py:109 msgid "Monday" msgstr "Montag" -#: project/forms/common.py:97 +#: project/forms/common.py:110 msgid "Tueday" msgstr "Dienstag" -#: project/forms/common.py:98 +#: project/forms/common.py:111 msgid "Wednesday" msgstr "Mittwoch" -#: project/forms/common.py:99 +#: project/forms/common.py:112 msgid "Thursday" msgstr "Donnerstag" -#: project/forms/common.py:100 +#: project/forms/common.py:113 msgid "Friday" msgstr "Freitag" -#: project/forms/common.py:101 +#: project/forms/common.py:114 msgid "Saturday" msgstr "Samstag" -#: project/forms/common.py:102 +#: project/forms/common.py:115 msgid "Sunday" msgstr "Sonntag" -#: project/forms/common.py:106 +#: project/forms/common.py:119 msgid "500 m" msgstr "500 m" -#: project/forms/common.py:107 +#: project/forms/common.py:120 msgid "5 km" msgstr "5 km" -#: project/forms/common.py:108 +#: project/forms/common.py:121 msgid "10 km" msgstr "10 km" -#: project/forms/common.py:109 +#: project/forms/common.py:122 msgid "20 km" msgstr "20 km" -#: project/forms/common.py:110 +#: project/forms/common.py:123 msgid "50 km" msgstr "50 km" -#: project/forms/common.py:111 +#: project/forms/common.py:124 msgid "100 km" msgstr "100 km" @@ -664,7 +672,7 @@ msgstr "Veranstalter" msgid "Enter a short, meaningful name for the event." msgstr "Gib einen kurzen, aussagekräftigen Namen für die Veranstaltung ein." -#: project/forms/event.py:119 project/forms/event_place.py:28 +#: project/forms/event.py:119 project/forms/event_place.py:34 msgid "Description" msgstr "Beschreibung" @@ -814,7 +822,7 @@ msgstr "Präsenzveranstaltung und online" msgid "Choose how people can attend the event." msgstr "Wähle aus, wie Personen an der Veranstaltung teilnehmen können." -#: project/forms/event.py:225 project/forms/event_place.py:27 +#: project/forms/event.py:225 project/forms/event_place.py:33 #: project/templates/manage/events.html:104 #: project/templates/manage/events.html:139 #: project/templates/manage/places.html:21 @@ -1060,23 +1068,23 @@ msgstr "Veranstaltungen finden" msgid "Find" msgstr "Finden" -#: project/forms/event_place.py:41 project/templates/event_place/create.html:5 +#: project/forms/event_place.py:47 project/templates/event_place/create.html:5 #: project/templates/event_place/create.html:21 #: project/templates/event_place/list.html:11 #: project/templates/manage/places.html:11 msgid "Create place" msgstr "Ort hinzufügen" -#: project/forms/event_place.py:45 project/templates/event_place/update.html:5 +#: project/forms/event_place.py:51 project/templates/event_place/update.html:5 #: project/templates/event_place/update.html:21 msgid "Update place" msgstr "Ort aktualisieren" -#: project/forms/event_place.py:49 project/templates/event_place/delete.html:6 +#: project/forms/event_place.py:55 project/templates/event_place/delete.html:6 msgid "Delete place" msgstr "Ort löschen" -#: project/forms/event_place.py:57 +#: project/forms/event_place.py:63 msgid "Find places" msgstr "Orte finden" @@ -1168,18 +1176,18 @@ msgstr "OAuth2 Client löschen" msgid "Revoke OAuth2 token" msgstr "OAuth2 Token widerrufen" -#: project/forms/organizer.py:43 project/templates/manage/organizers.html:11 +#: project/forms/organizer.py:49 project/templates/manage/organizers.html:11 #: project/templates/organizer/create.html:5 #: project/templates/organizer/create.html:21 msgid "Create organizer" msgstr "Veranstalter hinzufügen" -#: project/forms/organizer.py:47 project/templates/organizer/update.html:5 +#: project/forms/organizer.py:53 project/templates/organizer/update.html:5 #: project/templates/organizer/update.html:21 msgid "Update organizer" msgstr "Veranstalter aktualisieren" -#: project/forms/organizer.py:51 project/templates/organizer/delete.html:6 +#: project/forms/organizer.py:57 project/templates/organizer/delete.html:6 msgid "Delete organizer" msgstr "Veranstalter löschen" @@ -1731,7 +1739,7 @@ msgid "Switch organization" msgstr "Organisation wechseln" #: project/templates/developer/read.html:4 -#: project/templates/developer/read.html:8 project/templates/layout.html:320 +#: project/templates/developer/read.html:8 project/templates/layout.html:322 #: project/templates/profile.html:46 msgid "Developer" msgstr "Entwickler" diff --git a/project/translations/en/LC_MESSAGES/messages.mo b/project/translations/en/LC_MESSAGES/messages.mo index 476b637c43d5f36ca74928f1416c34df06596f52..febbb7c8d20d98be1fc58a2554cead59a5b7973b 100644 GIT binary patch delta 20 ccmaDa|6YE>Yfg4c1tTLXBcsiqIRCN&09OSE(*OVf delta 20 ccmaDa|6YE>Yfg3(1w#`n1C!04IRCN&09MZj&j0`b diff --git a/project/translations/en/LC_MESSAGES/messages.po b/project/translations/en/LC_MESSAGES/messages.po index b6c99d3..c6467e6 100644 --- a/project/translations/en/LC_MESSAGES/messages.po +++ b/project/translations/en/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-05-04 14:04+0200\n" +"POT-Creation-Date: 2023-05-09 22:22+0200\n" "PO-Revision-Date: 2021-04-30 15:04+0200\n" "Last-Translator: FULL NAME \n" "Language: en\n" @@ -199,25 +199,25 @@ msgstr "" msgid "You have received an invitation" msgstr "" -#: project/forms/admin.py:11 project/templates/layout.html:304 +#: project/forms/admin.py:11 project/templates/layout.html:305 #: project/views/root.py:55 msgid "Terms of service" msgstr "" -#: project/forms/admin.py:12 project/templates/layout.html:308 -#: project/views/root.py:63 +#: project/forms/admin.py:12 project/templates/layout.html:310 +#: project/views/root.py:67 msgid "Legal notice" msgstr "" #: project/forms/admin.py:13 project/templates/_macros.html:1473 -#: project/templates/layout.html:312 +#: project/templates/layout.html:314 #: project/templates/widget/event_suggestion/create.html:204 -#: project/views/admin_unit.py:83 project/views/root.py:71 +#: project/views/admin_unit.py:83 project/views/root.py:75 msgid "Contact" msgstr "" -#: project/forms/admin.py:14 project/templates/layout.html:316 -#: project/views/root.py:79 +#: project/forms/admin.py:14 project/templates/layout.html:318 +#: project/views/root.py:83 msgid "Privacy" msgstr "" @@ -230,8 +230,8 @@ msgstr "" msgid "Save" msgstr "" -#: project/forms/admin.py:21 project/forms/admin_unit_member.py:12 -#: project/forms/admin_unit_member.py:32 +#: project/forms/admin.py:21 project/forms/admin_unit_member.py:14 +#: project/forms/admin_unit_member.py:34 msgid "Roles" msgstr "" @@ -244,10 +244,10 @@ msgstr "" msgid "Delete user" msgstr "" -#: project/forms/admin.py:27 project/forms/admin_unit.py:47 -#: project/forms/admin_unit_member.py:11 project/forms/admin_unit_member.py:23 -#: project/forms/admin_unit_member.py:28 project/forms/event.py:107 -#: project/forms/event_suggestion.py:38 project/forms/organizer.py:27 +#: project/forms/admin.py:27 project/forms/admin_unit.py:53 +#: project/forms/admin_unit_member.py:12 project/forms/admin_unit_member.py:25 +#: project/forms/admin_unit_member.py:30 project/forms/event.py:107 +#: project/forms/event_suggestion.py:38 project/forms/organizer.py:33 #: project/forms/user.py:18 project/forms/user.py:23 #: project/templates/_macros.html:237 project/templates/_macros.html:1569 #: project/templates/admin/admin.html:27 project/templates/admin/email.html:4 @@ -309,13 +309,13 @@ msgstr "" msgid "Delete organization" msgstr "" -#: project/forms/admin.py:69 project/forms/admin_unit.py:28 -#: project/forms/admin_unit.py:134 project/forms/admin_unit.py:139 -#: project/forms/admin_unit.py:144 project/forms/event.py:85 -#: project/forms/event.py:114 project/forms/event_place.py:25 -#: project/forms/event_place.py:50 project/forms/event_suggestion.py:26 -#: project/forms/oauth2_client.py:66 project/forms/organizer.py:25 -#: project/forms/organizer.py:52 project/forms/reference_request.py:23 +#: project/forms/admin.py:69 project/forms/admin_unit.py:34 +#: project/forms/admin_unit.py:142 project/forms/admin_unit.py:147 +#: project/forms/admin_unit.py:152 project/forms/event.py:85 +#: project/forms/event.py:114 project/forms/event_place.py:30 +#: project/forms/event_place.py:56 project/forms/event_suggestion.py:26 +#: project/forms/oauth2_client.py:66 project/forms/organizer.py:30 +#: project/forms/organizer.py:58 project/forms/reference_request.py:23 #: project/templates/admin/admin_units.html:19 #: project/templates/event_place/list.html:19 #: project/templates/manage/organizers.html:18 @@ -348,139 +348,139 @@ msgstr "" msgid "Send newsletter" msgstr "" -#: project/forms/admin_unit.py:14 project/forms/event_place.py:12 -#: project/forms/organizer.py:12 +#: project/forms/admin_unit.py:15 project/forms/event_place.py:13 +#: project/forms/organizer.py:13 msgid "Street" msgstr "" -#: project/forms/admin_unit.py:15 project/forms/event.py:453 -#: project/forms/event_place.py:13 project/forms/organizer.py:13 +#: project/forms/admin_unit.py:18 project/forms/event.py:453 +#: project/forms/event_place.py:16 project/forms/organizer.py:16 msgid "Postal code" msgstr "" -#: project/forms/admin_unit.py:16 project/forms/event_place.py:14 -#: project/forms/organizer.py:14 +#: project/forms/admin_unit.py:21 project/forms/event_place.py:18 +#: project/forms/organizer.py:18 msgid "City" msgstr "" -#: project/forms/admin_unit.py:17 project/forms/event_place.py:15 -#: project/forms/organizer.py:15 +#: project/forms/admin_unit.py:23 project/forms/event_place.py:19 +#: project/forms/organizer.py:19 msgid "State" msgstr "" -#: project/forms/admin_unit.py:19 project/forms/event_place.py:17 -#: project/forms/organizer.py:17 +#: project/forms/admin_unit.py:25 project/forms/event_place.py:21 +#: project/forms/organizer.py:21 msgid "Latitude" msgstr "" -#: project/forms/admin_unit.py:22 project/forms/event_place.py:20 -#: project/forms/organizer.py:20 +#: project/forms/admin_unit.py:28 project/forms/event_place.py:24 +#: project/forms/organizer.py:24 msgid "Longitude" msgstr "" -#: project/forms/admin_unit.py:31 +#: project/forms/admin_unit.py:37 msgid "Short name" msgstr "" -#: project/forms/admin_unit.py:32 +#: project/forms/admin_unit.py:38 msgid "The short name is used to create a unique identifier for your events" msgstr "" -#: project/forms/admin_unit.py:40 project/templates/_macros.html:1611 +#: project/forms/admin_unit.py:46 project/templates/_macros.html:1611 msgid "Short name must contain only letters numbers or underscore" msgstr "" -#: project/forms/admin_unit.py:46 project/forms/event.py:106 -#: project/forms/event.py:124 project/forms/event_place.py:26 -#: project/forms/organizer.py:26 project/templates/manage/organizers.html:21 +#: project/forms/admin_unit.py:52 project/forms/event.py:106 +#: project/forms/event.py:124 project/forms/event_place.py:32 +#: project/forms/organizer.py:32 project/templates/manage/organizers.html:21 msgid "Link URL" msgstr "" -#: project/forms/admin_unit.py:48 project/forms/event.py:108 -#: project/forms/event_suggestion.py:31 project/forms/organizer.py:28 +#: project/forms/admin_unit.py:54 project/forms/event.py:108 +#: project/forms/event_suggestion.py:31 project/forms/organizer.py:34 #: project/templates/_macros.html:290 #: project/templates/manage/organizers.html:20 msgid "Phone" msgstr "" -#: project/forms/admin_unit.py:49 project/forms/event.py:109 -#: project/forms/organizer.py:29 project/templates/_macros.html:298 +#: project/forms/admin_unit.py:55 project/forms/event.py:109 +#: project/forms/organizer.py:35 project/templates/_macros.html:298 msgid "Fax" msgstr "" -#: project/forms/admin_unit.py:50 project/forms/organizer.py:30 +#: project/forms/admin_unit.py:56 project/forms/organizer.py:36 #: project/templates/manage/organizers.html:22 #: project/templates/manage/organizers.html:47 msgid "Logo" msgstr "" -#: project/forms/admin_unit.py:54 +#: project/forms/admin_unit.py:60 msgid "Allow verification requests" msgstr "" -#: project/forms/admin_unit.py:55 +#: project/forms/admin_unit.py:61 msgid "If set, unverified organizations may ask you for verification." msgstr "" -#: project/forms/admin_unit.py:61 +#: project/forms/admin_unit.py:67 msgid "Verification requests information" msgstr "" -#: project/forms/admin_unit.py:63 +#: project/forms/admin_unit.py:69 msgid "" "This text is shown to unverified organizations to help them decide " "whether they ask you for verification." msgstr "" -#: project/forms/admin_unit.py:79 +#: project/forms/admin_unit.py:85 msgid "Verify new organization" msgstr "" -#: project/forms/admin_unit.py:80 +#: project/forms/admin_unit.py:86 msgid "If set, events of the new organization are publicly visible." msgstr "" -#: project/forms/admin_unit.py:86 project/forms/reference_request.py:86 +#: project/forms/admin_unit.py:92 project/forms/reference_request.py:86 msgid "Verify reference requests automatically" msgstr "" -#: project/forms/admin_unit.py:87 +#: project/forms/admin_unit.py:93 msgid "" "If set, all upcoming reference requests of the new organization are " "verified automatically." msgstr "" -#: project/forms/admin_unit.py:98 project/templates/admin_unit/create.html:5 +#: project/forms/admin_unit.py:104 project/templates/admin_unit/create.html:5 #: project/templates/admin_unit/create.html:22 #: project/templates/manage/admin_units.html:32 msgid "Create organization" msgstr "" -#: project/forms/admin_unit.py:106 project/forms/admin_unit.py:129 +#: project/forms/admin_unit.py:112 project/forms/admin_unit.py:137 msgid "Update settings" msgstr "" -#: project/forms/admin_unit.py:110 +#: project/forms/admin_unit.py:117 msgid "Font" msgstr "" -#: project/forms/admin_unit.py:112 +#: project/forms/admin_unit.py:120 msgid "Background Color" msgstr "" -#: project/forms/admin_unit.py:118 +#: project/forms/admin_unit.py:126 msgid "Primary Color" msgstr "" -#: project/forms/admin_unit.py:124 +#: project/forms/admin_unit.py:132 msgid "Link Color" msgstr "" -#: project/forms/admin_unit.py:133 project/forms/user.py:17 +#: project/forms/admin_unit.py:141 project/forms/user.py:17 msgid "Request deletion" msgstr "" -#: project/forms/admin_unit.py:138 project/forms/user.py:22 +#: project/forms/admin_unit.py:146 project/forms/user.py:22 #: project/templates/admin_unit/cancel_deletion.html:6 #: project/templates/admin_unit/update.html:26 #: project/templates/manage/events.html:49 project/templates/profile.html:13 @@ -488,34 +488,34 @@ msgstr "" msgid "Cancel deletion" msgstr "" -#: project/forms/admin_unit.py:143 project/templates/layout.html:276 +#: project/forms/admin_unit.py:151 project/templates/layout.html:276 #: project/templates/manage/delete_membership.html:6 msgid "Leave organization" msgstr "" -#: project/forms/admin_unit_member.py:13 +#: project/forms/admin_unit_member.py:15 msgid "Invite" msgstr "" -#: project/forms/admin_unit_member.py:17 +#: project/forms/admin_unit_member.py:19 msgid "Accept" msgstr "" -#: project/forms/admin_unit_member.py:18 +#: project/forms/admin_unit_member.py:20 msgid "Decline" msgstr "" -#: project/forms/admin_unit_member.py:22 +#: project/forms/admin_unit_member.py:24 #: project/templates/manage/delete_invitation.html:6 msgid "Delete invitation" msgstr "" -#: project/forms/admin_unit_member.py:27 +#: project/forms/admin_unit_member.py:29 #: project/templates/manage/delete_member.html:6 msgid "Delete member" msgstr "" -#: project/forms/admin_unit_member.py:33 +#: project/forms/admin_unit_member.py:35 #: project/templates/admin_unit/update_member.html:6 msgid "Update member" msgstr "" @@ -528,74 +528,79 @@ msgstr "" msgid "Image" msgstr "" -#: project/forms/common.py:71 +#: project/forms/common.py:74 #, python-format msgid "" "I read and accept %(tos_open)sTerms of Service%(tos_close)s and " "%(privacy_open)sPrivacy%(privacy_close)s." msgstr "" -#: project/forms/common.py:82 +#: project/forms/common.py:84 +#, python-format +msgid "I read and accept %(privacy_open)sPrivacy%(privacy_close)s." +msgstr "" + +#: project/forms/common.py:95 msgid "0 (Little relevant)" msgstr "" -#: project/forms/common.py:87 +#: project/forms/common.py:100 msgid "5 (Default)" msgstr "" -#: project/forms/common.py:92 +#: project/forms/common.py:105 msgid "10 (Highlight)" msgstr "" -#: project/forms/common.py:96 +#: project/forms/common.py:109 msgid "Monday" msgstr "" -#: project/forms/common.py:97 +#: project/forms/common.py:110 msgid "Tueday" msgstr "" -#: project/forms/common.py:98 +#: project/forms/common.py:111 msgid "Wednesday" msgstr "" -#: project/forms/common.py:99 +#: project/forms/common.py:112 msgid "Thursday" msgstr "" -#: project/forms/common.py:100 +#: project/forms/common.py:113 msgid "Friday" msgstr "" -#: project/forms/common.py:101 +#: project/forms/common.py:114 msgid "Saturday" msgstr "" -#: project/forms/common.py:102 +#: project/forms/common.py:115 msgid "Sunday" msgstr "" -#: project/forms/common.py:106 +#: project/forms/common.py:119 msgid "500 m" msgstr "" -#: project/forms/common.py:107 +#: project/forms/common.py:120 msgid "5 km" msgstr "" -#: project/forms/common.py:108 +#: project/forms/common.py:121 msgid "10 km" msgstr "" -#: project/forms/common.py:109 +#: project/forms/common.py:122 msgid "20 km" msgstr "" -#: project/forms/common.py:110 +#: project/forms/common.py:123 msgid "50 km" msgstr "" -#: project/forms/common.py:111 +#: project/forms/common.py:124 msgid "100 km" msgstr "" @@ -642,7 +647,7 @@ msgstr "" msgid "Enter a short, meaningful name for the event." msgstr "" -#: project/forms/event.py:119 project/forms/event_place.py:28 +#: project/forms/event.py:119 project/forms/event_place.py:34 msgid "Description" msgstr "" @@ -783,7 +788,7 @@ msgstr "Online and offline" msgid "Choose how people can attend the event." msgstr "" -#: project/forms/event.py:225 project/forms/event_place.py:27 +#: project/forms/event.py:225 project/forms/event_place.py:33 #: project/templates/manage/events.html:104 #: project/templates/manage/events.html:139 #: project/templates/manage/places.html:21 @@ -1017,23 +1022,23 @@ msgstr "" msgid "Find" msgstr "" -#: project/forms/event_place.py:41 project/templates/event_place/create.html:5 +#: project/forms/event_place.py:47 project/templates/event_place/create.html:5 #: project/templates/event_place/create.html:21 #: project/templates/event_place/list.html:11 #: project/templates/manage/places.html:11 msgid "Create place" msgstr "" -#: project/forms/event_place.py:45 project/templates/event_place/update.html:5 +#: project/forms/event_place.py:51 project/templates/event_place/update.html:5 #: project/templates/event_place/update.html:21 msgid "Update place" msgstr "" -#: project/forms/event_place.py:49 project/templates/event_place/delete.html:6 +#: project/forms/event_place.py:55 project/templates/event_place/delete.html:6 msgid "Delete place" msgstr "" -#: project/forms/event_place.py:57 +#: project/forms/event_place.py:63 msgid "Find places" msgstr "" @@ -1121,18 +1126,18 @@ msgstr "" msgid "Revoke OAuth2 token" msgstr "" -#: project/forms/organizer.py:43 project/templates/manage/organizers.html:11 +#: project/forms/organizer.py:49 project/templates/manage/organizers.html:11 #: project/templates/organizer/create.html:5 #: project/templates/organizer/create.html:21 msgid "Create organizer" msgstr "" -#: project/forms/organizer.py:47 project/templates/organizer/update.html:5 +#: project/forms/organizer.py:53 project/templates/organizer/update.html:5 #: project/templates/organizer/update.html:21 msgid "Update organizer" msgstr "" -#: project/forms/organizer.py:51 project/templates/organizer/delete.html:6 +#: project/forms/organizer.py:57 project/templates/organizer/delete.html:6 msgid "Delete organizer" msgstr "" @@ -1682,7 +1687,7 @@ msgid "Switch organization" msgstr "" #: project/templates/developer/read.html:4 -#: project/templates/developer/read.html:8 project/templates/layout.html:320 +#: project/templates/developer/read.html:8 project/templates/layout.html:322 #: project/templates/profile.html:46 msgid "Developer" msgstr "" diff --git a/project/views/root.py b/project/views/root.py index b1ed986..9805f59 100644 --- a/project/views/root.py +++ b/project/views/root.py @@ -1,7 +1,7 @@ import json import os.path -from flask import render_template, request, send_from_directory, url_for +from flask import abort, render_template, request, send_from_directory, url_for from flask_babel import gettext from markupsafe import Markup from sqlalchemy import text @@ -54,6 +54,10 @@ def up(): def tos(): title = gettext("Terms of service") settings = upsert_settings() + + if not settings.tos: + abort(404) + content = Markup(settings.tos) return render_template("legal.html", title=title, content=content) diff --git a/tests/views/test_auth.py b/tests/views/test_auth.py index f24731c..753ac7e 100644 --- a/tests/views/test_auth.py +++ b/tests/views/test_auth.py @@ -1,6 +1,18 @@ -def test_register(client, app, utils): +import pytest + + +@pytest.mark.parametrize("settings", [True, False]) +def test_register(client, app, db, utils, settings): from project.services.user import find_user_by_email + if settings: + with app.app_context(): + from project.services.admin import upsert_settings + + settings = upsert_settings() + settings.tos = "Meine Nutzungsbedingungen" + db.session.commit() + utils.register("test@test.de", "MeinPasswortIstDasBeste") with app.app_context(): diff --git a/tests/views/test_root.py b/tests/views/test_root.py index ba132aa..51e3de0 100644 --- a/tests/views/test_root.py +++ b/tests/views/test_root.py @@ -1,5 +1,7 @@ import os +from tests.utils import UtilActions + def test_home(client, seeder, utils): url = utils.get_url("home") @@ -14,7 +16,11 @@ def test_up(app, utils): utils.get_ok("up") -def test_tos(app, db, utils): +def test_tos(app, db, utils: UtilActions): + url = utils.get_url("tos") + response = utils.get(url) + utils.assert_response_notFound(response) + with app.app_context(): from project.services.admin import upsert_settings