diff --git a/AKModel/admin.py b/AKModel/admin.py index ae8da12f3a60f47c64cb21b6611ead2b7b099059..39fc678db42611d3b2192a006179a46524805f6a 100644 --- a/AKModel/admin.py +++ b/AKModel/admin.py @@ -1,8 +1,9 @@ from django import forms from django.apps import apps -from django.contrib import admin -from django.contrib.admin import SimpleListFilter, RelatedFieldListFilter +from django.contrib import admin, messages +from django.contrib.admin import SimpleListFilter, RelatedFieldListFilter, action from django.db.models import Count, F +from django.db.models.functions import Now from django.shortcuts import render, redirect from django.urls import reverse_lazy from django.utils import timezone @@ -31,11 +32,12 @@ class EventRelatedFieldListFilter(RelatedFieldListFilter): @admin.register(Event) class EventAdmin(admin.ModelAdmin): model = Event - list_display = ['name', 'status_url', 'place', 'start', 'end', 'active'] + list_display = ['name', 'status_url', 'place', 'start', 'end', 'active', 'plan_hidden'] list_filter = ['active'] list_editable = ['active'] ordering = ['-start'] - readonly_fields = ['status_url'] + readonly_fields = ['status_url', 'plan_hidden', 'plan_published_at'] + actions = ['publish', 'unpublish'] def add_view(self, request, form_url='', extra_context=None): # Always use wizard to create new events (the built-in form wouldn't work anyways since the timezone cannot @@ -62,6 +64,16 @@ class EventAdmin(admin.ModelAdmin): timezone.activate(obj.timezone) return super().get_form(request, obj, change, **kwargs) + @action(description=_('Publish plan')) + def publish(self, request, queryset): + queryset.update(plan_published_at=Now(), plan_hidden=False) + self.message_user(request, _('Plan published'), messages.SUCCESS) + + @action(description=_('Unpublish plan')) + def unpublish(self, request, queryset): + queryset.update(plan_published_at=None, plan_hidden=True) + self.message_user(request, _('Plan unpublished'), messages.SUCCESS) + @admin.register(AKOwner) class AKOwnerAdmin(admin.ModelAdmin): diff --git a/AKModel/forms.py b/AKModel/forms.py index 88b823ed30e45598d9f60fad3715b5d3a07dc0a0..43f712ed9614a6727abd8488620c7d1db953307d 100644 --- a/AKModel/forms.py +++ b/AKModel/forms.py @@ -29,6 +29,7 @@ class NewEventWizardSettingsForm(forms.ModelForm): 'start': DateTimePickerInput(options={"format": "YYYY-MM-DD HH:mm"}), 'end': DateTimePickerInput(options={"format": "YYYY-MM-DD HH:mm"}), 'reso_deadline': DateTimePickerInput(options={"format": "YYYY-MM-DD HH:mm"}), + 'plan_hidden': forms.HiddenInput(), } diff --git a/AKModel/locale/de_DE/LC_MESSAGES/django.po b/AKModel/locale/de_DE/LC_MESSAGES/django.po index 3aefe1d40ecfcdc0e1834df1e4f40a89c6805298..fd79e07e6c2dd0a314188752a2e4a9bebba12300 100644 --- a/AKModel/locale/de_DE/LC_MESSAGES/django.po +++ b/AKModel/locale/de_DE/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-09-27 14:14+0200\n" +"POT-Creation-Date: 2022-10-23 18:03+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -11,41 +11,57 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\AKModel\admin.py:56 .\AKModel\admin.py:58 -#: .\AKModel\templates\admin\AKModel\event_wizard\activate.html:32 -#: .\AKModel\templates\admin\AKModel\event_wizard\created_prepare_import.html:48 -#: .\AKModel\templates\admin\AKModel\event_wizard\finish.html:21 -#: .\AKModel\templates\admin\AKModel\requirements_overview.html:8 -#: .\AKModel\templates\admin\AKModel\status.html:7 -#: .\AKModel\templates\admin\ak_index.html:15 +#: AKModel/admin.py:58 AKModel/admin.py:60 +#: AKModel/templates/admin/AKModel/event_wizard/activate.html:32 +#: AKModel/templates/admin/AKModel/event_wizard/created_prepare_import.html:48 +#: AKModel/templates/admin/AKModel/event_wizard/finish.html:21 +#: AKModel/templates/admin/AKModel/requirements_overview.html:8 +#: AKModel/templates/admin/AKModel/status.html:7 +#: AKModel/templates/admin/ak_index.html:15 msgid "Status" msgstr "Status" -#: .\AKModel\admin.py:132 +#: AKModel/admin.py:67 +msgid "Publish plan" +msgstr "Plan veröffentlichen" + +#: AKModel/admin.py:70 +msgid "Plan published" +msgstr "Plan veröffentlicht" + +#: AKModel/admin.py:72 +msgid "Unpublish plan" +msgstr "Plan verbergen" + +#: AKModel/admin.py:75 +msgid "Plan unpublished" +msgstr "Plan verborgen" + +#: AKModel/admin.py:144 msgid "Wish" msgstr "AK-Wunsch" -#: .\AKModel\admin.py:138 +#: AKModel/admin.py:150 msgid "Is wish" msgstr "Ist ein Wunsch" -#: .\AKModel\admin.py:139 +#: AKModel/admin.py:151 msgid "Is not a wish" msgstr "Ist kein Wunsch" -#: .\AKModel\admin.py:185 +#: AKModel/admin.py:197 msgid "Export to wiki syntax" msgstr "In Wiki-Syntax exportieren" -#: .\AKModel\admin.py:279 +#: AKModel/admin.py:291 msgid "AK Details" msgstr "AK-Details" -#: .\AKModel\availability\forms.py:21 .\AKModel\availability\models.py:248 +#: AKModel/availability/forms.py:21 AKModel/availability/models.py:248 msgid "Availability" msgstr "Verfügbarkeit" -#: .\AKModel\availability\forms.py:23 +#: AKModel/availability/forms.py:23 msgid "" "Click and drag to mark the availability during the event, double-click to " "delete." @@ -53,213 +69,221 @@ msgstr "" "Klicken und ziehen um die Verfügbarkeiten während des Events zu markieren. " "Doppelt klicken um Einträge zu löschen." -#: .\AKModel\availability\forms.py:87 +#: AKModel/availability/forms.py:87 msgid "The submitted availability does not comply with the required format." msgstr "Die eingetragenen Verfügbarkeit haben nicht das notwendige Format." -#: .\AKModel\availability\forms.py:100 +#: AKModel/availability/forms.py:100 msgid "The submitted availability contains an invalid date." msgstr "Die eingegebene Verfügbarkeit enthält ein ungültiges Datum." -#: .\AKModel\availability\forms.py:123 .\AKModel\availability\forms.py:133 +#: AKModel/availability/forms.py:123 AKModel/availability/forms.py:133 msgid "Please fill in your availabilities!" msgstr "Bitte Verfügbarkeiten eintragen!" -#: .\AKModel\availability\models.py:38 .\AKModel\models.py:54 -#: .\AKModel\models.py:120 .\AKModel\models.py:175 .\AKModel\models.py:194 -#: .\AKModel\models.py:226 .\AKModel\models.py:280 .\AKModel\models.py:354 -#: .\AKModel\models.py:387 .\AKModel\models.py:458 .\AKModel\models.py:499 +#: AKModel/availability/models.py:38 AKModel/models.py:56 AKModel/models.py:126 +#: AKModel/models.py:181 AKModel/models.py:200 AKModel/models.py:232 +#: AKModel/models.py:286 AKModel/models.py:352 AKModel/models.py:385 +#: AKModel/models.py:456 AKModel/models.py:497 msgid "Event" msgstr "Event" -#: .\AKModel\availability\models.py:39 .\AKModel\models.py:121 -#: .\AKModel\models.py:176 .\AKModel\models.py:195 .\AKModel\models.py:227 -#: .\AKModel\models.py:281 .\AKModel\models.py:355 .\AKModel\models.py:388 -#: .\AKModel\models.py:459 .\AKModel\models.py:500 +#: AKModel/availability/models.py:39 AKModel/models.py:127 +#: AKModel/models.py:182 AKModel/models.py:201 AKModel/models.py:233 +#: AKModel/models.py:287 AKModel/models.py:353 AKModel/models.py:386 +#: AKModel/models.py:457 AKModel/models.py:498 msgid "Associated event" msgstr "Zugehöriges Event" -#: .\AKModel\availability\models.py:47 +#: AKModel/availability/models.py:47 msgid "Person" msgstr "Person" -#: .\AKModel\availability\models.py:48 +#: AKModel/availability/models.py:48 msgid "Person whose availability this is" msgstr "Person deren Verfügbarkeit hier abgebildet wird" -#: .\AKModel\availability\models.py:56 .\AKModel\models.py:358 -#: .\AKModel\models.py:377 .\AKModel\models.py:508 +#: AKModel/availability/models.py:56 AKModel/models.py:356 +#: AKModel/models.py:375 AKModel/models.py:506 msgid "Room" msgstr "Raum" -#: .\AKModel\availability\models.py:57 +#: AKModel/availability/models.py:57 msgid "Room whose availability this is" msgstr "Raum dessen Verfügbarkeit hier abgebildet wird" -#: .\AKModel\availability\models.py:65 .\AKModel\models.py:286 -#: .\AKModel\models.py:376 .\AKModel\models.py:453 +#: AKModel/availability/models.py:65 AKModel/models.py:292 +#: AKModel/models.py:374 AKModel/models.py:451 msgid "AK" msgstr "AK" -#: .\AKModel\availability\models.py:66 +#: AKModel/availability/models.py:66 msgid "AK whose availability this is" msgstr "Verfügbarkeiten" -#: .\AKModel\availability\models.py:74 .\AKModel\models.py:179 -#: .\AKModel\models.py:514 +#: AKModel/availability/models.py:74 AKModel/models.py:185 +#: AKModel/models.py:512 msgid "AK Category" msgstr "AK-Kategorie" -#: .\AKModel\availability\models.py:75 +#: AKModel/availability/models.py:75 msgid "AK Category whose availability this is" msgstr "AK-Kategorie, deren Verfügbarkeit hier abgebildet wird" -#: .\AKModel\availability\models.py:249 +#: AKModel/availability/models.py:249 msgid "Availabilities" msgstr "Verfügbarkeiten" -#: .\AKModel\forms.py:38 +#: AKModel/forms.py:39 msgid "Copy ak requirements and ak categories of existing event" msgstr "AK-Anforderungen und AK-Kategorien eines existierenden Events kopieren" -#: .\AKModel\forms.py:39 +#: AKModel/forms.py:40 msgid "You can choose what to copy in the next step" msgstr "" "Im nächsten Schritt kann ausgewählt werden, was genau kopiert werden soll" -#: .\AKModel\forms.py:47 +#: AKModel/forms.py:48 msgid "Copy ak categories" msgstr "AK-Kategorien kopieren" -#: .\AKModel\forms.py:54 +#: AKModel/forms.py:55 msgid "Copy ak requirements" msgstr "AK-Anforderungen kopieren" -#: .\AKModel\models.py:18 .\AKModel\models.py:167 .\AKModel\models.py:191 -#: .\AKModel\models.py:210 .\AKModel\models.py:224 .\AKModel\models.py:242 -#: .\AKModel\models.py:346 +#: AKModel/models.py:18 AKModel/models.py:173 AKModel/models.py:197 +#: AKModel/models.py:216 AKModel/models.py:230 AKModel/models.py:248 +#: AKModel/models.py:344 msgid "Name" msgstr "Name" -#: .\AKModel\models.py:19 +#: AKModel/models.py:19 msgid "Name or iteration of the event" msgstr "Name oder Iteration des Events" -#: .\AKModel\models.py:20 +#: AKModel/models.py:20 msgid "Short Form" msgstr "Kurzer Name" -#: .\AKModel\models.py:21 +#: AKModel/models.py:21 msgid "Short name of letters/numbers/dots/dashes/underscores used in URLs." msgstr "" "Kurzname bestehend aus Buchstaben, Nummern, Punkten und Unterstrichen zur " "Nutzung in URLs" -#: .\AKModel\models.py:23 +#: AKModel/models.py:23 msgid "Place" msgstr "Ort" -#: .\AKModel\models.py:24 +#: AKModel/models.py:24 msgid "City etc. the event takes place in" msgstr "Stadt o.ä. in der das Event stattfindet" -#: .\AKModel\models.py:26 +#: AKModel/models.py:26 msgid "Time Zone" msgstr "Zeitzone" -#: .\AKModel\models.py:26 +#: AKModel/models.py:26 msgid "Time Zone where this event takes place in" msgstr "Zeitzone in der das Event stattfindet" -#: .\AKModel\models.py:27 .\AKModel\views.py:242 +#: AKModel/models.py:27 AKModel/views.py:242 msgid "Start" msgstr "Start" -#: .\AKModel\models.py:27 +#: AKModel/models.py:27 msgid "Time the event begins" msgstr "Zeit zu der das Event beginnt" -#: .\AKModel\models.py:28 +#: AKModel/models.py:28 msgid "End" msgstr "Ende" -#: .\AKModel\models.py:28 +#: AKModel/models.py:28 msgid "Time the event ends" msgstr "Zeit zu der das Event endet" -#: .\AKModel\models.py:29 +#: AKModel/models.py:29 msgid "Resolution Deadline" msgstr "Resolutionsdeadline" -#: .\AKModel\models.py:30 +#: AKModel/models.py:30 msgid "When should AKs with intention to submit a resolution be done?" msgstr "Wann sollen AKs mit Resolutionsabsicht stattgefunden haben?" -#: .\AKModel\models.py:32 +#: AKModel/models.py:32 msgid "Interest Window Start" msgstr "Beginn Interessensbekundung" -#: .\AKModel\models.py:33 +#: AKModel/models.py:33 msgid "Opening time for expression of interest." msgstr "Öffnungszeitpunkt für die Angabe von Interesse an AKs." -#: .\AKModel\models.py:34 +#: AKModel/models.py:34 msgid "Interest Window End" msgstr "Ende Interessensbekundung" -#: .\AKModel\models.py:35 +#: AKModel/models.py:35 msgid "Closing time for expression of interest." msgstr "Öffnungszeitpunkt für die Angabe von Interesse an AKs." -#: .\AKModel\models.py:37 +#: AKModel/models.py:37 msgid "Public event" msgstr "Öffentliches Event" -#: .\AKModel\models.py:38 +#: AKModel/models.py:38 msgid "Show this event on overview page." msgstr "Zeige dieses Event auf der Übersichtseite an" -#: .\AKModel\models.py:40 +#: AKModel/models.py:40 msgid "Active State" msgstr "Aktiver Status" -#: .\AKModel\models.py:40 +#: AKModel/models.py:40 msgid "Marks currently active events" msgstr "Markiert aktuell aktive Events" -#: .\AKModel\models.py:41 +#: AKModel/models.py:41 msgid "Plan Hidden" msgstr "Plan verborgen" -#: .\AKModel\models.py:41 +#: AKModel/models.py:41 msgid "Hides plan for non-staff users" msgstr "Verbirgt den Plan für Nutzer*innen ohne erweiterte Rechte" -#: .\AKModel\models.py:44 +#: AKModel/models.py:43 +msgid "Plan published at" +msgstr "Plan veröffentlicht am/um" + +#: AKModel/models.py:44 +msgid "Timestamp at which the plan was published" +msgstr "Zeitpunkt, zu dem der Plan veröffentlicht wurde" + +#: AKModel/models.py:46 msgid "Base URL" msgstr "URL-Prefix" -#: .\AKModel\models.py:44 +#: AKModel/models.py:46 msgid "Prefix for wiki link construction" msgstr "Prefix für die automatische Generierung von Wiki-Links" -#: .\AKModel\models.py:45 +#: AKModel/models.py:47 msgid "Wiki Export Template Name" msgstr "Wiki-Export Templatename" -#: .\AKModel\models.py:46 +#: AKModel/models.py:48 msgid "Default Slot Length" msgstr "Standardslotlänge" -#: .\AKModel\models.py:47 +#: AKModel/models.py:49 msgid "Default length in hours that is assumed for AKs in this event." msgstr "Standardlänge von Slots (in Stunden) für dieses Event" -#: .\AKModel\models.py:49 +#: AKModel/models.py:51 msgid "Contact email address" msgstr "E-Mail Kontaktadresse" -#: .\AKModel\models.py:51 +#: AKModel/models.py:53 msgid "" "An email address that is displayed on every page and can be used for all " "kinds of questions" @@ -267,75 +291,75 @@ msgstr "" "Eine Mailadresse die auf jeder Seite angezeigt wird und für alle Arten von " "Fragen genutzt werden kann" -#: .\AKModel\models.py:55 +#: AKModel/models.py:57 msgid "Events" msgstr "Events" -#: .\AKModel\models.py:115 +#: AKModel/models.py:121 msgid "Nickname" msgstr "Spitzname" -#: .\AKModel\models.py:115 +#: AKModel/models.py:121 msgid "Name to identify an AK owner by" msgstr "Name, durch den eine AK-Leitung identifiziert wird" -#: .\AKModel\models.py:116 +#: AKModel/models.py:122 msgid "Slug" msgstr "Slug" -#: .\AKModel\models.py:116 +#: AKModel/models.py:122 msgid "Slug for URL generation" msgstr "Slug für URL-Generierung" -#: .\AKModel\models.py:117 +#: AKModel/models.py:123 msgid "Institution" msgstr "Instutution" -#: .\AKModel\models.py:117 +#: AKModel/models.py:123 msgid "Uni etc." msgstr "Universität o.ä." -#: .\AKModel\models.py:118 .\AKModel\models.py:251 +#: AKModel/models.py:124 AKModel/models.py:257 msgid "Web Link" msgstr "Internet Link" -#: .\AKModel\models.py:118 +#: AKModel/models.py:124 msgid "Link to Homepage" msgstr "Link zu Homepage oder Webseite" -#: .\AKModel\models.py:124 .\AKModel\models.py:507 +#: AKModel/models.py:130 AKModel/models.py:505 msgid "AK Owner" msgstr "AK-Leitung" -#: .\AKModel\models.py:125 +#: AKModel/models.py:131 msgid "AK Owners" msgstr "AK-Leitungen" -#: .\AKModel\models.py:167 +#: AKModel/models.py:173 msgid "Name of the AK Category" msgstr "Name der AK-Kategorie" -#: .\AKModel\models.py:168 .\AKModel\models.py:192 +#: AKModel/models.py:174 AKModel/models.py:198 msgid "Color" msgstr "Farbe" -#: .\AKModel\models.py:168 .\AKModel\models.py:192 +#: AKModel/models.py:174 AKModel/models.py:198 msgid "Color for displaying" msgstr "Farbe für die Anzeige" -#: .\AKModel\models.py:169 .\AKModel\models.py:245 +#: AKModel/models.py:175 AKModel/models.py:251 msgid "Description" msgstr "Beschreibung" -#: .\AKModel\models.py:170 +#: AKModel/models.py:176 msgid "Short description of this AK Category" msgstr "Beschreibung der AK-Kategorie" -#: .\AKModel\models.py:171 +#: AKModel/models.py:177 msgid "Present by default" msgstr "Defaultmäßig präsentieren" -#: .\AKModel\models.py:173 +#: AKModel/models.py:179 msgid "" "Present AKs of this category by default if AK owner did not specify whether " "this AK should be presented?" @@ -343,152 +367,152 @@ msgstr "" "AKs dieser Kategorie standardmäßig vorstellen, wenn die Leitungen das für " "ihren AK nicht explizit spezifiziert haben?" -#: .\AKModel\models.py:180 +#: AKModel/models.py:186 msgid "AK Categories" msgstr "AK-Kategorien" -#: .\AKModel\models.py:191 +#: AKModel/models.py:197 msgid "Name of the AK Track" msgstr "Name des AK-Tracks" -#: .\AKModel\models.py:198 +#: AKModel/models.py:204 msgid "AK Track" msgstr "AK-Track" -#: .\AKModel\models.py:199 +#: AKModel/models.py:205 msgid "AK Tracks" msgstr "AK-Tracks" -#: .\AKModel\models.py:210 +#: AKModel/models.py:216 msgid "Name of the AK Tag" msgstr "Name das AK-Tags" -#: .\AKModel\models.py:213 +#: AKModel/models.py:219 msgid "AK Tag" msgstr "AK-Tag" -#: .\AKModel\models.py:214 +#: AKModel/models.py:220 msgid "AK Tags" msgstr "AK-Tags" -#: .\AKModel\models.py:224 +#: AKModel/models.py:230 msgid "Name of the Requirement" msgstr "Name der Anforderung" -#: .\AKModel\models.py:230 .\AKModel\models.py:511 +#: AKModel/models.py:236 AKModel/models.py:509 msgid "AK Requirement" msgstr "AK-Anforderung" -#: .\AKModel\models.py:231 +#: AKModel/models.py:237 msgid "AK Requirements" msgstr "AK-Anforderungen" -#: .\AKModel\models.py:242 +#: AKModel/models.py:248 msgid "Name of the AK" msgstr "Name des AKs" -#: .\AKModel\models.py:243 +#: AKModel/models.py:249 msgid "Short Name" msgstr "Kurzer Name" -#: .\AKModel\models.py:244 +#: AKModel/models.py:250 msgid "Name displayed in the schedule" msgstr "Name zur Anzeige im AK-Plan" -#: .\AKModel\models.py:245 +#: AKModel/models.py:251 msgid "Description of the AK" msgstr "Beschreibung des AKs" -#: .\AKModel\models.py:247 +#: AKModel/models.py:253 msgid "Owners" msgstr "Leitungen" -#: .\AKModel\models.py:248 +#: AKModel/models.py:254 msgid "Those organizing the AK" msgstr "Menschen, die den AK organisieren und halten" -#: .\AKModel\models.py:251 +#: AKModel/models.py:257 msgid "Link to wiki page" msgstr "Link zur Wiki Seite" -#: .\AKModel\models.py:252 +#: AKModel/models.py:258 msgid "Protocol Link" msgstr "Protokolllink" -#: .\AKModel\models.py:252 +#: AKModel/models.py:258 msgid "Link to protocol" msgstr "Link zum Protokoll" -#: .\AKModel\models.py:254 +#: AKModel/models.py:260 msgid "Category" msgstr "Kategorie" -#: .\AKModel\models.py:255 +#: AKModel/models.py:261 msgid "Category of the AK" msgstr "Kategorie des AKs" -#: .\AKModel\models.py:256 +#: AKModel/models.py:262 msgid "Tags" msgstr "Tags" -#: .\AKModel\models.py:256 +#: AKModel/models.py:262 msgid "Tags provided by owners" msgstr "Tags, die durch die AK-Leitung vergeben wurden" -#: .\AKModel\models.py:257 +#: AKModel/models.py:263 msgid "Track" msgstr "Track" -#: .\AKModel\models.py:258 +#: AKModel/models.py:264 msgid "Track the AK belongs to" msgstr "Track zu dem der AK gehört" -#: .\AKModel\models.py:260 +#: AKModel/models.py:266 msgid "Resolution Intention" msgstr "Resolutionsabsicht" -#: .\AKModel\models.py:261 +#: AKModel/models.py:267 msgid "Intends to submit a resolution" msgstr "Beabsichtigt eine Resolution einzureichen" -#: .\AKModel\models.py:262 +#: AKModel/models.py:268 msgid "Present this AK" msgstr "AK präsentieren" -#: .\AKModel\models.py:263 +#: AKModel/models.py:269 msgid "Present results of this AK" msgstr "Die Ergebnisse dieses AKs vorstellen" -#: .\AKModel\models.py:265 .\AKModel\templates\admin\AKModel\status.html:97 +#: AKModel/models.py:271 AKModel/templates/admin/AKModel/status.html:97 msgid "Requirements" msgstr "Anforderungen" -#: .\AKModel\models.py:266 +#: AKModel/models.py:272 msgid "AK's Requirements" msgstr "Anforderungen des AKs" -#: .\AKModel\models.py:268 +#: AKModel/models.py:274 msgid "Conflicting AKs" msgstr "AK-Konflikte" -#: .\AKModel\models.py:269 +#: AKModel/models.py:275 msgid "AKs that conflict and thus must not take place at the same time" msgstr "" "AKs, die Konflikte haben und deshalb nicht gleichzeitig stattfinden dürfen" -#: .\AKModel\models.py:270 +#: AKModel/models.py:276 msgid "Prerequisite AKs" msgstr "Vorausgesetzte AKs" -#: .\AKModel\models.py:271 +#: AKModel/models.py:277 msgid "AKs that should precede this AK in the schedule" msgstr "AKs die im AK-Plan vor diesem AK stattfinden müssen" -#: .\AKModel\models.py:273 +#: AKModel/models.py:279 msgid "Organizational Notes" msgstr "Notizen zur Organisation" -#: .\AKModel\models.py:274 +#: AKModel/models.py:280 #, fuzzy #| msgid "" #| "Notes to organizers. These are public. For private notes, please send an " @@ -502,341 +526,341 @@ msgstr "" "Anmerkungen bitte den Button für Direktnachrichten verwenden (nach dem " "Anlegen/Bearbeiten)." -#: .\AKModel\models.py:276 +#: AKModel/models.py:282 msgid "Interest" msgstr "Interesse" -#: .\AKModel\models.py:276 +#: AKModel/models.py:282 msgid "Expected number of people" msgstr "Erwartete Personenzahl" -#: .\AKModel\models.py:277 +#: AKModel/models.py:283 msgid "Interest Counter" msgstr "Interessenszähler" -#: .\AKModel\models.py:278 +#: AKModel/models.py:284 msgid "People who have indicated interest online" msgstr "Anzahl Personen, die online Interesse bekundet haben" -#: .\AKModel\models.py:287 .\AKModel\models.py:502 -#: .\AKModel\templates\admin\AKModel\status.html:49 -#: .\AKModel\templates\admin\AKModel\status.html:56 .\AKModel\views.py:359 +#: AKModel/models.py:293 AKModel/models.py:500 +#: AKModel/templates/admin/AKModel/status.html:49 +#: AKModel/templates/admin/AKModel/status.html:56 AKModel/views.py:359 msgid "AKs" msgstr "AKs" -#: .\AKModel\models.py:346 +#: AKModel/models.py:344 msgid "Name or number of the room" msgstr "Name oder Nummer des Raums" -#: .\AKModel\models.py:347 +#: AKModel/models.py:345 msgid "Location" msgstr "Ort" -#: .\AKModel\models.py:348 +#: AKModel/models.py:346 msgid "Name or number of the location" msgstr "Name oder Nummer des Ortes" -#: .\AKModel\models.py:349 +#: AKModel/models.py:347 msgid "Capacity" msgstr "Kapazität" -#: .\AKModel\models.py:350 +#: AKModel/models.py:348 msgid "Maximum number of people (-1 for unlimited)." msgstr "Maximale Personenzahl (-1 wenn unbeschränkt)." -#: .\AKModel\models.py:351 +#: AKModel/models.py:349 msgid "Properties" msgstr "Eigenschaften" -#: .\AKModel\models.py:352 +#: AKModel/models.py:350 msgid "AK requirements fulfilled by the room" msgstr "AK-Anforderungen, die dieser Raum erfüllt" -#: .\AKModel\models.py:359 .\AKModel\templates\admin\AKModel\status.html:33 +#: AKModel/models.py:357 AKModel/templates/admin/AKModel/status.html:33 msgid "Rooms" msgstr "Räume" -#: .\AKModel\models.py:376 +#: AKModel/models.py:374 msgid "AK being mapped" msgstr "AK, der zugeordnet wird" -#: .\AKModel\models.py:378 +#: AKModel/models.py:376 msgid "Room the AK will take place in" msgstr "Raum in dem der AK stattfindet" -#: .\AKModel\models.py:379 +#: AKModel/models.py:377 msgid "Slot Begin" msgstr "Beginn des Slots" -#: .\AKModel\models.py:379 +#: AKModel/models.py:377 msgid "Time and date the slot begins" msgstr "Zeit und Datum zu der der AK beginnt" -#: .\AKModel\models.py:381 +#: AKModel/models.py:379 msgid "Duration" msgstr "Dauer" -#: .\AKModel\models.py:382 +#: AKModel/models.py:380 msgid "Length in hours" msgstr "Länge in Stunden" -#: .\AKModel\models.py:384 +#: AKModel/models.py:382 msgid "Scheduling fixed" msgstr "Planung fix" -#: .\AKModel\models.py:385 +#: AKModel/models.py:383 msgid "Length and time of this AK should not be changed" msgstr "Dauer und Zeit dieses AKs sollten nicht verändert werden" -#: .\AKModel\models.py:390 +#: AKModel/models.py:388 msgid "Last update" msgstr "Letzte Aktualisierung" -#: .\AKModel\models.py:393 +#: AKModel/models.py:391 msgid "AK Slot" msgstr "AK-Slot" -#: .\AKModel\models.py:394 .\AKModel\models.py:504 +#: AKModel/models.py:392 AKModel/models.py:502 msgid "AK Slots" msgstr "AK-Slot" -#: .\AKModel\models.py:416 .\AKModel\models.py:425 +#: AKModel/models.py:414 AKModel/models.py:423 msgid "Not scheduled yet" msgstr "Noch nicht geplant" -#: .\AKModel\models.py:454 +#: AKModel/models.py:452 msgid "AK this message belongs to" msgstr "AK zu dem die Nachricht gehört" -#: .\AKModel\models.py:455 +#: AKModel/models.py:453 msgid "Message text" msgstr "Nachrichtentext" -#: .\AKModel\models.py:456 +#: AKModel/models.py:454 msgid "Message to the organizers. This is not publicly visible." msgstr "" "Nachricht an die Organisator*innen. Diese ist nicht öffentlich sichtbar." -#: .\AKModel\models.py:462 +#: AKModel/models.py:460 msgid "AK Orga Message" msgstr "AK-Organachricht" -#: .\AKModel\models.py:463 +#: AKModel/models.py:461 msgid "AK Orga Messages" msgstr "AK-Organachrichten" -#: .\AKModel\models.py:472 +#: AKModel/models.py:470 msgid "Constraint Violation" msgstr "Constraintverletzung" -#: .\AKModel\models.py:473 .\AKModel\templates\admin\AKModel\status.html:79 +#: AKModel/models.py:471 AKModel/templates/admin/AKModel/status.html:79 msgid "Constraint Violations" msgstr "Constraintverletzungen" -#: .\AKModel\models.py:477 +#: AKModel/models.py:475 msgid "Owner has two parallel slots" msgstr "Leitung hat zwei Slots parallel" -#: .\AKModel\models.py:478 +#: AKModel/models.py:476 msgid "AK Slot was scheduled outside the AK's availabilities" msgstr "AK Slot wurde außerhalb der Verfügbarkeit des AKs platziert" -#: .\AKModel\models.py:479 +#: AKModel/models.py:477 msgid "Room has two AK slots scheduled at the same time" msgstr "Raum hat zwei AK Slots gleichzeitig" -#: .\AKModel\models.py:480 +#: AKModel/models.py:478 msgid "Room does not satisfy the requirement of the scheduled AK" msgstr "Room erfüllt die Anforderungen des platzierten AKs nicht" -#: .\AKModel\models.py:481 +#: AKModel/models.py:479 msgid "AK Slot is scheduled at the same time as an AK listed as a conflict" msgstr "" "AK Slot wurde wurde zur gleichen Zeit wie ein Konflikt des AKs platziert" -#: .\AKModel\models.py:482 +#: AKModel/models.py:480 msgid "AK Slot is scheduled before an AK listed as a prerequisite" msgstr "AK Slot wurde vor einem als Voraussetzung gelisteten AK platziert" -#: .\AKModel\models.py:484 +#: AKModel/models.py:482 msgid "" "AK Slot for AK with intention to submit a resolution is scheduled after " "resolution deadline" msgstr "" "AK Slot eines AKs mit Resoabsicht wurde nach der Resodeadline platziert" -#: .\AKModel\models.py:485 +#: AKModel/models.py:483 msgid "AK Slot in a category is outside that categories availabilities" msgstr "AK Slot wurde außerhalb der Verfügbarkeiten seiner Kategorie" -#: .\AKModel\models.py:486 +#: AKModel/models.py:484 msgid "Two AK Slots for the same AK scheduled at the same time" msgstr "Zwei AK Slots eines AKs wurden zur selben Zeit platziert" -#: .\AKModel\models.py:487 +#: AKModel/models.py:485 msgid "Room does not have enough space for interest in scheduled AK Slot" msgstr "Room hat nicht genug Platz für das Interesse am geplanten AK-Slot" -#: .\AKModel\models.py:488 +#: AKModel/models.py:486 msgid "AK Slot is scheduled outside the event's availabilities" msgstr "AK Slot wurde außerhalb der Verfügbarkeit des Events platziert" -#: .\AKModel\models.py:491 +#: AKModel/models.py:489 msgid "Warning" msgstr "Warnung" -#: .\AKModel\models.py:492 +#: AKModel/models.py:490 msgid "Violation" msgstr "Verletzung" -#: .\AKModel\models.py:494 +#: AKModel/models.py:492 msgid "Type" msgstr "Art" -#: .\AKModel\models.py:495 +#: AKModel/models.py:493 msgid "Type of violation, i.e. what kind of constraint was violated" msgstr "Art der Verletzung, gibt an welche Art Constraint verletzt wurde" -#: .\AKModel\models.py:496 +#: AKModel/models.py:494 msgid "Level" msgstr "Level" -#: .\AKModel\models.py:497 +#: AKModel/models.py:495 msgid "Severity level of the violation" msgstr "Schweregrad der Verletzung" -#: .\AKModel\models.py:503 +#: AKModel/models.py:501 msgid "AK(s) belonging to this constraint" msgstr "AK(s), die zu diesem Constraint gehören" -#: .\AKModel\models.py:505 +#: AKModel/models.py:503 msgid "AK Slot(s) belonging to this constraint" msgstr "AK Slot(s), die zu diesem Constraint gehören" -#: .\AKModel\models.py:507 +#: AKModel/models.py:505 msgid "AK Owner belonging to this constraint" msgstr "AK Leitung(en), die zu diesem Constraint gehören" -#: .\AKModel\models.py:509 +#: AKModel/models.py:507 msgid "Room belonging to this constraint" msgstr "Raum, der zu diesem Constraint gehört" -#: .\AKModel\models.py:512 +#: AKModel/models.py:510 msgid "AK Requirement belonging to this constraint" msgstr "AK Anforderung, die zu diesem Constraint gehört" -#: .\AKModel\models.py:514 +#: AKModel/models.py:512 msgid "AK Category belonging to this constraint" msgstr "AK Kategorie, di zu diesem Constraint gehört" -#: .\AKModel\models.py:516 +#: AKModel/models.py:514 msgid "Comment" msgstr "Kommentar" -#: .\AKModel\models.py:516 +#: AKModel/models.py:514 msgid "Comment or further details for this violation" msgstr "Kommentar oder weitere Details zu dieser Vereletzung" -#: .\AKModel\models.py:519 +#: AKModel/models.py:517 msgid "Timestamp" msgstr "Timestamp" -#: .\AKModel\models.py:519 +#: AKModel/models.py:517 msgid "Time of creation" msgstr "Zeitpunkt der ERstellung" -#: .\AKModel\models.py:520 +#: AKModel/models.py:518 msgid "Manually Resolved" msgstr "Manuell behoben" -#: .\AKModel\models.py:521 +#: AKModel/models.py:519 msgid "Mark this violation manually as resolved" msgstr "Markiere diese Verletzung manuell als behoben" -#: .\AKModel\models.py:548 -#: .\AKModel\templates\admin\AKModel\requirements_overview.html:27 +#: AKModel/models.py:546 +#: AKModel/templates/admin/AKModel/requirements_overview.html:27 msgid "Details" msgstr "Details" -#: .\AKModel\site.py:10 +#: AKModel/site.py:10 msgid "Administration" msgstr "Verwaltung" -#: .\AKModel\templates\AKModel\user.html:31 +#: AKModel/templates/AKModel/user.html:31 msgid "Hello" msgstr "Hallo" -#: .\AKModel\templates\AKModel\user.html:34 +#: AKModel/templates/AKModel/user.html:34 msgid "Go to backend" msgstr "Zum Backend" -#: .\AKModel\templates\AKModel\user.html:37 +#: AKModel/templates/AKModel/user.html:37 msgid "Please wait for an administrator to confirm your account" msgstr "" "Bitte warte darauf, dass ein*e Administrator*in deinen Account bestätigt" -#: .\AKModel\templates\AKModel\user.html:40 +#: AKModel/templates/AKModel/user.html:40 msgid "Logout" msgstr "Ausloggen" -#: .\AKModel\templates\admin\AKModel\action_intermediate.html:23 +#: AKModel/templates/admin/AKModel/action_intermediate.html:23 msgid "Confirm" msgstr "Bestätigen" -#: .\AKModel\templates\admin\AKModel\action_intermediate.html:27 -#: .\AKModel\templates\admin\AKModel\event_wizard\import.html:24 -#: .\AKModel\templates\admin\AKModel\event_wizard\settings.html:29 -#: .\AKModel\templates\admin\AKModel\event_wizard\start.html:23 +#: AKModel/templates/admin/AKModel/action_intermediate.html:27 +#: AKModel/templates/admin/AKModel/event_wizard/import.html:24 +#: AKModel/templates/admin/AKModel/event_wizard/settings.html:29 +#: AKModel/templates/admin/AKModel/event_wizard/start.html:23 msgid "Cancel" msgstr "Abbrechen" -#: .\AKModel\templates\admin\AKModel\event_wizard\activate.html:9 -#: .\AKModel\templates\admin\AKModel\event_wizard\created_prepare_import.html:9 -#: .\AKModel\templates\admin\AKModel\event_wizard\finish.html:9 -#: .\AKModel\templates\admin\AKModel\event_wizard\import.html:9 -#: .\AKModel\templates\admin\AKModel\event_wizard\settings.html:9 -#: .\AKModel\templates\admin\AKModel\event_wizard\start.html:8 -#: .\AKModel\templates\admin\AKModel\event_wizard\wizard_steps.html:3 +#: AKModel/templates/admin/AKModel/event_wizard/activate.html:9 +#: AKModel/templates/admin/AKModel/event_wizard/created_prepare_import.html:9 +#: AKModel/templates/admin/AKModel/event_wizard/finish.html:9 +#: AKModel/templates/admin/AKModel/event_wizard/import.html:9 +#: AKModel/templates/admin/AKModel/event_wizard/settings.html:9 +#: AKModel/templates/admin/AKModel/event_wizard/start.html:8 +#: AKModel/templates/admin/AKModel/event_wizard/wizard_steps.html:3 msgid "New event wizard" msgstr "Assistent zum Anlegen eines neuen Events" -#: .\AKModel\templates\admin\AKModel\event_wizard\activate.html:18 +#: AKModel/templates/admin/AKModel/event_wizard/activate.html:18 msgid "Successfully imported.<br><br>Do you want to activate your event now?" msgstr "Erfolgreich importiert.<br><br>Soll das Event jetzt aktiviert werden?" -#: .\AKModel\templates\admin\AKModel\event_wizard\activate.html:27 -#: .\AKModel\views.py:247 +#: AKModel/templates/admin/AKModel/event_wizard/activate.html:27 +#: AKModel/views.py:247 msgid "Finish" msgstr "Abschluss" -#: .\AKModel\templates\admin\AKModel\event_wizard\created_prepare_import.html:16 +#: AKModel/templates/admin/AKModel/event_wizard/created_prepare_import.html:16 msgid "New event:" msgstr "Neues Event:" -#: .\AKModel\templates\admin\AKModel\event_wizard\created_prepare_import.html:30 +#: AKModel/templates/admin/AKModel/event_wizard/created_prepare_import.html:30 msgid "Your event was created and can now be further configured." msgstr "Das Event wurde angelegt und kann nun weiter konfiguriert werden." -#: .\AKModel\templates\admin\AKModel\event_wizard\created_prepare_import.html:39 +#: AKModel/templates/admin/AKModel/event_wizard/created_prepare_import.html:39 msgid "Skip Import" msgstr "Import überspringen" -#: .\AKModel\templates\admin\AKModel\event_wizard\created_prepare_import.html:43 -#: .\AKModel\templates\admin\AKModel\event_wizard\import.html:20 -#: .\AKModel\templates\admin\AKModel\event_wizard\settings.html:22 -#: .\AKModel\templates\admin\AKModel\event_wizard\start.html:19 +#: AKModel/templates/admin/AKModel/event_wizard/created_prepare_import.html:43 +#: AKModel/templates/admin/AKModel/event_wizard/import.html:20 +#: AKModel/templates/admin/AKModel/event_wizard/settings.html:22 +#: AKModel/templates/admin/AKModel/event_wizard/start.html:19 msgid "Continue" msgstr "Fortfahren" -#: .\AKModel\templates\admin\AKModel\event_wizard\finish.html:18 +#: AKModel/templates/admin/AKModel/event_wizard/finish.html:18 msgid "Congratulations. Everything is set up!" msgstr "Herzlichen Glückwunsch. Alles ist eingerichtet!" -#: .\AKModel\templates\admin\AKModel\event_wizard\settings.html:26 +#: AKModel/templates/admin/AKModel/event_wizard/settings.html:26 msgid "Back" msgstr "Zurück" -#: .\AKModel\templates\admin\AKModel\event_wizard\start.html:13 +#: AKModel/templates/admin/AKModel/event_wizard/start.html:13 msgid "" "Add a new event. Please start by filling these basic properties. You can " "specify more settings later." @@ -844,11 +868,11 @@ msgstr "" "Neues Event anlegen. Bitte zunächst diese Grundeinstellungen ausfüllen, " "weitere Einstellungen können später gesetzt werden." -#: .\AKModel\templates\admin\AKModel\event_wizard\wizard_steps.html:15 +#: AKModel/templates/admin/AKModel/event_wizard/wizard_steps.html:15 msgid "Step" msgstr "Schritt" -#: .\AKModel\templates\admin\AKModel\message_delete.html:8 +#: AKModel/templates/admin/AKModel/message_delete.html:8 #, python-format msgid "" "Are you sure you want to delete all orga messages for %(event)s? This will " @@ -857,117 +881,117 @@ msgstr "" "Sollen wirklich alle Organachrichten für %(event)s gelöscht werden? Dadurch " "werden %(message_count)s Nachricht(en) dauerhaft gelöscht:" -#: .\AKModel\templates\admin\AKModel\requirements_overview.html:12 +#: AKModel/templates/admin/AKModel/requirements_overview.html:12 msgid "Requirements Overview" msgstr "Übersicht Anforderungen" -#: .\AKModel\templates\admin\AKModel\requirements_overview.html:31 +#: AKModel/templates/admin/AKModel/requirements_overview.html:31 msgid "Edit" msgstr "Bearbeiten" -#: .\AKModel\templates\admin\AKModel\requirements_overview.html:38 +#: AKModel/templates/admin/AKModel/requirements_overview.html:38 msgid "No AKs with this requirement" msgstr "Kein AK mit dieser Anforderung" -#: .\AKModel\templates\admin\AKModel\requirements_overview.html:45 -#: .\AKModel\templates\admin\AKModel\status.html:113 +#: AKModel/templates/admin/AKModel/requirements_overview.html:45 +#: AKModel/templates/admin/AKModel/status.html:113 msgid "Add Requirement" msgstr "Anforderung hinzufügen" -#: .\AKModel\templates\admin\AKModel\status.html:16 +#: AKModel/templates/admin/AKModel/status.html:16 msgid "Categories" msgstr "Kategorien" -#: .\AKModel\templates\admin\AKModel\status.html:18 +#: AKModel/templates/admin/AKModel/status.html:18 msgid "No categories yet" msgstr "Bisher keine Kategorien" -#: .\AKModel\templates\admin\AKModel\status.html:31 +#: AKModel/templates/admin/AKModel/status.html:31 msgid "Add category" msgstr "Kategorie hinzufügen" -#: .\AKModel\templates\admin\AKModel\status.html:35 +#: AKModel/templates/admin/AKModel/status.html:35 msgid "No rooms yet" msgstr "Bisher keine Räume" -#: .\AKModel\templates\admin\AKModel\status.html:47 +#: AKModel/templates/admin/AKModel/status.html:47 msgid "Add Room" msgstr "Raum hinzufügen" -#: .\AKModel\templates\admin\AKModel\status.html:51 +#: AKModel/templates/admin/AKModel/status.html:51 msgid "No AKs yet" msgstr "Bisher keine AKs" -#: .\AKModel\templates\admin\AKModel\status.html:59 +#: AKModel/templates/admin/AKModel/status.html:59 msgid "Slots" msgstr "Slots" -#: .\AKModel\templates\admin\AKModel\status.html:62 +#: AKModel/templates/admin/AKModel/status.html:62 msgid "Unscheduled Slots" msgstr "Ungeplante Slots" -#: .\AKModel\templates\admin\AKModel\status.html:76 -#: .\AKModel\templates\admin\ak_index.html:16 +#: AKModel/templates/admin/AKModel/status.html:76 +#: AKModel/templates/admin/ak_index.html:16 msgid "Scheduling" msgstr "Scheduling" -#: .\AKModel\templates\admin\AKModel\status.html:81 +#: AKModel/templates/admin/AKModel/status.html:81 msgid "AKs requiring special attention" -msgstr "" +msgstr "AKs, die besondere Aufmerksamkeit benötigen" -#: .\AKModel\templates\admin\AKModel\status.html:83 +#: AKModel/templates/admin/AKModel/status.html:83 msgid "Enter Interest" msgstr "Interesse erfassen" -#: .\AKModel\templates\admin\AKModel\status.html:86 +#: AKModel/templates/admin/AKModel/status.html:86 msgid "Manage ak tracks" msgstr "AK-Tracks verwalten" -#: .\AKModel\templates\admin\AKModel\status.html:88 +#: AKModel/templates/admin/AKModel/status.html:88 msgid "Export AKs as CSV" msgstr "AKs als CSV exportieren" -#: .\AKModel\templates\admin\AKModel\status.html:90 +#: AKModel/templates/admin/AKModel/status.html:90 msgid "Export AKs for Wiki" msgstr "AKs im Wiki-Format exportieren" -#: .\AKModel\templates\admin\AKModel\status.html:92 +#: AKModel/templates/admin/AKModel/status.html:92 msgid "Export AK Slides" msgstr "AK-Folien exportieren" -#: .\AKModel\templates\admin\AKModel\status.html:94 +#: AKModel/templates/admin/AKModel/status.html:94 msgid "Export AK Slides (Presentation AKs only)" msgstr "AK-Folien exportieren (Nur zu präsentierende AKs)" -#: .\AKModel\templates\admin\AKModel\status.html:99 +#: AKModel/templates/admin/AKModel/status.html:99 msgid "No requirements yet" msgstr "Bisher keine Anforderungen" -#: .\AKModel\templates\admin\AKModel\status.html:112 +#: AKModel/templates/admin/AKModel/status.html:112 msgid "Show AKs for requirements" msgstr "Zu Anforderungen gehörige AKs anzeigen" -#: .\AKModel\templates\admin\AKModel\status.html:116 +#: AKModel/templates/admin/AKModel/status.html:116 msgid "Messages" msgstr "Nachrichten" -#: .\AKModel\templates\admin\AKModel\status.html:118 +#: AKModel/templates/admin/AKModel/status.html:118 msgid "Delete all messages" msgstr "Alle Nachrichten löschen" -#: .\AKModel\templates\admin\ak_index.html:7 +#: AKModel/templates/admin/ak_index.html:7 msgid "Active Events" msgstr "Aktive Events" -#: .\AKModel\templates\admin\login.html:23 +#: AKModel/templates/admin/login.html:8 msgid "Please correct the error below." msgstr "Bitte den untenstehenden Fehler korrigieren." -#: .\AKModel\templates\admin\login.html:23 +#: AKModel/templates/admin/login.html:8 msgid "Please correct the errors below." msgstr "Bitte die unten stehenden Fehler korrigieren." -#: .\AKModel\templates\admin\login.html:39 +#: AKModel/templates/admin/login.html:24 #, python-format msgid "" "You are authenticated as %(username)s, but are not authorized to access this " @@ -976,107 +1000,90 @@ msgstr "" "Du bist als %(username)s eingeloggt, aber bist nicht authorisiert, auf diese " "Seite zuzugreifen. Möchtest du dich mit einem anderem Account einloggen?" -#: .\AKModel\templates\admin\login.html:59 +#: AKModel/templates/admin/login.html:44 msgid "Forgotten your password or username?" msgstr "Passwort oder Username vergessen" -#: .\AKModel\templates\admin\login.html:63 +#: AKModel/templates/admin/login.html:48 msgid "Log in" msgstr "Login" -#: .\AKModel\templates\admin\login.html:66 +#: AKModel/templates/admin/login.html:51 msgid "Register" msgstr "Registrieren" -#: .\AKModel\views.py:144 +#: AKModel/views.py:144 msgid "Event Status" msgstr "Eventstatus" -#: .\AKModel\views.py:157 +#: AKModel/views.py:157 msgid "Requirements for Event" msgstr "Anforderungen für das Event" -#: .\AKModel\views.py:171 +#: AKModel/views.py:171 msgid "AK CSV Export" msgstr "AK-CSV-Export" -#: .\AKModel\views.py:185 +#: AKModel/views.py:185 msgid "AK Wiki Export" msgstr "AK-Wiki-Export" -#: .\AKModel\views.py:193 .\AKModel\views.py:345 +#: AKModel/views.py:193 AKModel/views.py:345 msgid "Wishes" msgstr "Wünsche" -#: .\AKModel\views.py:215 +#: AKModel/views.py:215 msgid "Delete AK Orga Messages" msgstr "AK-Organachrichten löschen" -#: .\AKModel\views.py:233 +#: AKModel/views.py:233 msgid "AK Orga Messages successfully deleted" msgstr "AK-Organachrichten erfolgreich gelöscht" -#: .\AKModel\views.py:243 +#: AKModel/views.py:243 msgid "Settings" msgstr "Einstellungen" -#: .\AKModel\views.py:244 +#: AKModel/views.py:244 msgid "Event created, Prepare Import" msgstr "Event angelegt, Import vorbereiten" -#: .\AKModel\views.py:245 +#: AKModel/views.py:245 msgid "Import categories & requirements" msgstr "Kategorien & Anforderungen kopieren" -#: .\AKModel\views.py:246 +#: AKModel/views.py:246 #, fuzzy #| msgid "Active State" msgid "Activate?" msgstr "Aktivieren?" -#: .\AKModel\views.py:305 +#: AKModel/views.py:305 #, python-format msgid "Copied '%(obj)s'" msgstr "'%(obj)s' kopiert" -#: .\AKModel\views.py:308 +#: AKModel/views.py:308 #, python-format msgid "Could not copy '%(obj)s' (%(error)s)" msgstr "'%(obj)s' konnte nicht kopiert werden (%(error)s)" -#: .\AKModel\views.py:340 +#: AKModel/views.py:340 msgid "Symbols" msgstr "Symbole" -#: .\AKModel\views.py:341 +#: AKModel/views.py:341 msgid "Who?" msgstr "Wer?" -#: .\AKModel\views.py:342 +#: AKModel/views.py:342 msgid "Duration(s)" msgstr "Dauer(n)" -#: .\AKModel\views.py:343 +#: AKModel/views.py:343 msgid "Reso intention?" msgstr "Resolutionsabsicht?" -#: .\AKModel\views.py:344 +#: AKModel/views.py:344 msgid "Category (for Wishes)" msgstr "Kategorie (für Wünsche)" - -#~ msgid "Delete Orga-Messages" -#~ msgstr "Organachrichten löschen" - -#~ msgid "Delete" -#~ msgstr "Löschen" - -#~ msgid "AK Slot is scheduled in a room with less space than interest" -#~ msgstr "" -#~ "AK Slot wurde in einem Raum mit weniger Plätzen als am AK Interessierten " -#~ "platziert" - -#~ msgid "messages will be permanently deleted:" -#~ msgstr "Nachrichten werden dauerhaft gelöscht:" - -#~ msgid "Notes to organizers" -#~ msgstr "Notizen an die Organisator*innen" diff --git a/AKModel/migrations/0053_plan_published_at.py b/AKModel/migrations/0053_plan_published_at.py new file mode 100644 index 0000000000000000000000000000000000000000..80e8eb8e463b6a1c63797b9326fb117ef166c836 --- /dev/null +++ b/AKModel/migrations/0053_plan_published_at.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.16 on 2022-10-15 10:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('AKModel', '0052_history_upgrade'), + ] + + operations = [ + migrations.AddField( + model_name='event', + name='plan_published_at', + field=models.DateTimeField(blank=True, help_text='Timestamp at which the plan was published', null=True, verbose_name='Plan published at'), + ), + ] diff --git a/AKModel/models.py b/AKModel/models.py index ef86329edd234ac32bd909cc81402df1b69ef901..dee3b93e38e4de618d094ff766855ffeda5dc7eb 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -40,6 +40,8 @@ class Event(models.Model): active = models.BooleanField(verbose_name=_('Active State'), help_text=_('Marks currently active events')) plan_hidden = models.BooleanField(verbose_name=_('Plan Hidden'), help_text=_('Hides plan for non-staff users'), default=True) + plan_published_at = models.DateTimeField(verbose_name=_('Plan published at'), blank=True, null=True, + help_text=_('Timestamp at which the plan was published')) base_url = models.URLField(verbose_name=_("Base URL"), help_text=_("Prefix for wiki link construction"), blank=True) wiki_export_template_name = models.CharField(verbose_name=_("Wiki Export Template Name"), blank=True, max_length=50) diff --git a/AKPlan/templatetags/tags_AKPlan.py b/AKPlan/templatetags/tags_AKPlan.py index c4d5b32bf0d704703680eb3b74f96fdcad403e4a..8b30bfabd34b501a858351d6b1e384b4fe39e5bb 100644 --- a/AKPlan/templatetags/tags_AKPlan.py +++ b/AKPlan/templatetags/tags_AKPlan.py @@ -11,6 +11,11 @@ register = template.Library() @register.filter def highlight_change_colors(akslot): + # Do not highlight in preview mode or when changes occurred before the plan was published + if akslot.event.plan_hidden or (akslot.event.plan_published_at is not None + and akslot.event.plan_published_at > akslot.updated): + return akslot.ak.category.color + seconds_since_update = akslot.seconds_since_last_update # Last change long ago? Use default color