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') }}
+
+ -
+ {% if dump_file %}
+ {{ _('All data') }} {{ dump_file.ctime | datetimeformat }} {{ dump_file.size | human_file_size }}
+ {% else %}
+ {{ _('No files available') }}
+ {% endif %}
+
+
+
+
+
+
+
+
+{% 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)