diff --git a/babel.cfg b/babel.cfg index c088b4c..7c5665d 100644 --- a/babel.cfg +++ b/babel.cfg @@ -1,4 +1,3 @@ [ignore: env/**] [python: project/**.py] -[jinja2: project/templates/**.html] -extensions=jinja2.ext.autoescape,jinja2.ext.with_ \ No newline at end of file +[jinja2: project/templates/**.html] \ No newline at end of file diff --git a/messages.pot b/messages.pot index 032c419..06f56dd 100644 --- a/messages.pot +++ b/messages.pot @@ -8,176 +8,176 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-04-08 13:20+0200\n" +"POT-Creation-Date: 2023-04-21 12:29+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" -#: project/i10n.py:13 +#: project/i10n.py:15 msgid "Event_Art" msgstr "" -#: project/i10n.py:14 +#: project/i10n.py:16 msgid "Event_Book" msgstr "" -#: project/i10n.py:15 +#: project/i10n.py:17 msgid "Event_Movie" msgstr "" -#: project/i10n.py:16 +#: project/i10n.py:18 msgid "Event_Family" msgstr "" -#: project/i10n.py:17 +#: project/i10n.py:19 msgid "Event_Festival" msgstr "" -#: project/i10n.py:18 +#: project/i10n.py:20 msgid "Event_Religious" msgstr "" -#: project/i10n.py:19 +#: project/i10n.py:21 msgid "Event_Shopping" msgstr "" -#: project/i10n.py:20 +#: project/i10n.py:22 msgid "Event_Comedy" msgstr "" -#: project/i10n.py:21 +#: project/i10n.py:23 msgid "Event_Music" msgstr "" -#: project/i10n.py:22 +#: project/i10n.py:24 msgid "Event_Dance" msgstr "" -#: project/i10n.py:23 +#: project/i10n.py:25 msgid "Event_Nightlife" msgstr "" -#: project/i10n.py:24 +#: project/i10n.py:26 msgid "Event_Theater" msgstr "" -#: project/i10n.py:25 +#: project/i10n.py:27 msgid "Event_Dining" msgstr "" -#: project/i10n.py:26 +#: project/i10n.py:28 msgid "Event_Conference" msgstr "" -#: project/i10n.py:27 +#: project/i10n.py:29 msgid "Event_Meetup" msgstr "" -#: project/i10n.py:28 +#: project/i10n.py:30 msgid "Event_Fitness" msgstr "" -#: project/i10n.py:29 +#: project/i10n.py:31 msgid "Event_Sports" msgstr "" -#: project/i10n.py:30 +#: project/i10n.py:32 msgid "Event_Other" msgstr "" -#: project/i10n.py:31 +#: project/i10n.py:33 msgid "Event_Exhibition" msgstr "" -#: project/i10n.py:32 +#: project/i10n.py:34 msgid "Event_Culture" msgstr "" -#: project/i10n.py:33 +#: project/i10n.py:35 msgid "Event_Tour" msgstr "" -#: project/i10n.py:34 +#: project/i10n.py:36 msgid "Event_OpenAir" msgstr "" -#: project/i10n.py:35 +#: project/i10n.py:37 msgid "Event_Stage" msgstr "" -#: project/i10n.py:36 +#: project/i10n.py:38 msgid "Event_Lecture" msgstr "" -#: project/i10n.py:37 +#: project/i10n.py:39 msgid "Typical Age range" msgstr "" -#: project/i10n.py:38 +#: project/i10n.py:40 msgid "Administrator" msgstr "" -#: project/i10n.py:39 +#: project/i10n.py:41 msgid "Event expert" msgstr "" -#: project/i10n.py:40 +#: project/i10n.py:42 msgid "EventReviewStatus.inbox" msgstr "" -#: project/i10n.py:41 +#: project/i10n.py:43 msgid "EventReviewStatus.verified" msgstr "" -#: project/i10n.py:42 +#: project/i10n.py:44 msgid "EventReviewStatus.rejected" msgstr "" -#: project/i10n.py:43 +#: project/i10n.py:45 msgid "Scope_openid" msgstr "" -#: project/i10n.py:44 +#: project/i10n.py:46 msgid "Scope_profile" msgstr "" -#: project/i10n.py:45 +#: project/i10n.py:47 msgid "Scope_user:read" msgstr "" -#: project/i10n.py:46 +#: project/i10n.py:48 msgid "Scope_user:write" msgstr "" -#: project/i10n.py:47 +#: project/i10n.py:49 msgid "Scope_organizer:write" msgstr "" -#: project/i10n.py:48 +#: project/i10n.py:50 msgid "Scope_place:write" msgstr "" -#: project/i10n.py:49 +#: project/i10n.py:51 msgid "Scope_event:write" msgstr "" -#: project/i10n.py:50 +#: project/i10n.py:52 msgid "Scope_eventlist:write" msgstr "" -#: project/i10n.py:51 +#: project/i10n.py:53 msgid "Scope_organization:read" msgstr "" -#: project/i10n.py:52 +#: project/i10n.py:54 msgid "Scope_organization:write" msgstr "" -#: project/i10n.py:53 +#: project/i10n.py:55 msgid "There must be no self-reference." msgstr "" @@ -193,30 +193,30 @@ msgstr "" msgid "message" msgstr "" -#: project/api/organization/resources.py:398 +#: project/api/organization/resources.py:401 #: project/views/admin_unit_member_invitation.py:85 msgid "You have received an invitation" msgstr "" -#: project/forms/admin.py:11 project/templates/layout.html:294 -#: project/views/root.py:53 +#: project/forms/admin.py:11 project/templates/layout.html:303 +#: project/views/root.py:55 msgid "Terms of service" msgstr "" -#: project/forms/admin.py:12 project/templates/layout.html:298 -#: project/views/root.py:61 +#: project/forms/admin.py:12 project/templates/layout.html:307 +#: project/views/root.py:63 msgid "Legal notice" msgstr "" -#: project/forms/admin.py:13 project/templates/_macros.html:1472 -#: project/templates/layout.html:302 +#: project/forms/admin.py:13 project/templates/_macros.html:1473 +#: project/templates/layout.html:311 #: project/templates/widget/event_suggestion/create.html:204 -#: project/views/admin_unit.py:73 project/views/root.py:69 +#: project/views/admin_unit.py:73 project/views/root.py:71 msgid "Contact" msgstr "" -#: project/forms/admin.py:14 project/templates/layout.html:306 -#: project/views/root.py:77 +#: project/forms/admin.py:14 project/templates/layout.html:315 +#: project/views/root.py:79 msgid "Privacy" msgstr "" @@ -243,11 +243,11 @@ msgstr "" msgid "Delete user" msgstr "" -#: project/forms/admin.py:27 project/forms/admin_unit.py:48 +#: 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/templates/_macros.html:237 project/templates/_macros.html:1568 +#: project/templates/_macros.html:237 project/templates/_macros.html:1569 #: project/templates/admin/admin.html:27 project/templates/admin/email.html:4 #: project/templates/admin/email.html:66 project/templates/admin/users.html:19 #: project/templates/manage/organizers.html:21 @@ -305,7 +305,7 @@ msgstr "" msgid "Delete organization" msgstr "" -#: project/forms/admin.py:69 project/forms/admin_unit.py:29 +#: project/forms/admin.py:69 project/forms/admin_unit.py:28 #: 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 @@ -343,130 +343,131 @@ msgstr "" msgid "Send newsletter" msgstr "" -#: project/forms/admin_unit.py:15 project/forms/event_place.py:12 +#: project/forms/admin_unit.py:14 project/forms/event_place.py:12 #: project/forms/organizer.py:12 msgid "Street" msgstr "" -#: project/forms/admin_unit.py:16 project/forms/event_place.py:13 -#: project/forms/organizer.py:13 +#: project/forms/admin_unit.py:15 project/forms/event.py:453 +#: project/forms/event_place.py:13 project/forms/organizer.py:13 msgid "Postal code" msgstr "" -#: project/forms/admin_unit.py:17 project/forms/event_place.py:14 +#: project/forms/admin_unit.py:16 project/forms/event_place.py:14 #: project/forms/organizer.py:14 msgid "City" msgstr "" -#: project/forms/admin_unit.py:18 project/forms/event_place.py:15 +#: project/forms/admin_unit.py:17 project/forms/event_place.py:15 #: project/forms/organizer.py:15 msgid "State" msgstr "" -#: project/forms/admin_unit.py:20 project/forms/event_place.py:17 +#: project/forms/admin_unit.py:19 project/forms/event_place.py:17 #: project/forms/organizer.py:17 msgid "Latitude" msgstr "" -#: project/forms/admin_unit.py:23 project/forms/event_place.py:20 +#: project/forms/admin_unit.py:22 project/forms/event_place.py:20 #: project/forms/organizer.py:20 msgid "Longitude" msgstr "" -#: project/forms/admin_unit.py:32 +#: project/forms/admin_unit.py:31 msgid "Short name" msgstr "" -#: project/forms/admin_unit.py:33 +#: project/forms/admin_unit.py:32 msgid "The short name is used to create a unique identifier for your events" msgstr "" -#: project/forms/admin_unit.py:41 project/templates/_macros.html:1610 +#: project/forms/admin_unit.py:40 project/templates/_macros.html:1611 msgid "Short name must contain only letters numbers or underscore" msgstr "" -#: project/forms/admin_unit.py:47 project/forms/event.py:106 +#: 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 msgid "Link URL" msgstr "" -#: project/forms/admin_unit.py:49 project/forms/event.py:108 +#: project/forms/admin_unit.py:48 project/forms/event.py:108 #: project/forms/event_suggestion.py:31 project/forms/organizer.py:28 #: project/templates/_macros.html:290 #: project/templates/manage/organizers.html:20 msgid "Phone" msgstr "" -#: project/forms/admin_unit.py:50 project/forms/event.py:109 +#: project/forms/admin_unit.py:49 project/forms/event.py:109 #: project/forms/organizer.py:29 project/templates/_macros.html:298 msgid "Fax" msgstr "" -#: project/forms/admin_unit.py:51 project/forms/organizer.py:30 +#: project/forms/admin_unit.py:50 project/forms/organizer.py:30 #: project/templates/manage/organizers.html:22 +#: project/templates/manage/organizers.html:47 msgid "Logo" msgstr "" -#: project/forms/admin_unit.py:55 +#: project/forms/admin_unit.py:54 msgid "Allow verification requests" msgstr "" -#: project/forms/admin_unit.py:56 +#: project/forms/admin_unit.py:55 msgid "If set, unverified organizations may ask you for verification." msgstr "" -#: project/forms/admin_unit.py:62 +#: project/forms/admin_unit.py:61 msgid "Verification requests information" msgstr "" -#: project/forms/admin_unit.py:64 +#: project/forms/admin_unit.py:63 msgid "" "This text is shown to unverified organizations to help them decide " "whether they ask you for verification." msgstr "" -#: project/forms/admin_unit.py:80 +#: project/forms/admin_unit.py:79 msgid "Verify new organization" msgstr "" -#: project/forms/admin_unit.py:81 +#: project/forms/admin_unit.py:80 msgid "If set, events of the new organization are publicly visible." msgstr "" -#: project/forms/admin_unit.py:87 project/forms/reference_request.py:86 +#: project/forms/admin_unit.py:86 project/forms/reference_request.py:86 msgid "Verify reference requests automatically" msgstr "" -#: project/forms/admin_unit.py:88 +#: project/forms/admin_unit.py:87 msgid "" "If set, all upcoming reference requests of the new organization are " "verified automatically." msgstr "" -#: project/forms/admin_unit.py:99 project/templates/admin_unit/create.html:5 +#: project/forms/admin_unit.py:98 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:107 project/forms/admin_unit.py:130 +#: project/forms/admin_unit.py:106 project/forms/admin_unit.py:129 msgid "Update settings" msgstr "" -#: project/forms/admin_unit.py:111 +#: project/forms/admin_unit.py:110 msgid "Font" msgstr "" -#: project/forms/admin_unit.py:113 +#: project/forms/admin_unit.py:112 msgid "Background Color" msgstr "" -#: project/forms/admin_unit.py:119 +#: project/forms/admin_unit.py:118 msgid "Primary Color" msgstr "" -#: project/forms/admin_unit.py:125 +#: project/forms/admin_unit.py:124 msgid "Link Color" msgstr "" @@ -576,7 +577,7 @@ msgstr "" msgid "100 km" msgstr "" -#: project/forms/event.py:38 project/templates/manage/events.html:85 +#: project/forms/event.py:38 project/templates/manage/events.html:94 msgid "Start" msgstr "" @@ -598,16 +599,16 @@ msgstr "" msgid "All-day" msgstr "" -#: project/forms/event.py:54 project/templates/_macros.html:1790 +#: project/forms/event.py:54 project/templates/_macros.html:1801 #: project/templates/widget/event_suggestion/create.html:240 msgid "Recurring event" msgstr "" -#: project/forms/event.py:61 project/templates/_macros.html:1329 +#: project/forms/event.py:61 project/templates/_macros.html:1330 msgid "The start must be before the end." msgstr "" -#: project/forms/event.py:67 project/templates/_macros.html:1346 +#: project/forms/event.py:67 project/templates/_macros.html:1347 msgid "An event can last a maximum of 14 days." msgstr "" @@ -692,7 +693,7 @@ msgid "If the participants needs to register for the event." msgstr "" #: project/forms/event.py:170 project/templates/_macros.html:251 -#: project/templates/layout.html:110 +#: project/templates/layout.html:115 msgid "Booked up" msgstr "" @@ -748,11 +749,11 @@ msgstr "" msgid "EventAttendanceMode.offline" msgstr "" -#: project/forms/event.py:217 project/templates/layout.html:98 +#: project/forms/event.py:217 project/templates/layout.html:103 msgid "EventAttendanceMode.online" msgstr "" -#: project/forms/event.py:219 project/templates/layout.html:101 +#: project/forms/event.py:219 project/templates/layout.html:106 msgid "EventAttendanceMode.mixed" msgstr "" @@ -761,7 +762,10 @@ msgid "Choose how people can attend the event." msgstr "" #: project/forms/event.py:225 project/forms/event_place.py:27 +#: project/templates/manage/events.html:98 +#: project/templates/manage/events.html:133 #: project/templates/manage/places.html:21 +#: project/templates/manage/places.html:39 #: project/templates/widget/event_suggestion/create.html:258 msgid "Photo" msgstr "" @@ -825,7 +829,7 @@ msgstr "" #: project/templates/event_place/create.html:31 #: project/templates/event_place/delete.html:13 #: project/templates/event_place/update.html:31 -#: project/templates/manage/events.html:88 +#: project/templates/manage/events.html:97 msgid "Place" msgstr "" @@ -842,7 +846,7 @@ msgstr "" #: project/forms/event_suggestion.py:60 project/templates/_macros.html:475 #: project/templates/_macros.html:647 project/templates/event/create.html:253 #: project/templates/event/update.html:156 -#: project/templates/manage/events.html:87 +#: project/templates/manage/events.html:96 #: project/templates/organizer/create.html:27 #: project/templates/organizer/delete.html:13 #: project/templates/organizer/update.html:27 @@ -894,23 +898,23 @@ msgstr "" msgid "EventStatus.scheduled" msgstr "" -#: project/forms/event.py:389 project/templates/layout.html:64 -#: project/templates/layout.html:79 +#: project/forms/event.py:389 project/templates/layout.html:69 +#: project/templates/layout.html:84 msgid "EventStatus.cancelled" msgstr "" -#: project/forms/event.py:390 project/templates/layout.html:67 -#: project/templates/layout.html:82 +#: project/forms/event.py:390 project/templates/layout.html:72 +#: project/templates/layout.html:87 msgid "EventStatus.movedOnline" msgstr "" -#: project/forms/event.py:391 project/templates/layout.html:70 -#: project/templates/layout.html:85 +#: project/forms/event.py:391 project/templates/layout.html:75 +#: project/templates/layout.html:90 msgid "EventStatus.postponed" msgstr "" -#: project/forms/event.py:392 project/templates/layout.html:73 -#: project/templates/layout.html:88 +#: project/forms/event.py:392 project/templates/layout.html:78 +#: project/templates/layout.html:93 msgid "EventStatus.rescheduled" msgstr "" @@ -939,7 +943,7 @@ msgstr "" msgid "Update event" msgstr "" -#: project/forms/event.py:423 project/templates/_macros.html:1286 +#: project/forms/event.py:423 project/templates/_macros.html:1287 #: project/templates/event/actions.html:66 #: project/templates/event/delete.html:6 msgid "Delete event" @@ -964,12 +968,8 @@ msgstr "" msgid "Category" msgstr "" -#: project/forms/event.py:445 -msgid "Find events" -msgstr "" - -#: project/forms/event_date.py:24 project/forms/planing.py:22 -#: project/templates/_macros.html:305 +#: project/forms/event.py:446 project/forms/event_date.py:24 +#: project/forms/planing.py:22 project/templates/_macros.html:305 #: project/templates/admin_unit/create.html:38 #: project/templates/admin_unit/update.html:39 #: project/templates/event_place/create.html:40 @@ -981,10 +981,15 @@ msgstr "" msgid "Location" msgstr "" -#: project/forms/event_date.py:26 project/forms/planing.py:24 +#: project/forms/event.py:448 project/forms/event_date.py:26 +#: project/forms/planing.py:24 msgid "Distance" msgstr "" +#: project/forms/event.py:455 +msgid "Find events" +msgstr "" + #: project/forms/event_date.py:39 project/forms/planing.py:36 #: project/templates/widget/event_date/list.html:82 msgid "Find" @@ -1118,7 +1123,7 @@ msgstr "" #: project/templates/admin/delete_admin_unit.html:13 #: project/templates/admin_unit/create.html:28 #: project/templates/admin_unit/update.html:29 -#: project/templates/layout.html:242 +#: project/templates/layout.html:247 msgid "Organization" msgstr "" @@ -1143,7 +1148,7 @@ msgstr "" msgid "Delete request" msgstr "" -#: project/forms/reference_request.py:28 project/templates/_macros.html:1484 +#: project/forms/reference_request.py:28 project/templates/_macros.html:1485 #: project/templates/event_suggestion/review_status.html:18 #: project/templates/reference_request/review_status.html:12 msgid "Review status" @@ -1197,15 +1202,15 @@ msgstr "" msgid "register_email_desc" msgstr "" -#: project/forms/security.py:43 +#: project/forms/security.py:47 msgid "login_confirmation_required" msgstr "" -#: project/forms/security.py:53 +#: project/forms/security.py:57 msgid "Allow" msgstr "" -#: project/forms/security.py:54 +#: project/forms/security.py:58 msgid "Deny" msgstr "" @@ -1219,7 +1224,7 @@ msgstr "" msgid "Information about new features and improvements." msgstr "" -#: project/forms/widgets.py:154 +#: project/forms/widgets.py:155 msgid "This field is required." msgstr "" @@ -1259,22 +1264,22 @@ msgstr "" #: project/templates/event/actions.html:25 #: project/templates/event/create.html:230 #: project/templates/event/update.html:122 -#: project/templates/manage/events.html:86 +#: project/templates/manage/events.html:95 #: project/templates/widget/event_suggestion/create.html:229 msgid "Event" msgstr "" -#: project/templates/_macros.html:393 project/templates/_macros.html:978 +#: project/templates/_macros.html:393 project/templates/_macros.html:979 msgid "Date" msgstr "" #: project/templates/_macros.html:420 project/templates/_macros.html:579 -#: project/templates/_macros.html:1553 project/templates/event/actions.html:51 +#: project/templates/_macros.html:1554 project/templates/event/actions.html:51 msgid "Share" msgstr "" #: project/templates/_macros.html:424 project/templates/_macros.html:583 -#: project/templates/_macros.html:1583 +#: project/templates/_macros.html:1584 msgid "Add to calendar" msgstr "" @@ -1295,7 +1300,7 @@ msgstr "" msgid "The event takes place both offline and online." msgstr "" -#: project/templates/_macros.html:587 project/templates/layout.html:168 +#: project/templates/_macros.html:587 project/templates/layout.html:173 #: project/templates/user/favorite_events.html:4 msgid "Favorite events" msgstr "" @@ -1303,8 +1308,8 @@ msgstr "" #: project/templates/_macros.html:590 project/templates/_macros.html:633 #: project/templates/_macros.html:765 #: project/templates/admin/admin_units.html:34 -#: project/templates/admin/users.html:34 -#: project/templates/manage/events.html:100 +#: project/templates/admin/users.html:32 +#: project/templates/manage/events.html:110 #: project/templates/manage/members.html:35 #: project/templates/manage/organizers.html:33 #: project/templates/manage/places.html:31 @@ -1318,9 +1323,9 @@ msgstr "" msgid "Referenced by" msgstr "" -#: project/templates/_macros.html:703 project/templates/_macros.html:1296 +#: project/templates/_macros.html:703 project/templates/_macros.html:1297 #: project/templates/event/actions.html:38 -#: project/templates/manage/events.html:107 +#: project/templates/manage/events.html:117 #: project/templates/manage/references_incoming.html:10 msgid "Reference event" msgstr "" @@ -1331,9 +1336,9 @@ msgstr "" msgid "Reference requests" msgstr "" -#: project/templates/_macros.html:723 project/templates/_macros.html:1293 +#: project/templates/_macros.html:723 project/templates/_macros.html:1294 #: project/templates/event/actions.html:32 -#: project/templates/manage/events.html:105 +#: project/templates/manage/events.html:115 msgid "Request reference" msgstr "" @@ -1347,17 +1352,17 @@ msgstr "" msgid "Search location on Google" msgstr "" -#: project/templates/_macros.html:895 +#: project/templates/_macros.html:896 #, python-format msgid "%(count)d event dates" msgstr "" -#: project/templates/_macros.html:918 project/templates/_macros.html:920 +#: project/templates/_macros.html:919 project/templates/_macros.html:921 #: project/templates/event_date/list.html:321 msgid "First" msgstr "" -#: project/templates/_macros.html:923 project/templates/_macros.html:925 +#: project/templates/_macros.html:924 project/templates/_macros.html:926 #: project/templates/event_date/list.html:322 #: project/templates/widget/event_suggestion/create.html:193 #: project/templates/widget/event_suggestion/create.html:218 @@ -1368,12 +1373,12 @@ msgstr "" msgid "Previous" msgstr "" -#: project/templates/_macros.html:927 +#: project/templates/_macros.html:928 #, python-format msgid "Page %(page)d of %(pages)d (%(total)d total)" msgstr "" -#: project/templates/_macros.html:929 project/templates/_macros.html:931 +#: project/templates/_macros.html:930 project/templates/_macros.html:932 #: project/templates/event_date/list.html:324 #: project/templates/widget/event_suggestion/create.html:194 #: project/templates/widget/event_suggestion/create.html:219 @@ -1383,97 +1388,97 @@ msgstr "" msgid "Next" msgstr "" -#: project/templates/_macros.html:934 project/templates/_macros.html:936 +#: project/templates/_macros.html:935 project/templates/_macros.html:937 #: project/templates/event_date/list.html:325 msgid "Last" msgstr "" -#: project/templates/_macros.html:1001 +#: project/templates/_macros.html:1002 msgid "Radius" msgstr "" -#: project/templates/_macros.html:1215 +#: project/templates/_macros.html:1216 msgid "Edit image" msgstr "" -#: project/templates/_macros.html:1236 +#: project/templates/_macros.html:1237 msgid "Close" msgstr "" -#: project/templates/_macros.html:1237 +#: project/templates/_macros.html:1238 msgid "Okay" msgstr "" -#: project/templates/_macros.html:1249 +#: project/templates/_macros.html:1250 msgid "Choose image file" msgstr "" -#: project/templates/_macros.html:1285 project/templates/event/actions.html:65 +#: project/templates/_macros.html:1286 project/templates/event/actions.html:65 #: project/templates/event/delete.html:12 msgid "Edit event" msgstr "" -#: project/templates/_macros.html:1289 project/templates/event/actions.html:58 +#: project/templates/_macros.html:1290 project/templates/event/actions.html:58 msgid "Duplicate event" msgstr "" -#: project/templates/_macros.html:1300 project/templates/event/actions.html:44 -#: project/templates/manage/events.html:111 +#: project/templates/_macros.html:1301 project/templates/event/actions.html:44 +#: project/templates/manage/events.html:121 msgid "Add to list" msgstr "" -#: project/templates/_macros.html:1303 project/templates/manage/events.html:114 +#: project/templates/_macros.html:1304 project/templates/manage/events.html:124 msgid "More" msgstr "" -#: project/templates/_macros.html:1350 +#: project/templates/_macros.html:1351 msgid "Please enter a valid time, between 00:00 and 23:59." msgstr "" -#: project/templates/_macros.html:1378 +#: project/templates/_macros.html:1379 #, python-format msgid "Just use %(term)s" msgstr "" -#: project/templates/_macros.html:1444 +#: project/templates/_macros.html:1445 msgid "Event suggestion" msgstr "" -#: project/templates/_macros.html:1562 +#: project/templates/_macros.html:1563 msgid "Link copied" msgstr "" -#: project/templates/_macros.html:1562 +#: project/templates/_macros.html:1563 msgid "Copy link" msgstr "" -#: project/templates/_macros.html:1592 +#: project/templates/_macros.html:1593 msgid "Google calendar" msgstr "" -#: project/templates/_macros.html:1594 +#: project/templates/_macros.html:1595 msgid "Apple calendar" msgstr "" -#: project/templates/_macros.html:1595 +#: project/templates/_macros.html:1596 msgid "Yahoo calendar" msgstr "" -#: project/templates/_macros.html:1596 +#: project/templates/_macros.html:1597 msgid "Other calendar" msgstr "" -#: project/templates/_macros.html:1791 +#: project/templates/_macros.html:1802 msgid "Remove event date" msgstr "" -#: project/templates/_macros.html:1820 project/templates/event/create.html:176 +#: project/templates/_macros.html:1831 project/templates/event/create.html:176 #: project/templates/event/update.html:99 #: project/templates/widget/event_suggestion/create.html:129 msgid "Enter organizer" msgstr "" -#: project/templates/_macros.html:1844 +#: project/templates/_macros.html:1855 msgid "Enter list name" msgstr "" @@ -1481,7 +1486,7 @@ msgstr "" msgid "Manage" msgstr "" -#: project/templates/home.html:37 project/templates/layout.html:158 +#: project/templates/home.html:37 project/templates/layout.html:163 #: project/templates/manage/admin_units.html:28 #: project/templates/manage/verification_requests_outgoing.html:13 #: project/templates/security/login_user.html:21 @@ -1493,9 +1498,9 @@ msgstr "" msgid "Features" msgstr "" -#: project/templates/layout.html:152 project/templates/layout.html:200 +#: project/templates/layout.html:157 project/templates/layout.html:205 #: project/templates/manage/events.html:6 -#: project/templates/manage/events.html:43 +#: project/templates/manage/events.html:48 #: project/templates/manage/events_vue.html:4 msgid "Events" msgstr "" @@ -1503,18 +1508,18 @@ msgstr "" #: project/templates/admin/admin.html:19 #: project/templates/admin/admin_units.html:4 #: project/templates/admin/admin_units.html:11 -#: project/templates/layout.html:153 project/templates/layout.html:166 +#: project/templates/layout.html:158 project/templates/layout.html:171 #: project/templates/manage/admin_units.html:3 #: project/templates/manage/admin_units.html:26 #: project/templates/organization/main.html:4 msgid "Organizations" msgstr "" -#: project/templates/layout.html:154 +#: project/templates/layout.html:159 msgid "Planing" msgstr "" -#: project/templates/layout.html:167 project/templates/layout.html:256 +#: project/templates/layout.html:172 project/templates/layout.html:265 #: project/templates/oauth2_client/list.html:10 #: project/templates/oauth2_client/read.html:10 #: project/templates/oauth2_token/list.html:10 project/templates/profile.html:4 @@ -1527,87 +1532,87 @@ msgstr "" #: project/templates/admin/email.html:65 #: project/templates/admin/newsletter.html:92 #: project/templates/admin/settings.html:10 -#: project/templates/admin/users.html:10 project/templates/layout.html:171 +#: project/templates/admin/users.html:10 project/templates/layout.html:176 msgid "Admin" msgstr "" -#: project/templates/layout.html:175 +#: project/templates/layout.html:180 msgid "Logout" msgstr "" -#: project/templates/layout.html:206 +#: project/templates/layout.html:211 msgid "Show events" msgstr "" #: project/templates/event/create.html:5 -#: project/templates/event/create.html:221 project/templates/layout.html:207 -#: project/templates/manage/events.html:44 +#: project/templates/event/create.html:221 project/templates/layout.html:212 +#: project/templates/manage/events.html:49 #: project/templates/manage/organizers.html:38 msgid "Create event" msgstr "" -#: project/templates/layout.html:208 +#: project/templates/layout.html:213 msgid "Import event" msgstr "" -#: project/templates/layout.html:210 +#: project/templates/layout.html:215 #: project/templates/manage/event_lists.html:4 msgid "Event lists" msgstr "" -#: project/templates/layout.html:213 +#: project/templates/layout.html:218 msgid "Review suggestions" msgstr "" -#: project/templates/layout.html:223 +#: project/templates/layout.html:228 #: project/templates/manage/references_incoming.html:5 #: project/templates/manage/references_outgoing.html:5 msgid "References" msgstr "" -#: project/templates/layout.html:229 +#: project/templates/layout.html:234 #: project/templates/manage/references_incoming.html:9 msgid "Incoming references" msgstr "" -#: project/templates/layout.html:230 +#: project/templates/layout.html:235 #: project/templates/manage/references_outgoing.html:9 msgid "Outgoing references" msgstr "" -#: project/templates/layout.html:232 +#: project/templates/layout.html:237 #: project/templates/manage/reference_requests_incoming.html:9 msgid "Incoming reference requests" msgstr "" -#: project/templates/layout.html:237 +#: project/templates/layout.html:242 #: project/templates/manage/reference_requests_outgoing.html:9 msgid "Outgoing reference requests" msgstr "" -#: project/templates/layout.html:245 project/templates/manage/organizers.html:5 +#: project/templates/layout.html:250 project/templates/manage/organizers.html:5 #: project/templates/manage/organizers.html:10 #: project/templates/organizer/main.html:4 msgid "Organizers" msgstr "" #: project/templates/event_place/list.html:3 -#: project/templates/event_place/list.html:7 project/templates/layout.html:246 +#: project/templates/event_place/list.html:7 project/templates/layout.html:251 #: project/templates/manage/places.html:5 #: project/templates/manage/places.html:10 msgid "Places" msgstr "" -#: project/templates/layout.html:248 project/templates/manage/members.html:5 +#: project/templates/layout.html:253 project/templates/manage/members.html:5 #: project/templates/manage/members.html:28 msgid "Members" msgstr "" -#: project/templates/layout.html:249 project/templates/manage/relations.html:4 +#: project/templates/layout.html:254 project/templates/manage/relations.html:4 msgid "Relations" msgstr "" -#: project/templates/layout.html:251 +#: project/templates/layout.html:256 #: project/templates/manage/admin_units.html:17 #: project/templates/manage/organization_invitations.html:4 #: project/templates/user/organization_invitations.html:4 @@ -1619,27 +1624,33 @@ msgstr "" #: project/templates/admin/settings.html:11 #: project/templates/admin_unit/update.html:6 #: project/templates/admin_unit/update.html:23 -#: project/templates/layout.html:253 project/templates/manage/widgets.html:11 +#: project/templates/layout.html:259 project/templates/manage/widgets.html:11 #: project/templates/manage/widgets.html:15 project/templates/profile.html:19 msgid "Settings" msgstr "" -#: project/templates/layout.html:254 +#: project/templates/layout.html:260 project/templates/manage/export.html:4 +#: project/templates/manage/export.html:65 +msgid "Export" +msgstr "" + +#: project/templates/layout.html:262 #: project/templates/manage/custom_widgets.html:13 msgid "Custom widgets" msgstr "" -#: project/templates/layout.html:255 project/templates/manage/reviews.html:10 +#: project/templates/layout.html:263 project/templates/manage/reviews.html:10 #: project/templates/manage/widgets.html:5 #: project/templates/manage/widgets.html:9 msgid "Widgets" msgstr "" -#: project/templates/layout.html:266 +#: project/templates/layout.html:275 msgid "Switch organization" msgstr "" -#: project/templates/developer/read.html:4 project/templates/layout.html:310 +#: project/templates/developer/read.html:4 +#: project/templates/developer/read.html:8 project/templates/layout.html:319 #: project/templates/profile.html:33 msgid "Developer" msgstr "" @@ -1667,7 +1678,7 @@ msgid "Users" msgstr "" #: project/templates/admin/admin_units.html:33 -#: project/templates/manage/events.html:99 +#: project/templates/manage/events.html:109 #: project/templates/manage/organizers.html:32 #: project/templates/manage/references_incoming.html:19 #: project/templates/manage/references_outgoing.html:19 @@ -1675,8 +1686,8 @@ msgid "View" msgstr "" #: project/templates/admin/admin_units.html:35 -#: project/templates/admin/users.html:35 -#: project/templates/manage/events.html:101 +#: project/templates/admin/users.html:33 +#: project/templates/manage/events.html:111 #: project/templates/manage/members.html:21 #: project/templates/manage/members.html:36 #: project/templates/manage/organizers.html:34 @@ -1690,7 +1701,7 @@ msgstr "" msgid "User" msgstr "" -#: project/templates/admin/email.html:47 project/views/admin.py:151 +#: project/templates/admin/email.html:47 project/views/admin.py:155 msgid "Mail sent successfully" msgstr "" @@ -1733,6 +1744,21 @@ msgstr "" msgid "Verification requests" msgstr "" +#: project/templates/developer/read.html:16 +#: project/templates/manage/export.html:67 +msgid "Download" +msgstr "" + +#: project/templates/developer/read.html:20 +#: project/templates/manage/export.html:71 +msgid "All data" +msgstr "" + +#: project/templates/developer/read.html:22 +#: project/templates/manage/export.html:73 +msgid "No files available" +msgstr "" + #: project/templates/email/event_report_notice.html:4 msgid "There is a new event report." msgstr "" @@ -1861,7 +1887,7 @@ msgstr "" #: project/templates/event/actions.html:74 project/templates/event/read.html:32 #: project/templates/event_date/read.html:34 -#: project/templates/manage/events.html:131 +#: project/templates/manage/events.html:145 msgid "Add event to list" msgstr "" @@ -1972,34 +1998,42 @@ msgstr "" msgid "Member" msgstr "" -#: project/templates/manage/events.html:37 +#: project/templates/manage/events.html:42 msgid "" "The organization is not verified. Events are therefore not publicly " "visible." msgstr "" -#: project/templates/manage/events.html:38 +#: project/templates/manage/events.html:43 msgid "Verify organization" msgstr "" -#: project/templates/manage/events.html:76 +#: project/templates/manage/events.html:85 msgid "More filters" msgstr "" -#: project/templates/manage/events.html:89 +#: project/templates/manage/events.html:99 +#: project/templates/manage/events.html:134 msgid "Number of references" msgstr "" -#: project/templates/manage/events.html:89 +#: project/templates/manage/events.html:99 +#: project/templates/manage/events.html:134 msgid "Number of reference requests." msgstr "" -#: project/templates/manage/events.html:102 +#: project/templates/manage/events.html:112 msgid "Duplicate" msgstr "" +#: project/templates/manage/export.html:79 +msgid "Create export files" +msgstr "" + #: project/templates/manage/organizers.html:23 +#: project/templates/manage/organizers.html:48 #: project/templates/manage/places.html:22 +#: project/templates/manage/places.html:40 msgid "Number of events" msgstr "" @@ -2009,6 +2043,7 @@ msgid "View events" msgstr "" #: project/templates/manage/places.html:20 +#: project/templates/manage/places.html:38 msgid "Coordinates" msgstr "" @@ -2133,7 +2168,7 @@ msgstr "" msgid "You do not have an account yet? Not a problem!" msgstr "" -#: project/templates/security/login_user.html:44 project/views/widget.py:159 +#: project/templates/security/login_user.html:44 project/views/widget.py:155 msgid "Register for free" msgstr "" @@ -2169,30 +2204,30 @@ msgstr "" msgid "Organization successfully deleted" msgstr "" -#: project/views/admin.py:111 project/views/manage.py:371 +#: project/views/admin.py:111 project/views/manage.py:443 #: project/views/user.py:28 msgid "Settings successfully updated" msgstr "" -#: project/views/admin.py:140 +#: project/views/admin.py:144 #, python-format msgid "Test mail from %(site_name)s" msgstr "" -#: project/views/admin.py:179 +#: project/views/admin.py:187 #, python-format msgid "Newsletter from %(site_name)s" msgstr "" -#: project/views/admin.py:229 +#: project/views/admin.py:237 msgid "User successfully updated" msgstr "" -#: project/views/admin.py:249 +#: project/views/admin.py:257 msgid "Entered email does not match user email" msgstr "" -#: project/views/admin.py:254 +#: project/views/admin.py:262 msgid "User successfully deleted" msgstr "" @@ -2246,27 +2281,27 @@ msgstr "" msgid "Invitation successfully deleted" msgstr "" -#: project/views/event.py:184 +#: project/views/event.py:181 msgid "Event successfully published" msgstr "" -#: project/views/event.py:186 +#: project/views/event.py:183 msgid "Draft successfully saved" msgstr "" -#: project/views/event.py:229 +#: project/views/event.py:226 msgid "Event successfully updated" msgstr "" -#: project/views/event.py:255 +#: project/views/event.py:252 msgid "Event successfully deleted" msgstr "" -#: project/views/event.py:407 +#: project/views/event.py:417 msgid "Referenced event changed" msgstr "" -#: project/views/event.py:430 +#: project/views/event.py:440 msgid "New event report" msgstr "" @@ -2422,17 +2457,17 @@ msgid "" " the invitation was sent to." msgstr "" -#: project/views/widget.py:151 +#: project/views/widget.py:147 msgid "Thank you so much! The event is being verified." msgstr "" -#: project/views/widget.py:155 +#: project/views/widget.py:151 msgid "" "For more options and your own calendar of events, you can register for " "free." msgstr "" -#: project/views/widget.py:221 +#: project/views/widget.py:217 msgid "New event review" msgstr "" diff --git a/project/__init__.py b/project/__init__.py index fd23c83..c01a27b 100644 --- a/project/__init__.py +++ b/project/__init__.py @@ -132,6 +132,7 @@ cache_path = ( cache_env if os.path.isabs(cache_env) else os.path.join(app.root_path, cache_env) ) dump_path = os.path.join(cache_path, "dump") +dump_org_path = os.path.join(cache_path, "dump_org") img_path = os.path.join(cache_path, "img") sitemap_file = "sitemap.xml" robots_txt_file = "robots.txt" diff --git a/project/celery_tasks.py b/project/celery_tasks.py index 384f04f..e6daea8 100644 --- a/project/celery_tasks.py +++ b/project/celery_tasks.py @@ -6,6 +6,7 @@ from project import celery @celery.on_after_configure.connect def setup_periodic_tasks(sender, **kwargs): sender.add_periodic_task(crontab(hour=0, minute=0), clear_images_task) + sender.add_periodic_task(crontab(hour=0, minute=5), clear_admin_unit_dumps_task) sender.add_periodic_task(crontab(hour=1, minute=0), update_recurring_dates_task) sender.add_periodic_task(crontab(hour=2, minute=0), dump_all_task) sender.add_periodic_task(crontab(hour=3, minute=0), seo_generate_sitemap_task) @@ -52,6 +53,16 @@ def dump_admin_unit_task(admin_unit_id): dump_admin_unit(admin_unit_id) +@celery.task( + acks_late=True, + reject_on_worker_lost=True, +) +def clear_admin_unit_dumps_task(): + from project.services.dump import clear_admin_unit_dumps + + clear_admin_unit_dumps() + + @celery.task( acks_late=True, reject_on_worker_lost=True, diff --git a/project/cli/dump.py b/project/cli/dump.py index 647b1fa..42643ea 100644 --- a/project/cli/dump.py +++ b/project/cli/dump.py @@ -1,3 +1,4 @@ +import click from flask.cli import AppGroup from project import app @@ -11,4 +12,10 @@ def dump_all(): dump.dump_all() +@dump_cli.command("organization") +@click.argument("admin_unit_id") +def dump_admin_unit(admin_unit_id): + dump.dump_admin_unit(admin_unit_id) + + app.cli.add_command(dump_cli) diff --git a/project/jinja_filters.py b/project/jinja_filters.py index 05c0164..d6ffbae 100644 --- a/project/jinja_filters.py +++ b/project/jinja_filters.py @@ -35,6 +35,16 @@ def ensure_link_scheme(link: str): return f"https://{link}" +def human_file_size(bytes, units=[" bytes", "KB", "MB", "GB", "TB", "PB", "EB"]): + return ( + str(bytes) + units[0] + if bytes < 1024 + else human_file_size(bytes >> 10, units[1:]) + if units[1:] + else f"{bytes>>10}ZB" + ) + + app.jinja_env.filters["event_category_name"] = lambda u: get_event_category_name(u) app.jinja_env.filters["loc_enum"] = lambda u: get_localized_enum_name(u) app.jinja_env.filters["loc_scope"] = lambda s: get_localized_scope(s) @@ -45,6 +55,7 @@ app.jinja_env.filters["any_dict_value_true"] = any_dict_value_true app.jinja_env.filters["ensure_link_scheme"] = lambda s: ensure_link_scheme(s) app.jinja_env.filters["place_str"] = lambda p: get_place_str(p) app.jinja_env.filters["location_str"] = lambda location: get_location_str(location) +app.jinja_env.filters["human_file_size"] = lambda size: human_file_size(size) def get_base_url(): diff --git a/project/services/dump.py b/project/services/dump.py index 0d7f162..4cea886 100644 --- a/project/services/dump.py +++ b/project/services/dump.py @@ -5,7 +5,7 @@ import shutil from sqlalchemy import and_ from sqlalchemy.orm import joinedload -from project import app, db, dump_path +from project import app, db, dump_org_path, dump_path from project.api.event.schemas import EventDumpSchema from project.api.event_category.schemas import EventCategoryDumpSchema from project.api.event_reference.schemas import EventReferenceDumpSchema @@ -22,12 +22,12 @@ from project.models import ( EventReference, PublicStatus, ) -from project.utils import make_dir +from project.utils import clear_files_in_dir, make_dir class Dumper(object): - def __init__(self, dump_path, file_base_name): - self.dump_path = dump_path + def __init__(self, dump_base_path, file_base_name): + self.dump_base_path = dump_base_path self.file_base_name = file_base_name self.tmp_path = None @@ -91,7 +91,7 @@ class Dumper(object): app.logger.info(f"{len(items)} item(s) dumped to {path}.") - def dump_item(self, items, schema, file_base_name): # pragma: no cover + def dump_item(self, items, schema, file_base_name): result = schema.dump(items) path = os.path.join(self.tmp_path, file_base_name + ".json") @@ -101,18 +101,18 @@ class Dumper(object): app.logger.info(f"Item dumped to {path}.") def setup_tmp_dir(self): - self.tmp_path = os.path.join(self.dump_path, f"tmp-{self.file_base_name}") + self.tmp_path = os.path.join(self.dump_base_path, f"tmp-{self.file_base_name}") make_dir(self.tmp_path) def clean_up_tmp_dir(self): shutil.rmtree(self.tmp_path, ignore_errors=True) def zip_tmp_dir(self): - zip_base_name = os.path.join(dump_path, self.file_base_name) + zip_base_name = os.path.join(self.dump_base_path, self.file_base_name) zip_path = shutil.make_archive(zip_base_name, "zip", self.tmp_path) app.logger.info(f"Zipped all up to {zip_path}.") - def dump_image(self, image): # pragma: no cover + def dump_image(self, image): if not image: return @@ -121,9 +121,9 @@ class Dumper(object): get_image_from_bytes(image.data).save(file_path) -class AdminUnitDumper(Dumper): # pragma: no cover - def __init__(self, dump_path, admin_unit_id): - super().__init__(dump_path, f"org-{admin_unit_id}") +class AdminUnitDumper(Dumper): + def __init__(self, dump_base_path, admin_unit_id): + super().__init__(dump_base_path, f"org-{admin_unit_id}") self.admin_unit_id = admin_unit_id def dump_data(self): @@ -173,6 +173,12 @@ def dump_all(): dumper.dump() -def dump_admin_unit(admin_unit_id): # pragma: no cover - dumper = AdminUnitDumper(dump_path, admin_unit_id) +def dump_admin_unit(admin_unit_id): + dumper = AdminUnitDumper(dump_org_path, admin_unit_id) dumper.dump() + + +def clear_admin_unit_dumps(): + app.logger.info("Clearing admin unit dumps..") + clear_files_in_dir(dump_org_path) + app.logger.info("Done.") diff --git a/project/templates/_macros.html b/project/templates/_macros.html index 9cf7d22..b68a918 100644 --- a/project/templates/_macros.html +++ b/project/templates/_macros.html @@ -1687,13 +1687,13 @@ $('#allday').on('change', function() { {% endmacro %} -{% macro render_form_scripts() %} - - - - - +{% macro render_ajax_csrf_script() %} +{% endmacro %} + +{% macro render_ajax_csrf() %} var csrf_token = "{{ csrf_token() }}"; $.ajaxSetup({ @@ -1703,6 +1703,16 @@ $('#allday').on('change', function() { } } }); +{% endmacro %} + +{% macro render_form_scripts() %} + + + + + + +{% endblock %} +{% block content %} + +

{{ _('Export') }}

+ +

{{ _('Download') }}

+ + +

+ +

+
+
+ + +
+

+ +{% endblock %} \ No newline at end of file diff --git a/project/translations/de/LC_MESSAGES/messages.mo b/project/translations/de/LC_MESSAGES/messages.mo index eccad08..559f7a3 100644 Binary files a/project/translations/de/LC_MESSAGES/messages.mo and b/project/translations/de/LC_MESSAGES/messages.mo differ diff --git a/project/translations/de/LC_MESSAGES/messages.po b/project/translations/de/LC_MESSAGES/messages.po index aeb0678..056cd98 100644 --- a/project/translations/de/LC_MESSAGES/messages.po +++ b/project/translations/de/LC_MESSAGES/messages.po @@ -7,178 +7,178 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-04-08 13:20+0200\n" +"POT-Creation-Date: 2023-04-21 12:29+0200\n" "PO-Revision-Date: 2020-06-07 18:51+0200\n" "Last-Translator: FULL NAME \n" "Language: de\n" "Language-Team: de \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" -#: project/i10n.py:13 +#: project/i10n.py:15 msgid "Event_Art" msgstr "Kunst" -#: project/i10n.py:14 +#: project/i10n.py:16 msgid "Event_Book" msgstr "Literatur" -#: project/i10n.py:15 +#: project/i10n.py:17 msgid "Event_Movie" msgstr "Film" -#: project/i10n.py:16 +#: project/i10n.py:18 msgid "Event_Family" msgstr "Familie" -#: project/i10n.py:17 +#: project/i10n.py:19 msgid "Event_Festival" msgstr "Festival" -#: project/i10n.py:18 +#: project/i10n.py:20 msgid "Event_Religious" msgstr "Religion" -#: project/i10n.py:19 +#: project/i10n.py:21 msgid "Event_Shopping" msgstr "Shopping" -#: project/i10n.py:20 +#: project/i10n.py:22 msgid "Event_Comedy" msgstr "Comedy" -#: project/i10n.py:21 +#: project/i10n.py:23 msgid "Event_Music" msgstr "Musik" -#: project/i10n.py:22 +#: project/i10n.py:24 msgid "Event_Dance" msgstr "Tanz" -#: project/i10n.py:23 +#: project/i10n.py:25 msgid "Event_Nightlife" msgstr "Party" -#: project/i10n.py:24 +#: project/i10n.py:26 msgid "Event_Theater" msgstr "Theater" -#: project/i10n.py:25 +#: project/i10n.py:27 msgid "Event_Dining" msgstr "Essen" -#: project/i10n.py:26 +#: project/i10n.py:28 msgid "Event_Conference" msgstr "Konferenz" -#: project/i10n.py:27 +#: project/i10n.py:29 msgid "Event_Meetup" msgstr "Networking" -#: project/i10n.py:28 +#: project/i10n.py:30 msgid "Event_Fitness" msgstr "Fitness" -#: project/i10n.py:29 +#: project/i10n.py:31 msgid "Event_Sports" msgstr "Sport" -#: project/i10n.py:30 +#: project/i10n.py:32 msgid "Event_Other" msgstr "Sonstiges" -#: project/i10n.py:31 +#: project/i10n.py:33 msgid "Event_Exhibition" msgstr "Ausstellung" -#: project/i10n.py:32 +#: project/i10n.py:34 msgid "Event_Culture" msgstr "Kultur" -#: project/i10n.py:33 +#: project/i10n.py:35 msgid "Event_Tour" msgstr "Führung" -#: project/i10n.py:34 +#: project/i10n.py:36 msgid "Event_OpenAir" msgstr "Open Air" -#: project/i10n.py:35 +#: project/i10n.py:37 msgid "Event_Stage" msgstr "Bühne" -#: project/i10n.py:36 +#: project/i10n.py:38 msgid "Event_Lecture" msgstr "Vortrag" -#: project/i10n.py:37 +#: project/i10n.py:39 msgid "Typical Age range" msgstr "Typische Altersspanne" -#: project/i10n.py:38 +#: project/i10n.py:40 msgid "Administrator" msgstr "Administrator:in" -#: project/i10n.py:39 +#: project/i10n.py:41 msgid "Event expert" msgstr "Veranstaltungsexpert:in" -#: project/i10n.py:40 +#: project/i10n.py:42 msgid "EventReviewStatus.inbox" msgstr "Ungeprüft" -#: project/i10n.py:41 +#: project/i10n.py:43 msgid "EventReviewStatus.verified" msgstr "Verifiziert" -#: project/i10n.py:42 +#: project/i10n.py:44 msgid "EventReviewStatus.rejected" msgstr "Abgelehnt" -#: project/i10n.py:43 +#: project/i10n.py:45 msgid "Scope_openid" msgstr "Identität verifizieren" -#: project/i10n.py:44 +#: project/i10n.py:46 msgid "Scope_profile" msgstr "Profil-Informationen" -#: project/i10n.py:45 +#: project/i10n.py:47 msgid "Scope_user:read" msgstr "Nutzer-Einstellungen lesen" -#: project/i10n.py:46 +#: project/i10n.py:48 msgid "Scope_user:write" msgstr "Nutzer-Einstellungen anlegen, ändern und löschen" -#: project/i10n.py:47 +#: project/i10n.py:49 msgid "Scope_organizer:write" msgstr "Veranstalter anlegen, ändern und löschen" -#: project/i10n.py:48 +#: project/i10n.py:50 msgid "Scope_place:write" msgstr "Orte anlegen, ändern und löschen" -#: project/i10n.py:49 +#: project/i10n.py:51 msgid "Scope_event:write" msgstr "Veranstaltungen anlegen, ändern und löschen" -#: project/i10n.py:50 +#: project/i10n.py:52 msgid "Scope_eventlist:write" msgstr "Veranstaltungslisten anlegen, ändern und löschen" -#: project/i10n.py:51 +#: project/i10n.py:53 msgid "Scope_organization:read" msgstr "Organisationen lesen" -#: project/i10n.py:52 +#: project/i10n.py:54 msgid "Scope_organization:write" msgstr "Organisationen anlegen, ändern und löschen" -#: project/i10n.py:53 +#: project/i10n.py:55 msgid "There must be no self-reference." msgstr "Es darf keine Selbstreferenz geben." @@ -194,30 +194,30 @@ msgstr "." msgid "message" msgstr "message" -#: project/api/organization/resources.py:398 +#: project/api/organization/resources.py:401 #: project/views/admin_unit_member_invitation.py:85 msgid "You have received an invitation" msgstr "Du hast eine Einladung erhalten" -#: project/forms/admin.py:11 project/templates/layout.html:294 -#: project/views/root.py:53 +#: project/forms/admin.py:11 project/templates/layout.html:303 +#: project/views/root.py:55 msgid "Terms of service" msgstr "Nutzungsbedingungen" -#: project/forms/admin.py:12 project/templates/layout.html:298 -#: project/views/root.py:61 +#: project/forms/admin.py:12 project/templates/layout.html:307 +#: project/views/root.py:63 msgid "Legal notice" msgstr "Impressum" -#: project/forms/admin.py:13 project/templates/_macros.html:1472 -#: project/templates/layout.html:302 +#: project/forms/admin.py:13 project/templates/_macros.html:1473 +#: project/templates/layout.html:311 #: project/templates/widget/event_suggestion/create.html:204 -#: project/views/admin_unit.py:73 project/views/root.py:69 +#: project/views/admin_unit.py:73 project/views/root.py:71 msgid "Contact" msgstr "Kontakt" -#: project/forms/admin.py:14 project/templates/layout.html:306 -#: project/views/root.py:77 +#: project/forms/admin.py:14 project/templates/layout.html:315 +#: project/views/root.py:79 msgid "Privacy" msgstr "Datenschutz" @@ -244,11 +244,11 @@ msgstr "Nutzer aktualisieren" msgid "Delete user" msgstr "Nutzer löschen" -#: project/forms/admin.py:27 project/forms/admin_unit.py:48 +#: 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/templates/_macros.html:237 project/templates/_macros.html:1568 +#: project/templates/_macros.html:237 project/templates/_macros.html:1569 #: project/templates/admin/admin.html:27 project/templates/admin/email.html:4 #: project/templates/admin/email.html:66 project/templates/admin/users.html:19 #: project/templates/manage/organizers.html:21 @@ -314,7 +314,7 @@ msgstr "Organisation aktualisieren" msgid "Delete organization" msgstr "Organisation löschen" -#: project/forms/admin.py:69 project/forms/admin_unit.py:29 +#: project/forms/admin.py:69 project/forms/admin_unit.py:28 #: 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 @@ -352,89 +352,90 @@ msgstr "Nachricht" msgid "Send newsletter" msgstr "Newsletter senden" -#: project/forms/admin_unit.py:15 project/forms/event_place.py:12 +#: project/forms/admin_unit.py:14 project/forms/event_place.py:12 #: project/forms/organizer.py:12 msgid "Street" msgstr "Straße" -#: project/forms/admin_unit.py:16 project/forms/event_place.py:13 -#: project/forms/organizer.py:13 +#: project/forms/admin_unit.py:15 project/forms/event.py:453 +#: project/forms/event_place.py:13 project/forms/organizer.py:13 msgid "Postal code" msgstr "Postleitzahl" -#: project/forms/admin_unit.py:17 project/forms/event_place.py:14 +#: project/forms/admin_unit.py:16 project/forms/event_place.py:14 #: project/forms/organizer.py:14 msgid "City" msgstr "Stadt/Ort" -#: project/forms/admin_unit.py:18 project/forms/event_place.py:15 +#: project/forms/admin_unit.py:17 project/forms/event_place.py:15 #: project/forms/organizer.py:15 msgid "State" msgstr "Bundesland" -#: project/forms/admin_unit.py:20 project/forms/event_place.py:17 +#: project/forms/admin_unit.py:19 project/forms/event_place.py:17 #: project/forms/organizer.py:17 msgid "Latitude" msgstr "Breitengrad" -#: project/forms/admin_unit.py:23 project/forms/event_place.py:20 +#: project/forms/admin_unit.py:22 project/forms/event_place.py:20 #: project/forms/organizer.py:20 msgid "Longitude" msgstr "Längengrad" -#: project/forms/admin_unit.py:32 +#: project/forms/admin_unit.py:31 msgid "Short name" msgstr "Kurzname" -#: project/forms/admin_unit.py:33 +#: project/forms/admin_unit.py:32 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:41 project/templates/_macros.html:1610 +#: project/forms/admin_unit.py:40 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:47 project/forms/event.py:106 +#: 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 msgid "Link URL" msgstr "Link URL" -#: project/forms/admin_unit.py:49 project/forms/event.py:108 +#: project/forms/admin_unit.py:48 project/forms/event.py:108 #: project/forms/event_suggestion.py:31 project/forms/organizer.py:28 #: project/templates/_macros.html:290 #: project/templates/manage/organizers.html:20 msgid "Phone" msgstr "Telefon" -#: project/forms/admin_unit.py:50 project/forms/event.py:109 +#: project/forms/admin_unit.py:49 project/forms/event.py:109 #: project/forms/organizer.py:29 project/templates/_macros.html:298 msgid "Fax" msgstr "Fax" -#: project/forms/admin_unit.py:51 project/forms/organizer.py:30 +#: project/forms/admin_unit.py:50 project/forms/organizer.py:30 #: project/templates/manage/organizers.html:22 +#: project/templates/manage/organizers.html:47 msgid "Logo" msgstr "Logo" -#: project/forms/admin_unit.py:55 +#: project/forms/admin_unit.py:54 msgid "Allow verification requests" msgstr "Verifizierungsanfragen erlauben" -#: project/forms/admin_unit.py:56 +#: project/forms/admin_unit.py:55 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:62 +#: project/forms/admin_unit.py:61 msgid "Verification requests information" msgstr "Text für Verifizierungsanfragen" -#: project/forms/admin_unit.py:64 +#: project/forms/admin_unit.py:63 msgid "" "This text is shown to unverified organizations to help them decide " "whether they ask you for verification." @@ -442,21 +443,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:80 +#: project/forms/admin_unit.py:79 msgid "Verify new organization" msgstr "Neue Organisation verifizieren" -#: project/forms/admin_unit.py:81 +#: project/forms/admin_unit.py:80 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:87 project/forms/reference_request.py:86 +#: project/forms/admin_unit.py:86 project/forms/reference_request.py:86 msgid "Verify reference requests automatically" msgstr "Empfehlungsanfragen automatisch verifizieren" -#: project/forms/admin_unit.py:88 +#: project/forms/admin_unit.py:87 msgid "" "If set, all upcoming reference requests of the new organization are " "verified automatically." @@ -464,29 +465,29 @@ msgstr "" "Wenn gesetzt, werden alle zukünftigen Empfehlungsanfragen der neuen " "Organisation automatisch verifiziert." -#: project/forms/admin_unit.py:99 project/templates/admin_unit/create.html:5 +#: project/forms/admin_unit.py:98 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:107 project/forms/admin_unit.py:130 +#: project/forms/admin_unit.py:106 project/forms/admin_unit.py:129 msgid "Update settings" msgstr "Einstellungen speichern" -#: project/forms/admin_unit.py:111 +#: project/forms/admin_unit.py:110 msgid "Font" msgstr "Schriftart" -#: project/forms/admin_unit.py:113 +#: project/forms/admin_unit.py:112 msgid "Background Color" msgstr "Hintergrundfarbe" -#: project/forms/admin_unit.py:119 +#: project/forms/admin_unit.py:118 msgid "Primary Color" msgstr "Hauptfarbe" -#: project/forms/admin_unit.py:125 +#: project/forms/admin_unit.py:124 msgid "Link Color" msgstr "Linkfarbe" @@ -599,7 +600,7 @@ msgstr "50 km" msgid "100 km" msgstr "100 km" -#: project/forms/event.py:38 project/templates/manage/events.html:85 +#: project/forms/event.py:38 project/templates/manage/events.html:94 msgid "Start" msgstr "Beginn" @@ -621,16 +622,16 @@ msgstr "Gib an, wann der Termin endet. Ein Termin darf maximal 14 Tage dauern." msgid "All-day" msgstr "Ganztägig" -#: project/forms/event.py:54 project/templates/_macros.html:1790 +#: project/forms/event.py:54 project/templates/_macros.html:1801 #: project/templates/widget/event_suggestion/create.html:240 msgid "Recurring event" msgstr "Serientermin" -#: project/forms/event.py:61 project/templates/_macros.html:1329 +#: project/forms/event.py:61 project/templates/_macros.html:1330 msgid "The start must be before the end." msgstr "Der Start muss vor dem Ende sein." -#: project/forms/event.py:67 project/templates/_macros.html:1346 +#: project/forms/event.py:67 project/templates/_macros.html:1347 msgid "An event can last a maximum of 14 days." msgstr "Eine Veranstaltung darf maximal 14 Tage dauern." @@ -720,7 +721,7 @@ msgid "If the participants needs to register for the event." msgstr "Wenn sich die Teilnehmer für die Veranstaltung anmelden müssen." #: project/forms/event.py:170 project/templates/_macros.html:251 -#: project/templates/layout.html:110 +#: project/templates/layout.html:115 msgid "Booked up" msgstr "Ausgebucht" @@ -780,11 +781,11 @@ msgstr "Teilnahme" msgid "EventAttendanceMode.offline" msgstr "Präsenzveranstaltung" -#: project/forms/event.py:217 project/templates/layout.html:98 +#: project/forms/event.py:217 project/templates/layout.html:103 msgid "EventAttendanceMode.online" msgstr "Online" -#: project/forms/event.py:219 project/templates/layout.html:101 +#: project/forms/event.py:219 project/templates/layout.html:106 msgid "EventAttendanceMode.mixed" msgstr "Präsenzveranstaltung und online" @@ -793,7 +794,10 @@ 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/templates/manage/events.html:98 +#: project/templates/manage/events.html:133 #: project/templates/manage/places.html:21 +#: project/templates/manage/places.html:39 #: project/templates/widget/event_suggestion/create.html:258 msgid "Photo" msgstr "Foto" @@ -865,7 +869,7 @@ msgstr "Ungültiger Mitveranstalter." #: project/templates/event_place/create.html:31 #: project/templates/event_place/delete.html:13 #: project/templates/event_place/update.html:31 -#: project/templates/manage/events.html:88 +#: project/templates/manage/events.html:97 msgid "Place" msgstr "Ort" @@ -882,7 +886,7 @@ msgstr "Neuen Ort eingeben" #: project/forms/event_suggestion.py:60 project/templates/_macros.html:475 #: project/templates/_macros.html:647 project/templates/event/create.html:253 #: project/templates/event/update.html:156 -#: project/templates/manage/events.html:87 +#: project/templates/manage/events.html:96 #: project/templates/organizer/create.html:27 #: project/templates/organizer/delete.html:13 #: project/templates/organizer/update.html:27 @@ -938,23 +942,23 @@ msgstr "Status" msgid "EventStatus.scheduled" msgstr "Geplant" -#: project/forms/event.py:389 project/templates/layout.html:64 -#: project/templates/layout.html:79 +#: project/forms/event.py:389 project/templates/layout.html:69 +#: project/templates/layout.html:84 msgid "EventStatus.cancelled" msgstr "Abgesagt" -#: project/forms/event.py:390 project/templates/layout.html:67 -#: project/templates/layout.html:82 +#: project/forms/event.py:390 project/templates/layout.html:72 +#: project/templates/layout.html:87 msgid "EventStatus.movedOnline" msgstr "Online verschoben" -#: project/forms/event.py:391 project/templates/layout.html:70 -#: project/templates/layout.html:85 +#: project/forms/event.py:391 project/templates/layout.html:75 +#: project/templates/layout.html:90 msgid "EventStatus.postponed" msgstr "Verschoben" -#: project/forms/event.py:392 project/templates/layout.html:73 -#: project/templates/layout.html:88 +#: project/forms/event.py:392 project/templates/layout.html:78 +#: project/templates/layout.html:93 msgid "EventStatus.rescheduled" msgstr "Neu angesetzt" @@ -983,7 +987,7 @@ msgstr "Wähle den öffentlichen Status der Veranstaltung." msgid "Update event" msgstr "Veranstaltung aktualisieren" -#: project/forms/event.py:423 project/templates/_macros.html:1286 +#: project/forms/event.py:423 project/templates/_macros.html:1287 #: project/templates/event/actions.html:66 #: project/templates/event/delete.html:6 msgid "Delete event" @@ -1008,12 +1012,8 @@ msgstr "Stichwort" msgid "Category" msgstr "Kategorie" -#: project/forms/event.py:445 -msgid "Find events" -msgstr "Veranstaltungen finden" - -#: project/forms/event_date.py:24 project/forms/planing.py:22 -#: project/templates/_macros.html:305 +#: project/forms/event.py:446 project/forms/event_date.py:24 +#: project/forms/planing.py:22 project/templates/_macros.html:305 #: project/templates/admin_unit/create.html:38 #: project/templates/admin_unit/update.html:39 #: project/templates/event_place/create.html:40 @@ -1025,10 +1025,15 @@ msgstr "Veranstaltungen finden" msgid "Location" msgstr "Standort" -#: project/forms/event_date.py:26 project/forms/planing.py:24 +#: project/forms/event.py:448 project/forms/event_date.py:26 +#: project/forms/planing.py:24 msgid "Distance" msgstr "Distanz" +#: project/forms/event.py:455 +msgid "Find events" +msgstr "Veranstaltungen finden" + #: project/forms/event_date.py:39 project/forms/planing.py:36 #: project/templates/widget/event_date/list.html:82 msgid "Find" @@ -1166,7 +1171,7 @@ msgstr "Wochentage" #: project/templates/admin/delete_admin_unit.html:13 #: project/templates/admin_unit/create.html:28 #: project/templates/admin_unit/update.html:29 -#: project/templates/layout.html:242 +#: project/templates/layout.html:247 msgid "Organization" msgstr "Organisation" @@ -1191,7 +1196,7 @@ msgstr "Anfrage speichern" msgid "Delete request" msgstr "Anfrage löschen" -#: project/forms/reference_request.py:28 project/templates/_macros.html:1484 +#: project/forms/reference_request.py:28 project/templates/_macros.html:1485 #: project/templates/event_suggestion/review_status.html:18 #: project/templates/reference_request/review_status.html:12 msgid "Review status" @@ -1248,7 +1253,7 @@ msgstr "" "der Eingabe wird dir eine Mail geschickt, damit du bestätigen kannst, " "dass die E-Mail-Adresse dir gehört." -#: project/forms/security.py:43 +#: project/forms/security.py:47 msgid "login_confirmation_required" msgstr "" "Beachte, dass du deine E-Mail-Adresse bestätigen muss. Dazu wird dir nach" @@ -1256,11 +1261,11 @@ msgstr "" "geschickt. Bitte beachte, dass es einige Minuten dauern kann, bis die " "Mail bei dir eintrifft. Schaue zur Sicherheit auch im Spam-Ordner nach." -#: project/forms/security.py:53 +#: project/forms/security.py:57 msgid "Allow" msgstr "Erlauben" -#: project/forms/security.py:54 +#: project/forms/security.py:58 msgid "Deny" msgstr "Ablehnen" @@ -1274,7 +1279,7 @@ msgstr "Newsletter" msgid "Information about new features and improvements." msgstr "Informationen über neue Features und Verbesserungen." -#: project/forms/widgets.py:154 +#: project/forms/widgets.py:155 msgid "This field is required." msgstr "Dieses Feld ist erforderlich." @@ -1314,22 +1319,22 @@ msgstr "Zuletzt aktualisiert am %(updated_at)s." #: project/templates/event/actions.html:25 #: project/templates/event/create.html:230 #: project/templates/event/update.html:122 -#: project/templates/manage/events.html:86 +#: project/templates/manage/events.html:95 #: project/templates/widget/event_suggestion/create.html:229 msgid "Event" msgstr "Veranstaltung" -#: project/templates/_macros.html:393 project/templates/_macros.html:978 +#: project/templates/_macros.html:393 project/templates/_macros.html:979 msgid "Date" msgstr "Datum" #: project/templates/_macros.html:420 project/templates/_macros.html:579 -#: project/templates/_macros.html:1553 project/templates/event/actions.html:51 +#: project/templates/_macros.html:1554 project/templates/event/actions.html:51 msgid "Share" msgstr "Teilen" #: project/templates/_macros.html:424 project/templates/_macros.html:583 -#: project/templates/_macros.html:1583 +#: project/templates/_macros.html:1584 msgid "Add to calendar" msgstr "Zum Kalender" @@ -1352,7 +1357,7 @@ msgstr "" "Die Veranstaltung findet sowohl als Präsenzveranstaltung als auch online " "statt." -#: project/templates/_macros.html:587 project/templates/layout.html:168 +#: project/templates/_macros.html:587 project/templates/layout.html:173 #: project/templates/user/favorite_events.html:4 msgid "Favorite events" msgstr "Merkzettel" @@ -1360,8 +1365,8 @@ msgstr "Merkzettel" #: project/templates/_macros.html:590 project/templates/_macros.html:633 #: project/templates/_macros.html:765 #: project/templates/admin/admin_units.html:34 -#: project/templates/admin/users.html:34 -#: project/templates/manage/events.html:100 +#: project/templates/admin/users.html:32 +#: project/templates/manage/events.html:110 #: project/templates/manage/members.html:35 #: project/templates/manage/organizers.html:33 #: project/templates/manage/places.html:31 @@ -1375,9 +1380,9 @@ msgstr "Bearbeiten" msgid "Referenced by" msgstr "Empfohlen von" -#: project/templates/_macros.html:703 project/templates/_macros.html:1296 +#: project/templates/_macros.html:703 project/templates/_macros.html:1297 #: project/templates/event/actions.html:38 -#: project/templates/manage/events.html:107 +#: project/templates/manage/events.html:117 #: project/templates/manage/references_incoming.html:10 msgid "Reference event" msgstr "Veranstaltung empfehlen" @@ -1388,9 +1393,9 @@ msgstr "Veranstaltung empfehlen" msgid "Reference requests" msgstr "Empfehlungsanfragen" -#: project/templates/_macros.html:723 project/templates/_macros.html:1293 +#: project/templates/_macros.html:723 project/templates/_macros.html:1294 #: project/templates/event/actions.html:32 -#: project/templates/manage/events.html:105 +#: project/templates/manage/events.html:115 msgid "Request reference" msgstr "Empfehlung anfragen" @@ -1404,17 +1409,17 @@ msgstr "Termine" msgid "Search location on Google" msgstr "Ort bei Google suchen" -#: project/templates/_macros.html:895 +#: project/templates/_macros.html:896 #, python-format msgid "%(count)d event dates" msgstr "%(count)d Termine" -#: project/templates/_macros.html:918 project/templates/_macros.html:920 +#: project/templates/_macros.html:919 project/templates/_macros.html:921 #: project/templates/event_date/list.html:321 msgid "First" msgstr "Letzte" -#: project/templates/_macros.html:923 project/templates/_macros.html:925 +#: project/templates/_macros.html:924 project/templates/_macros.html:926 #: project/templates/event_date/list.html:322 #: project/templates/widget/event_suggestion/create.html:193 #: project/templates/widget/event_suggestion/create.html:218 @@ -1425,12 +1430,12 @@ msgstr "Letzte" msgid "Previous" msgstr "Zurück" -#: project/templates/_macros.html:927 +#: project/templates/_macros.html:928 #, python-format msgid "Page %(page)d of %(pages)d (%(total)d total)" msgstr "Seite %(page)d von %(pages)d (%(total)d insgesamt)" -#: project/templates/_macros.html:929 project/templates/_macros.html:931 +#: project/templates/_macros.html:930 project/templates/_macros.html:932 #: project/templates/event_date/list.html:324 #: project/templates/widget/event_suggestion/create.html:194 #: project/templates/widget/event_suggestion/create.html:219 @@ -1440,97 +1445,97 @@ msgstr "Seite %(page)d von %(pages)d (%(total)d insgesamt)" msgid "Next" msgstr "Weiter" -#: project/templates/_macros.html:934 project/templates/_macros.html:936 +#: project/templates/_macros.html:935 project/templates/_macros.html:937 #: project/templates/event_date/list.html:325 msgid "Last" msgstr "Erste" -#: project/templates/_macros.html:1001 +#: project/templates/_macros.html:1002 msgid "Radius" msgstr "Umkreis" -#: project/templates/_macros.html:1215 +#: project/templates/_macros.html:1216 msgid "Edit image" msgstr "Bild bearbeiten" -#: project/templates/_macros.html:1236 +#: project/templates/_macros.html:1237 msgid "Close" msgstr "Schließen" -#: project/templates/_macros.html:1237 +#: project/templates/_macros.html:1238 msgid "Okay" msgstr "OK" -#: project/templates/_macros.html:1249 +#: project/templates/_macros.html:1250 msgid "Choose image file" msgstr "Bild-Datei auswählen" -#: project/templates/_macros.html:1285 project/templates/event/actions.html:65 +#: project/templates/_macros.html:1286 project/templates/event/actions.html:65 #: project/templates/event/delete.html:12 msgid "Edit event" msgstr "Veranstaltung bearbeiten" -#: project/templates/_macros.html:1289 project/templates/event/actions.html:58 +#: project/templates/_macros.html:1290 project/templates/event/actions.html:58 msgid "Duplicate event" msgstr "Veranstaltung duplizieren" -#: project/templates/_macros.html:1300 project/templates/event/actions.html:44 -#: project/templates/manage/events.html:111 +#: project/templates/_macros.html:1301 project/templates/event/actions.html:44 +#: project/templates/manage/events.html:121 msgid "Add to list" msgstr "Zu Liste hinzufügen" -#: project/templates/_macros.html:1303 project/templates/manage/events.html:114 +#: project/templates/_macros.html:1304 project/templates/manage/events.html:124 msgid "More" msgstr "Mehr" -#: project/templates/_macros.html:1350 +#: project/templates/_macros.html:1351 msgid "Please enter a valid time, between 00:00 and 23:59." msgstr "Bitte gib eine gültige Uhrzeit zwischen 00:00 und 23:59 ein." -#: project/templates/_macros.html:1378 +#: project/templates/_macros.html:1379 #, python-format msgid "Just use %(term)s" msgstr "Verwende einfach %(term)s" -#: project/templates/_macros.html:1444 +#: project/templates/_macros.html:1445 msgid "Event suggestion" msgstr "Veranstaltungsvorschlag" -#: project/templates/_macros.html:1562 +#: project/templates/_macros.html:1563 msgid "Link copied" msgstr "Link kopiert" -#: project/templates/_macros.html:1562 +#: project/templates/_macros.html:1563 msgid "Copy link" msgstr "Link kopieren" -#: project/templates/_macros.html:1592 +#: project/templates/_macros.html:1593 msgid "Google calendar" msgstr "Google Kalender" -#: project/templates/_macros.html:1594 +#: project/templates/_macros.html:1595 msgid "Apple calendar" msgstr "Apple Kalender" -#: project/templates/_macros.html:1595 +#: project/templates/_macros.html:1596 msgid "Yahoo calendar" msgstr "Yahoo Kalender" -#: project/templates/_macros.html:1596 +#: project/templates/_macros.html:1597 msgid "Other calendar" msgstr "Anderer Kalender" -#: project/templates/_macros.html:1791 +#: project/templates/_macros.html:1802 msgid "Remove event date" msgstr "Termin entfernen" -#: project/templates/_macros.html:1820 project/templates/event/create.html:176 +#: project/templates/_macros.html:1831 project/templates/event/create.html:176 #: project/templates/event/update.html:99 #: project/templates/widget/event_suggestion/create.html:129 msgid "Enter organizer" msgstr "Veranstalter eingeben" -#: project/templates/_macros.html:1844 +#: project/templates/_macros.html:1855 msgid "Enter list name" msgstr "Listenname eingeben" @@ -1538,7 +1543,7 @@ msgstr "Listenname eingeben" msgid "Manage" msgstr "Verwaltung" -#: project/templates/home.html:37 project/templates/layout.html:158 +#: project/templates/home.html:37 project/templates/layout.html:163 #: project/templates/manage/admin_units.html:28 #: project/templates/manage/verification_requests_outgoing.html:13 #: project/templates/security/login_user.html:21 @@ -1550,9 +1555,9 @@ msgstr "Doku" msgid "Features" msgstr "Features" -#: project/templates/layout.html:152 project/templates/layout.html:200 +#: project/templates/layout.html:157 project/templates/layout.html:205 #: project/templates/manage/events.html:6 -#: project/templates/manage/events.html:43 +#: project/templates/manage/events.html:48 #: project/templates/manage/events_vue.html:4 msgid "Events" msgstr "Veranstaltungen" @@ -1560,18 +1565,18 @@ msgstr "Veranstaltungen" #: project/templates/admin/admin.html:19 #: project/templates/admin/admin_units.html:4 #: project/templates/admin/admin_units.html:11 -#: project/templates/layout.html:153 project/templates/layout.html:166 +#: project/templates/layout.html:158 project/templates/layout.html:171 #: project/templates/manage/admin_units.html:3 #: project/templates/manage/admin_units.html:26 #: project/templates/organization/main.html:4 msgid "Organizations" msgstr "Organisationen" -#: project/templates/layout.html:154 +#: project/templates/layout.html:159 msgid "Planing" msgstr "Planung" -#: project/templates/layout.html:167 project/templates/layout.html:256 +#: project/templates/layout.html:172 project/templates/layout.html:265 #: project/templates/oauth2_client/list.html:10 #: project/templates/oauth2_client/read.html:10 #: project/templates/oauth2_token/list.html:10 project/templates/profile.html:4 @@ -1584,87 +1589,87 @@ msgstr "Profil" #: project/templates/admin/email.html:65 #: project/templates/admin/newsletter.html:92 #: project/templates/admin/settings.html:10 -#: project/templates/admin/users.html:10 project/templates/layout.html:171 +#: project/templates/admin/users.html:10 project/templates/layout.html:176 msgid "Admin" msgstr "Administration" -#: project/templates/layout.html:175 +#: project/templates/layout.html:180 msgid "Logout" msgstr "Ausloggen" -#: project/templates/layout.html:206 +#: project/templates/layout.html:211 msgid "Show events" msgstr "Veranstaltungen anzeigen" #: project/templates/event/create.html:5 -#: project/templates/event/create.html:221 project/templates/layout.html:207 -#: project/templates/manage/events.html:44 +#: project/templates/event/create.html:221 project/templates/layout.html:212 +#: project/templates/manage/events.html:49 #: project/templates/manage/organizers.html:38 msgid "Create event" msgstr "Veranstaltung erstellen" -#: project/templates/layout.html:208 +#: project/templates/layout.html:213 msgid "Import event" msgstr "Veranstaltung imporierten" -#: project/templates/layout.html:210 +#: project/templates/layout.html:215 #: project/templates/manage/event_lists.html:4 msgid "Event lists" msgstr "Veranstaltungslisten" -#: project/templates/layout.html:213 +#: project/templates/layout.html:218 msgid "Review suggestions" msgstr "Vorschläge prüfen" -#: project/templates/layout.html:223 +#: project/templates/layout.html:228 #: project/templates/manage/references_incoming.html:5 #: project/templates/manage/references_outgoing.html:5 msgid "References" msgstr "Empfehlungen" -#: project/templates/layout.html:229 +#: project/templates/layout.html:234 #: project/templates/manage/references_incoming.html:9 msgid "Incoming references" msgstr "Eingehende Empfehlungen" -#: project/templates/layout.html:230 +#: project/templates/layout.html:235 #: project/templates/manage/references_outgoing.html:9 msgid "Outgoing references" msgstr "Ausgehende Empfehlungen" -#: project/templates/layout.html:232 +#: project/templates/layout.html:237 #: project/templates/manage/reference_requests_incoming.html:9 msgid "Incoming reference requests" msgstr "Eingehende Empfehlungsanfragen" -#: project/templates/layout.html:237 +#: project/templates/layout.html:242 #: project/templates/manage/reference_requests_outgoing.html:9 msgid "Outgoing reference requests" msgstr "Ausgehende Empfehlungsanfragen" -#: project/templates/layout.html:245 project/templates/manage/organizers.html:5 +#: project/templates/layout.html:250 project/templates/manage/organizers.html:5 #: project/templates/manage/organizers.html:10 #: project/templates/organizer/main.html:4 msgid "Organizers" msgstr "Veranstalter" #: project/templates/event_place/list.html:3 -#: project/templates/event_place/list.html:7 project/templates/layout.html:246 +#: project/templates/event_place/list.html:7 project/templates/layout.html:251 #: project/templates/manage/places.html:5 #: project/templates/manage/places.html:10 msgid "Places" msgstr "Orte" -#: project/templates/layout.html:248 project/templates/manage/members.html:5 +#: project/templates/layout.html:253 project/templates/manage/members.html:5 #: project/templates/manage/members.html:28 msgid "Members" msgstr "Mitglieder" -#: project/templates/layout.html:249 project/templates/manage/relations.html:4 +#: project/templates/layout.html:254 project/templates/manage/relations.html:4 msgid "Relations" msgstr "Beziehungen" -#: project/templates/layout.html:251 +#: project/templates/layout.html:256 #: project/templates/manage/admin_units.html:17 #: project/templates/manage/organization_invitations.html:4 #: project/templates/user/organization_invitations.html:4 @@ -1676,27 +1681,33 @@ msgstr "Organisationseinladungen" #: project/templates/admin/settings.html:11 #: project/templates/admin_unit/update.html:6 #: project/templates/admin_unit/update.html:23 -#: project/templates/layout.html:253 project/templates/manage/widgets.html:11 +#: project/templates/layout.html:259 project/templates/manage/widgets.html:11 #: project/templates/manage/widgets.html:15 project/templates/profile.html:19 msgid "Settings" msgstr "Einstellungen" -#: project/templates/layout.html:254 +#: project/templates/layout.html:260 project/templates/manage/export.html:4 +#: project/templates/manage/export.html:65 +msgid "Export" +msgstr "Export" + +#: project/templates/layout.html:262 #: project/templates/manage/custom_widgets.html:13 msgid "Custom widgets" msgstr "Custom widgets" -#: project/templates/layout.html:255 project/templates/manage/reviews.html:10 +#: project/templates/layout.html:263 project/templates/manage/reviews.html:10 #: project/templates/manage/widgets.html:5 #: project/templates/manage/widgets.html:9 msgid "Widgets" msgstr "Widgets" -#: project/templates/layout.html:266 +#: project/templates/layout.html:275 msgid "Switch organization" msgstr "Organisation wechseln" -#: project/templates/developer/read.html:4 project/templates/layout.html:310 +#: project/templates/developer/read.html:4 +#: project/templates/developer/read.html:8 project/templates/layout.html:319 #: project/templates/profile.html:33 msgid "Developer" msgstr "Entwickler" @@ -1724,7 +1735,7 @@ msgid "Users" msgstr "Nutzer" #: project/templates/admin/admin_units.html:33 -#: project/templates/manage/events.html:99 +#: project/templates/manage/events.html:109 #: project/templates/manage/organizers.html:32 #: project/templates/manage/references_incoming.html:19 #: project/templates/manage/references_outgoing.html:19 @@ -1732,8 +1743,8 @@ msgid "View" msgstr "Anzeigen" #: project/templates/admin/admin_units.html:35 -#: project/templates/admin/users.html:35 -#: project/templates/manage/events.html:101 +#: project/templates/admin/users.html:33 +#: project/templates/manage/events.html:111 #: project/templates/manage/members.html:21 #: project/templates/manage/members.html:36 #: project/templates/manage/organizers.html:34 @@ -1747,7 +1758,7 @@ msgstr "Löschen" msgid "User" msgstr "Nutzer" -#: project/templates/admin/email.html:47 project/views/admin.py:151 +#: project/templates/admin/email.html:47 project/views/admin.py:155 msgid "Mail sent successfully" msgstr "Mail erfolgreich gesendet" @@ -1790,6 +1801,21 @@ msgstr "Nutzer:in einladen" msgid "Verification requests" msgstr "Verifizierungsanfragen" +#: project/templates/developer/read.html:16 +#: project/templates/manage/export.html:67 +msgid "Download" +msgstr "Download" + +#: project/templates/developer/read.html:20 +#: project/templates/manage/export.html:71 +msgid "All data" +msgstr "Alle Daten" + +#: project/templates/developer/read.html:22 +#: project/templates/manage/export.html:73 +msgid "No files available" +msgstr "Keine Dateien vorhanden" + #: project/templates/email/event_report_notice.html:4 msgid "There is a new event report." msgstr "Es gibt eine neue Meldung zu einer Veranstaltung." @@ -1922,7 +1948,7 @@ msgstr "Zeige alle Veranstaltungen von %(admin_unit_name)s" #: project/templates/event/actions.html:74 project/templates/event/read.html:32 #: project/templates/event_date/read.html:34 -#: project/templates/manage/events.html:131 +#: project/templates/manage/events.html:145 msgid "Add event to list" msgstr "Veranstaltung zu Liste hinzufügen" @@ -2036,7 +2062,7 @@ msgstr "Organisation einladen" msgid "Member" msgstr "Mitglied" -#: project/templates/manage/events.html:37 +#: project/templates/manage/events.html:42 msgid "" "The organization is not verified. Events are therefore not publicly " "visible." @@ -2044,28 +2070,36 @@ msgstr "" "Die Organisation ist nicht verifiziert. Veranstaltungen sind daher nicht " "öffentlich sichtbar." -#: project/templates/manage/events.html:38 +#: project/templates/manage/events.html:43 msgid "Verify organization" msgstr "Organisation verifizieren" -#: project/templates/manage/events.html:76 +#: project/templates/manage/events.html:85 msgid "More filters" msgstr "Mehr Filter" -#: project/templates/manage/events.html:89 +#: project/templates/manage/events.html:99 +#: project/templates/manage/events.html:134 msgid "Number of references" msgstr "Anzahl an Empfehlungen" -#: project/templates/manage/events.html:89 +#: project/templates/manage/events.html:99 +#: project/templates/manage/events.html:134 msgid "Number of reference requests." msgstr "Anzahl an Empfehlungsanfragen" -#: project/templates/manage/events.html:102 +#: project/templates/manage/events.html:112 msgid "Duplicate" msgstr "Duplizieren" +#: project/templates/manage/export.html:79 +msgid "Create export files" +msgstr "Export-Dateien erstellen" + #: project/templates/manage/organizers.html:23 +#: project/templates/manage/organizers.html:48 #: project/templates/manage/places.html:22 +#: project/templates/manage/places.html:40 msgid "Number of events" msgstr "Anzahl an Veranstaltungen" @@ -2075,6 +2109,7 @@ msgid "View events" msgstr "Veranstaltungen anzeigen" #: project/templates/manage/places.html:20 +#: project/templates/manage/places.html:38 msgid "Coordinates" msgstr "Koordinaten" @@ -2201,7 +2236,7 @@ msgstr "Angemeldet bleiben" msgid "You do not have an account yet? Not a problem!" msgstr "Du hast noch keinen Account? Kein Problem!" -#: project/templates/security/login_user.html:44 project/views/widget.py:159 +#: project/templates/security/login_user.html:44 project/views/widget.py:155 msgid "Register for free" msgstr "Kostenlos registrieren" @@ -2237,30 +2272,30 @@ msgstr "Der eingegebene Name entspricht nicht dem Namen der Organisation" msgid "Organization successfully deleted" msgstr "Organisation erfolgreich gelöscht" -#: project/views/admin.py:111 project/views/manage.py:371 +#: project/views/admin.py:111 project/views/manage.py:443 #: project/views/user.py:28 msgid "Settings successfully updated" msgstr "Einstellungen erfolgreich aktualisiert" -#: project/views/admin.py:140 +#: project/views/admin.py:144 #, python-format msgid "Test mail from %(site_name)s" msgstr "Test-Mail von %(site_name)s" -#: project/views/admin.py:179 +#: project/views/admin.py:187 #, python-format msgid "Newsletter from %(site_name)s" msgstr "Newsletter von %(site_name)s" -#: project/views/admin.py:229 +#: project/views/admin.py:237 msgid "User successfully updated" msgstr "Nutzer erfolgreich aktualisiert" -#: project/views/admin.py:249 +#: project/views/admin.py:257 msgid "Entered email does not match user email" msgstr "Die eingegebene Email passt nicht zur Email des Nutzers" -#: project/views/admin.py:254 +#: project/views/admin.py:262 msgid "User successfully deleted" msgstr "Nutzer erfolgreich gelöscht" @@ -2317,27 +2352,27 @@ msgstr "Die eingegebene Email passt nicht zur Email der Einladung" msgid "Invitation successfully deleted" msgstr "Einladung erfolgreich gelöscht" -#: project/views/event.py:184 +#: project/views/event.py:181 msgid "Event successfully published" msgstr "Veranstaltung erfolgreich veröffentlicht" -#: project/views/event.py:186 +#: project/views/event.py:183 msgid "Draft successfully saved" msgstr "Entwurf erfolgreich gespeichert" -#: project/views/event.py:229 +#: project/views/event.py:226 msgid "Event successfully updated" msgstr "Veranstaltung erfolgreich aktualisiert" -#: project/views/event.py:255 +#: project/views/event.py:252 msgid "Event successfully deleted" msgstr "Veranstaltung erfolgreich gelöscht" -#: project/views/event.py:407 +#: project/views/event.py:417 msgid "Referenced event changed" msgstr "Empfohlene Veranstaltung wurde geändert" -#: project/views/event.py:430 +#: project/views/event.py:440 msgid "New event report" msgstr "Neue Meldung zu einer Veranstaltung" @@ -2501,11 +2536,11 @@ msgstr "" "Die Einladung wurde für einen anderen Nutzer ausgestellt. Melde dich mit " "der Email-Adresse an, an die die Einladung geschickt wurde." -#: project/views/widget.py:151 +#: project/views/widget.py:147 msgid "Thank you so much! The event is being verified." msgstr "Vielen Dank! Die Veranstaltung wird geprüft." -#: project/views/widget.py:155 +#: project/views/widget.py:151 msgid "" "For more options and your own calendar of events, you can register for " "free." @@ -2513,7 +2548,7 @@ msgstr "" "Für mehr Optionen und einen eigenen Veranstaltungskalender, kannst du " "dich kostenlos registrieren." -#: project/views/widget.py:221 +#: project/views/widget.py:217 msgid "New event review" msgstr "Neue Veranstaltung zu prüfen" diff --git a/project/translations/en/LC_MESSAGES/messages.mo b/project/translations/en/LC_MESSAGES/messages.mo index 118997d..e565d2f 100644 Binary files a/project/translations/en/LC_MESSAGES/messages.mo and b/project/translations/en/LC_MESSAGES/messages.mo differ diff --git a/project/translations/en/LC_MESSAGES/messages.po b/project/translations/en/LC_MESSAGES/messages.po index fec493f..ecf2bd2 100644 --- a/project/translations/en/LC_MESSAGES/messages.po +++ b/project/translations/en/LC_MESSAGES/messages.po @@ -7,178 +7,178 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-04-08 13:20+0200\n" +"POT-Creation-Date: 2023-04-21 12:29+0200\n" "PO-Revision-Date: 2021-04-30 15:04+0200\n" "Last-Translator: FULL NAME \n" "Language: en\n" "Language-Team: en \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" -#: project/i10n.py:13 +#: project/i10n.py:15 msgid "Event_Art" msgstr "Art" -#: project/i10n.py:14 +#: project/i10n.py:16 msgid "Event_Book" msgstr "Book" -#: project/i10n.py:15 +#: project/i10n.py:17 msgid "Event_Movie" msgstr "Movie" -#: project/i10n.py:16 +#: project/i10n.py:18 msgid "Event_Family" msgstr "Family" -#: project/i10n.py:17 +#: project/i10n.py:19 msgid "Event_Festival" msgstr "Festival" -#: project/i10n.py:18 +#: project/i10n.py:20 msgid "Event_Religious" msgstr "Religious" -#: project/i10n.py:19 +#: project/i10n.py:21 msgid "Event_Shopping" msgstr "Shopping" -#: project/i10n.py:20 +#: project/i10n.py:22 msgid "Event_Comedy" msgstr "Comedy" -#: project/i10n.py:21 +#: project/i10n.py:23 msgid "Event_Music" msgstr "Music" -#: project/i10n.py:22 +#: project/i10n.py:24 msgid "Event_Dance" msgstr "Dance" -#: project/i10n.py:23 +#: project/i10n.py:25 msgid "Event_Nightlife" msgstr "Nightlife" -#: project/i10n.py:24 +#: project/i10n.py:26 msgid "Event_Theater" msgstr "Theater" -#: project/i10n.py:25 +#: project/i10n.py:27 msgid "Event_Dining" msgstr "Dining" -#: project/i10n.py:26 +#: project/i10n.py:28 msgid "Event_Conference" msgstr "Conference" -#: project/i10n.py:27 +#: project/i10n.py:29 msgid "Event_Meetup" msgstr "Meetup" -#: project/i10n.py:28 +#: project/i10n.py:30 msgid "Event_Fitness" msgstr "Fitness" -#: project/i10n.py:29 +#: project/i10n.py:31 msgid "Event_Sports" msgstr "Sports" -#: project/i10n.py:30 +#: project/i10n.py:32 msgid "Event_Other" msgstr "Other" -#: project/i10n.py:31 +#: project/i10n.py:33 msgid "Event_Exhibition" msgstr "Exhibition" -#: project/i10n.py:32 +#: project/i10n.py:34 msgid "Event_Culture" msgstr "Culture" -#: project/i10n.py:33 +#: project/i10n.py:35 msgid "Event_Tour" msgstr "Tour" -#: project/i10n.py:34 +#: project/i10n.py:36 msgid "Event_OpenAir" msgstr "Open Air" -#: project/i10n.py:35 +#: project/i10n.py:37 msgid "Event_Stage" msgstr "Stage" -#: project/i10n.py:36 +#: project/i10n.py:38 msgid "Event_Lecture" msgstr "Lecture" -#: project/i10n.py:37 +#: project/i10n.py:39 msgid "Typical Age range" msgstr "" -#: project/i10n.py:38 +#: project/i10n.py:40 msgid "Administrator" msgstr "" -#: project/i10n.py:39 +#: project/i10n.py:41 msgid "Event expert" msgstr "" -#: project/i10n.py:40 +#: project/i10n.py:42 msgid "EventReviewStatus.inbox" msgstr "Inbox" -#: project/i10n.py:41 +#: project/i10n.py:43 msgid "EventReviewStatus.verified" msgstr "Verified" -#: project/i10n.py:42 +#: project/i10n.py:44 msgid "EventReviewStatus.rejected" msgstr "Rejected" -#: project/i10n.py:43 +#: project/i10n.py:45 msgid "Scope_openid" msgstr "Verify identity" -#: project/i10n.py:44 +#: project/i10n.py:46 msgid "Scope_profile" msgstr "Profile information" -#: project/i10n.py:45 +#: project/i10n.py:47 msgid "Scope_user:read" msgstr "Read user settings" -#: project/i10n.py:46 +#: project/i10n.py:48 msgid "Scope_user:write" msgstr "Create, update and delete user settings" -#: project/i10n.py:47 +#: project/i10n.py:49 msgid "Scope_organizer:write" msgstr "Create, update and delete organizers" -#: project/i10n.py:48 +#: project/i10n.py:50 msgid "Scope_place:write" msgstr "Create, update and delete places" -#: project/i10n.py:49 +#: project/i10n.py:51 msgid "Scope_event:write" msgstr "Create, update and delete events" -#: project/i10n.py:50 +#: project/i10n.py:52 msgid "Scope_eventlist:write" msgstr "Create, update and delete event lists" -#: project/i10n.py:51 +#: project/i10n.py:53 msgid "Scope_organization:read" msgstr "Read organizations" -#: project/i10n.py:52 +#: project/i10n.py:54 msgid "Scope_organization:write" msgstr "Create, update and delete organizations" -#: project/i10n.py:53 +#: project/i10n.py:55 msgid "There must be no self-reference." msgstr "" @@ -194,30 +194,30 @@ msgstr "" msgid "message" msgstr "" -#: project/api/organization/resources.py:398 +#: project/api/organization/resources.py:401 #: project/views/admin_unit_member_invitation.py:85 msgid "You have received an invitation" msgstr "" -#: project/forms/admin.py:11 project/templates/layout.html:294 -#: project/views/root.py:53 +#: project/forms/admin.py:11 project/templates/layout.html:303 +#: project/views/root.py:55 msgid "Terms of service" msgstr "" -#: project/forms/admin.py:12 project/templates/layout.html:298 -#: project/views/root.py:61 +#: project/forms/admin.py:12 project/templates/layout.html:307 +#: project/views/root.py:63 msgid "Legal notice" msgstr "" -#: project/forms/admin.py:13 project/templates/_macros.html:1472 -#: project/templates/layout.html:302 +#: project/forms/admin.py:13 project/templates/_macros.html:1473 +#: project/templates/layout.html:311 #: project/templates/widget/event_suggestion/create.html:204 -#: project/views/admin_unit.py:73 project/views/root.py:69 +#: project/views/admin_unit.py:73 project/views/root.py:71 msgid "Contact" msgstr "" -#: project/forms/admin.py:14 project/templates/layout.html:306 -#: project/views/root.py:77 +#: project/forms/admin.py:14 project/templates/layout.html:315 +#: project/views/root.py:79 msgid "Privacy" msgstr "" @@ -244,11 +244,11 @@ msgstr "" msgid "Delete user" msgstr "" -#: project/forms/admin.py:27 project/forms/admin_unit.py:48 +#: 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/templates/_macros.html:237 project/templates/_macros.html:1568 +#: project/templates/_macros.html:237 project/templates/_macros.html:1569 #: project/templates/admin/admin.html:27 project/templates/admin/email.html:4 #: project/templates/admin/email.html:66 project/templates/admin/users.html:19 #: project/templates/manage/organizers.html:21 @@ -306,7 +306,7 @@ msgstr "" msgid "Delete organization" msgstr "" -#: project/forms/admin.py:69 project/forms/admin_unit.py:29 +#: project/forms/admin.py:69 project/forms/admin_unit.py:28 #: 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 @@ -344,130 +344,131 @@ msgstr "" msgid "Send newsletter" msgstr "" -#: project/forms/admin_unit.py:15 project/forms/event_place.py:12 +#: project/forms/admin_unit.py:14 project/forms/event_place.py:12 #: project/forms/organizer.py:12 msgid "Street" msgstr "" -#: project/forms/admin_unit.py:16 project/forms/event_place.py:13 -#: project/forms/organizer.py:13 +#: project/forms/admin_unit.py:15 project/forms/event.py:453 +#: project/forms/event_place.py:13 project/forms/organizer.py:13 msgid "Postal code" msgstr "" -#: project/forms/admin_unit.py:17 project/forms/event_place.py:14 +#: project/forms/admin_unit.py:16 project/forms/event_place.py:14 #: project/forms/organizer.py:14 msgid "City" msgstr "" -#: project/forms/admin_unit.py:18 project/forms/event_place.py:15 +#: project/forms/admin_unit.py:17 project/forms/event_place.py:15 #: project/forms/organizer.py:15 msgid "State" msgstr "" -#: project/forms/admin_unit.py:20 project/forms/event_place.py:17 +#: project/forms/admin_unit.py:19 project/forms/event_place.py:17 #: project/forms/organizer.py:17 msgid "Latitude" msgstr "" -#: project/forms/admin_unit.py:23 project/forms/event_place.py:20 +#: project/forms/admin_unit.py:22 project/forms/event_place.py:20 #: project/forms/organizer.py:20 msgid "Longitude" msgstr "" -#: project/forms/admin_unit.py:32 +#: project/forms/admin_unit.py:31 msgid "Short name" msgstr "" -#: project/forms/admin_unit.py:33 +#: project/forms/admin_unit.py:32 msgid "The short name is used to create a unique identifier for your events" msgstr "" -#: project/forms/admin_unit.py:41 project/templates/_macros.html:1610 +#: project/forms/admin_unit.py:40 project/templates/_macros.html:1611 msgid "Short name must contain only letters numbers or underscore" msgstr "" -#: project/forms/admin_unit.py:47 project/forms/event.py:106 +#: 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 msgid "Link URL" msgstr "" -#: project/forms/admin_unit.py:49 project/forms/event.py:108 +#: project/forms/admin_unit.py:48 project/forms/event.py:108 #: project/forms/event_suggestion.py:31 project/forms/organizer.py:28 #: project/templates/_macros.html:290 #: project/templates/manage/organizers.html:20 msgid "Phone" msgstr "" -#: project/forms/admin_unit.py:50 project/forms/event.py:109 +#: project/forms/admin_unit.py:49 project/forms/event.py:109 #: project/forms/organizer.py:29 project/templates/_macros.html:298 msgid "Fax" msgstr "" -#: project/forms/admin_unit.py:51 project/forms/organizer.py:30 +#: project/forms/admin_unit.py:50 project/forms/organizer.py:30 #: project/templates/manage/organizers.html:22 +#: project/templates/manage/organizers.html:47 msgid "Logo" msgstr "" -#: project/forms/admin_unit.py:55 +#: project/forms/admin_unit.py:54 msgid "Allow verification requests" msgstr "" -#: project/forms/admin_unit.py:56 +#: project/forms/admin_unit.py:55 msgid "If set, unverified organizations may ask you for verification." msgstr "" -#: project/forms/admin_unit.py:62 +#: project/forms/admin_unit.py:61 msgid "Verification requests information" msgstr "" -#: project/forms/admin_unit.py:64 +#: project/forms/admin_unit.py:63 msgid "" "This text is shown to unverified organizations to help them decide " "whether they ask you for verification." msgstr "" -#: project/forms/admin_unit.py:80 +#: project/forms/admin_unit.py:79 msgid "Verify new organization" msgstr "" -#: project/forms/admin_unit.py:81 +#: project/forms/admin_unit.py:80 msgid "If set, events of the new organization are publicly visible." msgstr "" -#: project/forms/admin_unit.py:87 project/forms/reference_request.py:86 +#: project/forms/admin_unit.py:86 project/forms/reference_request.py:86 msgid "Verify reference requests automatically" msgstr "" -#: project/forms/admin_unit.py:88 +#: project/forms/admin_unit.py:87 msgid "" "If set, all upcoming reference requests of the new organization are " "verified automatically." msgstr "" -#: project/forms/admin_unit.py:99 project/templates/admin_unit/create.html:5 +#: project/forms/admin_unit.py:98 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:107 project/forms/admin_unit.py:130 +#: project/forms/admin_unit.py:106 project/forms/admin_unit.py:129 msgid "Update settings" msgstr "" -#: project/forms/admin_unit.py:111 +#: project/forms/admin_unit.py:110 msgid "Font" msgstr "" -#: project/forms/admin_unit.py:113 +#: project/forms/admin_unit.py:112 msgid "Background Color" msgstr "" -#: project/forms/admin_unit.py:119 +#: project/forms/admin_unit.py:118 msgid "Primary Color" msgstr "" -#: project/forms/admin_unit.py:125 +#: project/forms/admin_unit.py:124 msgid "Link Color" msgstr "" @@ -577,7 +578,7 @@ msgstr "" msgid "100 km" msgstr "" -#: project/forms/event.py:38 project/templates/manage/events.html:85 +#: project/forms/event.py:38 project/templates/manage/events.html:94 msgid "Start" msgstr "" @@ -599,16 +600,16 @@ msgstr "" msgid "All-day" msgstr "" -#: project/forms/event.py:54 project/templates/_macros.html:1790 +#: project/forms/event.py:54 project/templates/_macros.html:1801 #: project/templates/widget/event_suggestion/create.html:240 msgid "Recurring event" msgstr "" -#: project/forms/event.py:61 project/templates/_macros.html:1329 +#: project/forms/event.py:61 project/templates/_macros.html:1330 msgid "The start must be before the end." msgstr "" -#: project/forms/event.py:67 project/templates/_macros.html:1346 +#: project/forms/event.py:67 project/templates/_macros.html:1347 msgid "An event can last a maximum of 14 days." msgstr "" @@ -693,7 +694,7 @@ msgid "If the participants needs to register for the event." msgstr "" #: project/forms/event.py:170 project/templates/_macros.html:251 -#: project/templates/layout.html:110 +#: project/templates/layout.html:115 msgid "Booked up" msgstr "" @@ -749,11 +750,11 @@ msgstr "" msgid "EventAttendanceMode.offline" msgstr "Normal (Offline)" -#: project/forms/event.py:217 project/templates/layout.html:98 +#: project/forms/event.py:217 project/templates/layout.html:103 msgid "EventAttendanceMode.online" msgstr "Online" -#: project/forms/event.py:219 project/templates/layout.html:101 +#: project/forms/event.py:219 project/templates/layout.html:106 msgid "EventAttendanceMode.mixed" msgstr "Online and offline" @@ -762,7 +763,10 @@ msgid "Choose how people can attend the event." msgstr "" #: project/forms/event.py:225 project/forms/event_place.py:27 +#: project/templates/manage/events.html:98 +#: project/templates/manage/events.html:133 #: project/templates/manage/places.html:21 +#: project/templates/manage/places.html:39 #: project/templates/widget/event_suggestion/create.html:258 msgid "Photo" msgstr "" @@ -826,7 +830,7 @@ msgstr "" #: project/templates/event_place/create.html:31 #: project/templates/event_place/delete.html:13 #: project/templates/event_place/update.html:31 -#: project/templates/manage/events.html:88 +#: project/templates/manage/events.html:97 msgid "Place" msgstr "" @@ -843,7 +847,7 @@ msgstr "" #: project/forms/event_suggestion.py:60 project/templates/_macros.html:475 #: project/templates/_macros.html:647 project/templates/event/create.html:253 #: project/templates/event/update.html:156 -#: project/templates/manage/events.html:87 +#: project/templates/manage/events.html:96 #: project/templates/organizer/create.html:27 #: project/templates/organizer/delete.html:13 #: project/templates/organizer/update.html:27 @@ -895,23 +899,23 @@ msgstr "" msgid "EventStatus.scheduled" msgstr "Scheduled" -#: project/forms/event.py:389 project/templates/layout.html:64 -#: project/templates/layout.html:79 +#: project/forms/event.py:389 project/templates/layout.html:69 +#: project/templates/layout.html:84 msgid "EventStatus.cancelled" msgstr "Cancelled" -#: project/forms/event.py:390 project/templates/layout.html:67 -#: project/templates/layout.html:82 +#: project/forms/event.py:390 project/templates/layout.html:72 +#: project/templates/layout.html:87 msgid "EventStatus.movedOnline" msgstr "Moved online" -#: project/forms/event.py:391 project/templates/layout.html:70 -#: project/templates/layout.html:85 +#: project/forms/event.py:391 project/templates/layout.html:75 +#: project/templates/layout.html:90 msgid "EventStatus.postponed" msgstr "Postponed" -#: project/forms/event.py:392 project/templates/layout.html:73 -#: project/templates/layout.html:88 +#: project/forms/event.py:392 project/templates/layout.html:78 +#: project/templates/layout.html:93 msgid "EventStatus.rescheduled" msgstr "Rescheduled" @@ -940,7 +944,7 @@ msgstr "" msgid "Update event" msgstr "" -#: project/forms/event.py:423 project/templates/_macros.html:1286 +#: project/forms/event.py:423 project/templates/_macros.html:1287 #: project/templates/event/actions.html:66 #: project/templates/event/delete.html:6 msgid "Delete event" @@ -965,12 +969,8 @@ msgstr "" msgid "Category" msgstr "" -#: project/forms/event.py:445 -msgid "Find events" -msgstr "" - -#: project/forms/event_date.py:24 project/forms/planing.py:22 -#: project/templates/_macros.html:305 +#: project/forms/event.py:446 project/forms/event_date.py:24 +#: project/forms/planing.py:22 project/templates/_macros.html:305 #: project/templates/admin_unit/create.html:38 #: project/templates/admin_unit/update.html:39 #: project/templates/event_place/create.html:40 @@ -982,10 +982,15 @@ msgstr "" msgid "Location" msgstr "" -#: project/forms/event_date.py:26 project/forms/planing.py:24 +#: project/forms/event.py:448 project/forms/event_date.py:26 +#: project/forms/planing.py:24 msgid "Distance" msgstr "" +#: project/forms/event.py:455 +msgid "Find events" +msgstr "" + #: project/forms/event_date.py:39 project/forms/planing.py:36 #: project/templates/widget/event_date/list.html:82 msgid "Find" @@ -1119,7 +1124,7 @@ msgstr "" #: project/templates/admin/delete_admin_unit.html:13 #: project/templates/admin_unit/create.html:28 #: project/templates/admin_unit/update.html:29 -#: project/templates/layout.html:242 +#: project/templates/layout.html:247 msgid "Organization" msgstr "" @@ -1144,7 +1149,7 @@ msgstr "" msgid "Delete request" msgstr "" -#: project/forms/reference_request.py:28 project/templates/_macros.html:1484 +#: project/forms/reference_request.py:28 project/templates/_macros.html:1485 #: project/templates/event_suggestion/review_status.html:18 #: project/templates/reference_request/review_status.html:12 msgid "Review status" @@ -1201,7 +1206,7 @@ msgstr "" "entered it, an email will be sent to you so that you can confirm that the" " email address belongs to you." -#: project/forms/security.py:43 +#: project/forms/security.py:47 msgid "login_confirmation_required" msgstr "" "Note that you will need to confirm your email address. Confirmation " @@ -1209,11 +1214,11 @@ msgstr "" "Please note that it may take a few minutes for the email to reach you. To" " be on the safe side, also check the spam folder." -#: project/forms/security.py:53 +#: project/forms/security.py:57 msgid "Allow" msgstr "" -#: project/forms/security.py:54 +#: project/forms/security.py:58 msgid "Deny" msgstr "" @@ -1227,7 +1232,7 @@ msgstr "" msgid "Information about new features and improvements." msgstr "" -#: project/forms/widgets.py:154 +#: project/forms/widgets.py:155 msgid "This field is required." msgstr "" @@ -1267,22 +1272,22 @@ msgstr "" #: project/templates/event/actions.html:25 #: project/templates/event/create.html:230 #: project/templates/event/update.html:122 -#: project/templates/manage/events.html:86 +#: project/templates/manage/events.html:95 #: project/templates/widget/event_suggestion/create.html:229 msgid "Event" msgstr "" -#: project/templates/_macros.html:393 project/templates/_macros.html:978 +#: project/templates/_macros.html:393 project/templates/_macros.html:979 msgid "Date" msgstr "" #: project/templates/_macros.html:420 project/templates/_macros.html:579 -#: project/templates/_macros.html:1553 project/templates/event/actions.html:51 +#: project/templates/_macros.html:1554 project/templates/event/actions.html:51 msgid "Share" msgstr "" #: project/templates/_macros.html:424 project/templates/_macros.html:583 -#: project/templates/_macros.html:1583 +#: project/templates/_macros.html:1584 msgid "Add to calendar" msgstr "" @@ -1303,7 +1308,7 @@ msgstr "" msgid "The event takes place both offline and online." msgstr "" -#: project/templates/_macros.html:587 project/templates/layout.html:168 +#: project/templates/_macros.html:587 project/templates/layout.html:173 #: project/templates/user/favorite_events.html:4 msgid "Favorite events" msgstr "" @@ -1311,8 +1316,8 @@ msgstr "" #: project/templates/_macros.html:590 project/templates/_macros.html:633 #: project/templates/_macros.html:765 #: project/templates/admin/admin_units.html:34 -#: project/templates/admin/users.html:34 -#: project/templates/manage/events.html:100 +#: project/templates/admin/users.html:32 +#: project/templates/manage/events.html:110 #: project/templates/manage/members.html:35 #: project/templates/manage/organizers.html:33 #: project/templates/manage/places.html:31 @@ -1326,9 +1331,9 @@ msgstr "" msgid "Referenced by" msgstr "" -#: project/templates/_macros.html:703 project/templates/_macros.html:1296 +#: project/templates/_macros.html:703 project/templates/_macros.html:1297 #: project/templates/event/actions.html:38 -#: project/templates/manage/events.html:107 +#: project/templates/manage/events.html:117 #: project/templates/manage/references_incoming.html:10 msgid "Reference event" msgstr "" @@ -1339,9 +1344,9 @@ msgstr "" msgid "Reference requests" msgstr "" -#: project/templates/_macros.html:723 project/templates/_macros.html:1293 +#: project/templates/_macros.html:723 project/templates/_macros.html:1294 #: project/templates/event/actions.html:32 -#: project/templates/manage/events.html:105 +#: project/templates/manage/events.html:115 msgid "Request reference" msgstr "" @@ -1355,17 +1360,17 @@ msgstr "" msgid "Search location on Google" msgstr "" -#: project/templates/_macros.html:895 +#: project/templates/_macros.html:896 #, python-format msgid "%(count)d event dates" msgstr "" -#: project/templates/_macros.html:918 project/templates/_macros.html:920 +#: project/templates/_macros.html:919 project/templates/_macros.html:921 #: project/templates/event_date/list.html:321 msgid "First" msgstr "" -#: project/templates/_macros.html:923 project/templates/_macros.html:925 +#: project/templates/_macros.html:924 project/templates/_macros.html:926 #: project/templates/event_date/list.html:322 #: project/templates/widget/event_suggestion/create.html:193 #: project/templates/widget/event_suggestion/create.html:218 @@ -1376,12 +1381,12 @@ msgstr "" msgid "Previous" msgstr "" -#: project/templates/_macros.html:927 +#: project/templates/_macros.html:928 #, python-format msgid "Page %(page)d of %(pages)d (%(total)d total)" msgstr "" -#: project/templates/_macros.html:929 project/templates/_macros.html:931 +#: project/templates/_macros.html:930 project/templates/_macros.html:932 #: project/templates/event_date/list.html:324 #: project/templates/widget/event_suggestion/create.html:194 #: project/templates/widget/event_suggestion/create.html:219 @@ -1391,97 +1396,97 @@ msgstr "" msgid "Next" msgstr "" -#: project/templates/_macros.html:934 project/templates/_macros.html:936 +#: project/templates/_macros.html:935 project/templates/_macros.html:937 #: project/templates/event_date/list.html:325 msgid "Last" msgstr "" -#: project/templates/_macros.html:1001 +#: project/templates/_macros.html:1002 msgid "Radius" msgstr "" -#: project/templates/_macros.html:1215 +#: project/templates/_macros.html:1216 msgid "Edit image" msgstr "" -#: project/templates/_macros.html:1236 +#: project/templates/_macros.html:1237 msgid "Close" msgstr "" -#: project/templates/_macros.html:1237 +#: project/templates/_macros.html:1238 msgid "Okay" msgstr "" -#: project/templates/_macros.html:1249 +#: project/templates/_macros.html:1250 msgid "Choose image file" msgstr "" -#: project/templates/_macros.html:1285 project/templates/event/actions.html:65 +#: project/templates/_macros.html:1286 project/templates/event/actions.html:65 #: project/templates/event/delete.html:12 msgid "Edit event" msgstr "" -#: project/templates/_macros.html:1289 project/templates/event/actions.html:58 +#: project/templates/_macros.html:1290 project/templates/event/actions.html:58 msgid "Duplicate event" msgstr "" -#: project/templates/_macros.html:1300 project/templates/event/actions.html:44 -#: project/templates/manage/events.html:111 +#: project/templates/_macros.html:1301 project/templates/event/actions.html:44 +#: project/templates/manage/events.html:121 msgid "Add to list" msgstr "" -#: project/templates/_macros.html:1303 project/templates/manage/events.html:114 +#: project/templates/_macros.html:1304 project/templates/manage/events.html:124 msgid "More" msgstr "" -#: project/templates/_macros.html:1350 +#: project/templates/_macros.html:1351 msgid "Please enter a valid time, between 00:00 and 23:59." msgstr "" -#: project/templates/_macros.html:1378 +#: project/templates/_macros.html:1379 #, python-format msgid "Just use %(term)s" msgstr "" -#: project/templates/_macros.html:1444 +#: project/templates/_macros.html:1445 msgid "Event suggestion" msgstr "" -#: project/templates/_macros.html:1562 +#: project/templates/_macros.html:1563 msgid "Link copied" msgstr "" -#: project/templates/_macros.html:1562 +#: project/templates/_macros.html:1563 msgid "Copy link" msgstr "" -#: project/templates/_macros.html:1592 +#: project/templates/_macros.html:1593 msgid "Google calendar" msgstr "" -#: project/templates/_macros.html:1594 +#: project/templates/_macros.html:1595 msgid "Apple calendar" msgstr "" -#: project/templates/_macros.html:1595 +#: project/templates/_macros.html:1596 msgid "Yahoo calendar" msgstr "" -#: project/templates/_macros.html:1596 +#: project/templates/_macros.html:1597 msgid "Other calendar" msgstr "" -#: project/templates/_macros.html:1791 +#: project/templates/_macros.html:1802 msgid "Remove event date" msgstr "" -#: project/templates/_macros.html:1820 project/templates/event/create.html:176 +#: project/templates/_macros.html:1831 project/templates/event/create.html:176 #: project/templates/event/update.html:99 #: project/templates/widget/event_suggestion/create.html:129 msgid "Enter organizer" msgstr "" -#: project/templates/_macros.html:1844 +#: project/templates/_macros.html:1855 msgid "Enter list name" msgstr "" @@ -1489,7 +1494,7 @@ msgstr "" msgid "Manage" msgstr "" -#: project/templates/home.html:37 project/templates/layout.html:158 +#: project/templates/home.html:37 project/templates/layout.html:163 #: project/templates/manage/admin_units.html:28 #: project/templates/manage/verification_requests_outgoing.html:13 #: project/templates/security/login_user.html:21 @@ -1501,9 +1506,9 @@ msgstr "" msgid "Features" msgstr "" -#: project/templates/layout.html:152 project/templates/layout.html:200 +#: project/templates/layout.html:157 project/templates/layout.html:205 #: project/templates/manage/events.html:6 -#: project/templates/manage/events.html:43 +#: project/templates/manage/events.html:48 #: project/templates/manage/events_vue.html:4 msgid "Events" msgstr "" @@ -1511,18 +1516,18 @@ msgstr "" #: project/templates/admin/admin.html:19 #: project/templates/admin/admin_units.html:4 #: project/templates/admin/admin_units.html:11 -#: project/templates/layout.html:153 project/templates/layout.html:166 +#: project/templates/layout.html:158 project/templates/layout.html:171 #: project/templates/manage/admin_units.html:3 #: project/templates/manage/admin_units.html:26 #: project/templates/organization/main.html:4 msgid "Organizations" msgstr "" -#: project/templates/layout.html:154 +#: project/templates/layout.html:159 msgid "Planing" msgstr "" -#: project/templates/layout.html:167 project/templates/layout.html:256 +#: project/templates/layout.html:172 project/templates/layout.html:265 #: project/templates/oauth2_client/list.html:10 #: project/templates/oauth2_client/read.html:10 #: project/templates/oauth2_token/list.html:10 project/templates/profile.html:4 @@ -1535,87 +1540,87 @@ msgstr "" #: project/templates/admin/email.html:65 #: project/templates/admin/newsletter.html:92 #: project/templates/admin/settings.html:10 -#: project/templates/admin/users.html:10 project/templates/layout.html:171 +#: project/templates/admin/users.html:10 project/templates/layout.html:176 msgid "Admin" msgstr "" -#: project/templates/layout.html:175 +#: project/templates/layout.html:180 msgid "Logout" msgstr "" -#: project/templates/layout.html:206 +#: project/templates/layout.html:211 msgid "Show events" msgstr "" #: project/templates/event/create.html:5 -#: project/templates/event/create.html:221 project/templates/layout.html:207 -#: project/templates/manage/events.html:44 +#: project/templates/event/create.html:221 project/templates/layout.html:212 +#: project/templates/manage/events.html:49 #: project/templates/manage/organizers.html:38 msgid "Create event" msgstr "" -#: project/templates/layout.html:208 +#: project/templates/layout.html:213 msgid "Import event" msgstr "" -#: project/templates/layout.html:210 +#: project/templates/layout.html:215 #: project/templates/manage/event_lists.html:4 msgid "Event lists" msgstr "" -#: project/templates/layout.html:213 +#: project/templates/layout.html:218 msgid "Review suggestions" msgstr "" -#: project/templates/layout.html:223 +#: project/templates/layout.html:228 #: project/templates/manage/references_incoming.html:5 #: project/templates/manage/references_outgoing.html:5 msgid "References" msgstr "" -#: project/templates/layout.html:229 +#: project/templates/layout.html:234 #: project/templates/manage/references_incoming.html:9 msgid "Incoming references" msgstr "" -#: project/templates/layout.html:230 +#: project/templates/layout.html:235 #: project/templates/manage/references_outgoing.html:9 msgid "Outgoing references" msgstr "" -#: project/templates/layout.html:232 +#: project/templates/layout.html:237 #: project/templates/manage/reference_requests_incoming.html:9 msgid "Incoming reference requests" msgstr "" -#: project/templates/layout.html:237 +#: project/templates/layout.html:242 #: project/templates/manage/reference_requests_outgoing.html:9 msgid "Outgoing reference requests" msgstr "" -#: project/templates/layout.html:245 project/templates/manage/organizers.html:5 +#: project/templates/layout.html:250 project/templates/manage/organizers.html:5 #: project/templates/manage/organizers.html:10 #: project/templates/organizer/main.html:4 msgid "Organizers" msgstr "" #: project/templates/event_place/list.html:3 -#: project/templates/event_place/list.html:7 project/templates/layout.html:246 +#: project/templates/event_place/list.html:7 project/templates/layout.html:251 #: project/templates/manage/places.html:5 #: project/templates/manage/places.html:10 msgid "Places" msgstr "" -#: project/templates/layout.html:248 project/templates/manage/members.html:5 +#: project/templates/layout.html:253 project/templates/manage/members.html:5 #: project/templates/manage/members.html:28 msgid "Members" msgstr "" -#: project/templates/layout.html:249 project/templates/manage/relations.html:4 +#: project/templates/layout.html:254 project/templates/manage/relations.html:4 msgid "Relations" msgstr "" -#: project/templates/layout.html:251 +#: project/templates/layout.html:256 #: project/templates/manage/admin_units.html:17 #: project/templates/manage/organization_invitations.html:4 #: project/templates/user/organization_invitations.html:4 @@ -1627,27 +1632,33 @@ msgstr "" #: project/templates/admin/settings.html:11 #: project/templates/admin_unit/update.html:6 #: project/templates/admin_unit/update.html:23 -#: project/templates/layout.html:253 project/templates/manage/widgets.html:11 +#: project/templates/layout.html:259 project/templates/manage/widgets.html:11 #: project/templates/manage/widgets.html:15 project/templates/profile.html:19 msgid "Settings" msgstr "" -#: project/templates/layout.html:254 +#: project/templates/layout.html:260 project/templates/manage/export.html:4 +#: project/templates/manage/export.html:65 +msgid "Export" +msgstr "" + +#: project/templates/layout.html:262 #: project/templates/manage/custom_widgets.html:13 msgid "Custom widgets" msgstr "" -#: project/templates/layout.html:255 project/templates/manage/reviews.html:10 +#: project/templates/layout.html:263 project/templates/manage/reviews.html:10 #: project/templates/manage/widgets.html:5 #: project/templates/manage/widgets.html:9 msgid "Widgets" msgstr "" -#: project/templates/layout.html:266 +#: project/templates/layout.html:275 msgid "Switch organization" msgstr "" -#: project/templates/developer/read.html:4 project/templates/layout.html:310 +#: project/templates/developer/read.html:4 +#: project/templates/developer/read.html:8 project/templates/layout.html:319 #: project/templates/profile.html:33 msgid "Developer" msgstr "" @@ -1675,7 +1686,7 @@ msgid "Users" msgstr "" #: project/templates/admin/admin_units.html:33 -#: project/templates/manage/events.html:99 +#: project/templates/manage/events.html:109 #: project/templates/manage/organizers.html:32 #: project/templates/manage/references_incoming.html:19 #: project/templates/manage/references_outgoing.html:19 @@ -1683,8 +1694,8 @@ msgid "View" msgstr "" #: project/templates/admin/admin_units.html:35 -#: project/templates/admin/users.html:35 -#: project/templates/manage/events.html:101 +#: project/templates/admin/users.html:33 +#: project/templates/manage/events.html:111 #: project/templates/manage/members.html:21 #: project/templates/manage/members.html:36 #: project/templates/manage/organizers.html:34 @@ -1698,7 +1709,7 @@ msgstr "" msgid "User" msgstr "" -#: project/templates/admin/email.html:47 project/views/admin.py:151 +#: project/templates/admin/email.html:47 project/views/admin.py:155 msgid "Mail sent successfully" msgstr "" @@ -1741,6 +1752,21 @@ msgstr "" msgid "Verification requests" msgstr "" +#: project/templates/developer/read.html:16 +#: project/templates/manage/export.html:67 +msgid "Download" +msgstr "" + +#: project/templates/developer/read.html:20 +#: project/templates/manage/export.html:71 +msgid "All data" +msgstr "" + +#: project/templates/developer/read.html:22 +#: project/templates/manage/export.html:73 +msgid "No files available" +msgstr "" + #: project/templates/email/event_report_notice.html:4 msgid "There is a new event report." msgstr "" @@ -1869,7 +1895,7 @@ msgstr "" #: project/templates/event/actions.html:74 project/templates/event/read.html:32 #: project/templates/event_date/read.html:34 -#: project/templates/manage/events.html:131 +#: project/templates/manage/events.html:145 msgid "Add event to list" msgstr "" @@ -1980,34 +2006,42 @@ msgstr "" msgid "Member" msgstr "" -#: project/templates/manage/events.html:37 +#: project/templates/manage/events.html:42 msgid "" "The organization is not verified. Events are therefore not publicly " "visible." msgstr "" -#: project/templates/manage/events.html:38 +#: project/templates/manage/events.html:43 msgid "Verify organization" msgstr "" -#: project/templates/manage/events.html:76 +#: project/templates/manage/events.html:85 msgid "More filters" msgstr "" -#: project/templates/manage/events.html:89 +#: project/templates/manage/events.html:99 +#: project/templates/manage/events.html:134 msgid "Number of references" msgstr "" -#: project/templates/manage/events.html:89 +#: project/templates/manage/events.html:99 +#: project/templates/manage/events.html:134 msgid "Number of reference requests." msgstr "" -#: project/templates/manage/events.html:102 +#: project/templates/manage/events.html:112 msgid "Duplicate" msgstr "" +#: project/templates/manage/export.html:79 +msgid "Create export files" +msgstr "" + #: project/templates/manage/organizers.html:23 +#: project/templates/manage/organizers.html:48 #: project/templates/manage/places.html:22 +#: project/templates/manage/places.html:40 msgid "Number of events" msgstr "" @@ -2017,6 +2051,7 @@ msgid "View events" msgstr "" #: project/templates/manage/places.html:20 +#: project/templates/manage/places.html:38 msgid "Coordinates" msgstr "" @@ -2141,7 +2176,7 @@ msgstr "" msgid "You do not have an account yet? Not a problem!" msgstr "" -#: project/templates/security/login_user.html:44 project/views/widget.py:159 +#: project/templates/security/login_user.html:44 project/views/widget.py:155 msgid "Register for free" msgstr "" @@ -2177,30 +2212,30 @@ msgstr "" msgid "Organization successfully deleted" msgstr "" -#: project/views/admin.py:111 project/views/manage.py:371 +#: project/views/admin.py:111 project/views/manage.py:443 #: project/views/user.py:28 msgid "Settings successfully updated" msgstr "" -#: project/views/admin.py:140 +#: project/views/admin.py:144 #, python-format msgid "Test mail from %(site_name)s" msgstr "" -#: project/views/admin.py:179 +#: project/views/admin.py:187 #, python-format msgid "Newsletter from %(site_name)s" msgstr "" -#: project/views/admin.py:229 +#: project/views/admin.py:237 msgid "User successfully updated" msgstr "" -#: project/views/admin.py:249 +#: project/views/admin.py:257 msgid "Entered email does not match user email" msgstr "" -#: project/views/admin.py:254 +#: project/views/admin.py:262 msgid "User successfully deleted" msgstr "" @@ -2254,27 +2289,27 @@ msgstr "" msgid "Invitation successfully deleted" msgstr "" -#: project/views/event.py:184 +#: project/views/event.py:181 msgid "Event successfully published" msgstr "" -#: project/views/event.py:186 +#: project/views/event.py:183 msgid "Draft successfully saved" msgstr "" -#: project/views/event.py:229 +#: project/views/event.py:226 msgid "Event successfully updated" msgstr "" -#: project/views/event.py:255 +#: project/views/event.py:252 msgid "Event successfully deleted" msgstr "" -#: project/views/event.py:407 +#: project/views/event.py:417 msgid "Referenced event changed" msgstr "" -#: project/views/event.py:430 +#: project/views/event.py:440 msgid "New event report" msgstr "" @@ -2430,17 +2465,17 @@ msgid "" " the invitation was sent to." msgstr "" -#: project/views/widget.py:151 +#: project/views/widget.py:147 msgid "Thank you so much! The event is being verified." msgstr "" -#: project/views/widget.py:155 +#: project/views/widget.py:151 msgid "" "For more options and your own calendar of events, you can register for " "free." msgstr "" -#: project/views/widget.py:221 +#: project/views/widget.py:217 msgid "New event review" msgstr "" diff --git a/project/utils.py b/project/utils.py index 7efb8a3..2f22e46 100644 --- a/project/utils.py +++ b/project/utils.py @@ -56,6 +56,9 @@ def make_dir(path): def clear_files_in_dir(path): + if not os.path.exists(path): # pragma: no cover + return + with os.scandir(path) as entries: for entry in entries: if entry.is_file() or entry.is_symlink(): diff --git a/project/views/admin.py b/project/views/admin.py index 7d2a49e..400d143 100644 --- a/project/views/admin.py +++ b/project/views/admin.py @@ -5,7 +5,7 @@ from flask_security import roles_required from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.sql import func -from project import app, celery, db, user_datastore +from project import app, db, user_datastore from project.base_tasks import send_mail_task from project.forms.admin import ( AdminNewsletterForm, @@ -21,6 +21,8 @@ from project.services.admin import upsert_settings from project.services.user import set_roles_for_user from project.views.utils import ( flash_errors, + get_celery_poll_group_result, + get_celery_poll_result, get_pagination_urls, handleSqlError, non_match_for_deletion, @@ -125,20 +127,7 @@ def admin_email(): form = AdminTestEmailForm() if "poll" in request.args: # pragma: no cover - try: - result = celery.AsyncResult(request.args["poll"]) - ready = result.ready() - return { - "ready": ready, - "successful": result.successful() if ready else None, - "value": result.get() if ready else result.result, - } - except Exception as e: - return { - "ready": True, - "successful": False, - "error": getattr(e, "message", "Unknown error"), - } + return get_celery_poll_result() if form.validate_on_submit(): subject = gettext( @@ -167,21 +156,7 @@ def admin_newsletter(): form = AdminNewsletterForm() if "poll" in request.args: # pragma: no cover - try: - result = celery.GroupResult.restore(request.args["poll"]) - ready = result.ready() - return { - "ready": ready, - "count": len(result.children), - "completed": result.completed_count(), - "successful": result.successful() if ready else None, - } - except Exception as e: - return { - "ready": True, - "successful": False, - "error": getattr(e, "message", "Unknown error"), - } + return get_celery_poll_group_result() if form.validate_on_submit(): subject = gettext( diff --git a/project/views/manage.py b/project/views/manage.py index 0347264..e1590e7 100644 --- a/project/views/manage.py +++ b/project/views/manage.py @@ -1,10 +1,19 @@ -from flask import flash, redirect, render_template, request, url_for +import os + +from flask import ( + flash, + redirect, + render_template, + request, + send_from_directory, + url_for, +) from flask_babel import gettext from flask_security import auth_required, current_user from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.sql import desc, func -from project import app, db +from project import app, db, dump_org_path from project.access import ( access_or_401, admin_unit_suggestions_enabled_or_404, @@ -12,6 +21,7 @@ from project.access import ( get_admin_units_for_manage, has_access, ) +from project.celery_tasks import dump_admin_unit_task from project.forms.admin_unit import UpdateAdminUnitWidgetForm from project.forms.event import FindEventForm from project.forms.event_place import FindEventPlaceForm @@ -35,6 +45,7 @@ from project.utils import get_place_str from project.views.event import get_event_category_choices from project.views.utils import ( flash_errors, + get_celery_poll_result, get_current_admin_unit, get_pagination_urls, handleSqlError, @@ -336,6 +347,51 @@ def manage_admin_unit_events_import(id): ) +@app.route("/manage/admin_unit//export", methods=["GET", "POST"]) +@auth_required() +def manage_admin_unit_export(id): + admin_unit = get_admin_unit_for_manage_or_404(id) + + if not has_access(admin_unit, "admin_unit:update"): # pragma: no cover + return permission_missing(url_for("manage_admin_unit", id=admin_unit.id)) + + if "poll" in request.args: # pragma: no cover + return get_celery_poll_result() + + if request.method == "POST": # pragma: no cover + result = dump_admin_unit_task.delay(admin_unit.id) + return {"result_id": result.id} + + set_current_admin_unit(admin_unit) + + file_name = f"org-{admin_unit.id}.zip" + file_path = os.path.join(dump_org_path, file_name) + dump_file = None + + if os.path.exists(file_path): + dump_file = { + "url": url_for( + "manage_admin_unit_export_dump_files", id=admin_unit.id, path=file_name + ), + "size": os.path.getsize(file_path), + "ctime": os.path.getctime(file_path), + } + + return render_template( + "manage/export.html", + admin_unit=admin_unit, + dump_file=dump_file, + ) + + +@app.route("/manage/admin_unit//export/dump/") +def manage_admin_unit_export_dump_files(id, path): + admin_unit = get_admin_unit_for_manage_or_404(id) + access_or_401(admin_unit, "admin_unit:update") + + return send_from_directory(dump_org_path, path) + + @app.route("/manage/admin_unit//widgets", methods=("GET", "POST")) @auth_required() def manage_admin_unit_widgets(id): diff --git a/project/views/utils.py b/project/views/utils.py index 6c096d4..2d093a9 100644 --- a/project/views/utils.py +++ b/project/views/utils.py @@ -9,7 +9,7 @@ from psycopg2.errorcodes import UNIQUE_VIOLATION from sqlalchemy.exc import SQLAlchemyError from wtforms import FormField -from project import app, mail +from project import app, celery, mail from project.access import get_admin_unit_for_manage, get_admin_units_for_manage from project.dateutils import berlin_tz, round_to_next_day from project.models import Event, EventAttendanceMode, EventDate @@ -263,3 +263,38 @@ def get_invitation_access_result(email: str): return app.login_manager.unauthorized() return None + + +def get_celery_poll_result(): # pragma: no cover + try: + result = celery.AsyncResult(request.args["poll"]) + ready = result.ready() + return { + "ready": ready, + "successful": result.successful() if ready else None, + "value": result.get() if ready else result.result, + } + except Exception as e: + return { + "ready": True, + "successful": False, + "error": getattr(e, "message", "Unknown error"), + } + + +def get_celery_poll_group_result(): # pragma: no cover + try: + result = celery.GroupResult.restore(request.args["poll"]) + ready = result.ready() + return { + "ready": ready, + "count": len(result.children), + "completed": result.completed_count(), + "successful": result.successful() if ready else None, + } + except Exception as e: + return { + "ready": True, + "successful": False, + "error": getattr(e, "message", "Unknown error"), + } diff --git a/tests/cli/test_dump.py b/tests/cli/test_dump.py index 16f00ed..8c3e583 100644 --- a/tests/cli/test_dump.py +++ b/tests/cli/test_dump.py @@ -9,3 +9,25 @@ def test_all(client, seeder, app, utils): utils.get_endpoint_ok("developer") utils.get_endpoint_ok("dump_files", path="all.zip") + + +def test_organization(client, seeder, app, utils): + user_id, admin_unit_id = seeder.setup_base() + seeder.create_event(admin_unit_id) + + runner = app.test_cli_runner() + result = runner.invoke( + args=[ + "dump", + "organization", + str(admin_unit_id), + ] + ) + assert result.exit_code == 0 + + utils.get_endpoint_ok("manage_admin_unit_export", id=admin_unit_id) + utils.get_endpoint_ok( + "manage_admin_unit_export_dump_files", + id=admin_unit_id, + path=f"org-{admin_unit_id}.zip", + ) diff --git a/tests/services/test_dump.py b/tests/services/test_dump.py new file mode 100644 index 0000000..ff6b43c --- /dev/null +++ b/tests/services/test_dump.py @@ -0,0 +1,19 @@ +def test_clear_admin_unit_dumps(client, seeder, utils, app): + user_id, admin_unit_id = seeder.setup_base() + + with app.app_context(): + from project.services.dump import clear_admin_unit_dumps + + clear_admin_unit_dumps() + + +def test_dump_admin_unit(client, seeder, utils, app): + user_id, admin_unit_id = seeder.setup_base() + event_id = seeder.create_event(admin_unit_id) + image_id = seeder.upsert_default_image() + seeder.assign_image_to_event(event_id, image_id) + + with app.app_context(): + from project.services.dump import dump_admin_unit + + dump_admin_unit(admin_unit_id)