diff --git a/AKModel/fixtures/model.json b/AKModel/fixtures/model.json index b5bdcf01084502a30fce82ccb79d90cc83f46ca8..4f55ea9579d0c0df2f62e80a548bd05e0144675c 100644 --- a/AKModel/fixtures/model.json +++ b/AKModel/fixtures/model.json @@ -377,6 +377,7 @@ "notes": "", "interest": -1, "interest_counter": 0, + "include_in_export": false, "event": 2, "owners": [ 1 diff --git a/AKModel/locale/de_DE/LC_MESSAGES/django.po b/AKModel/locale/de_DE/LC_MESSAGES/django.po index ba25e4c43f909e01b61eed2ebd9899692b8f395a..fbc60dcbee85d4634609a9eb173516e2364c01ed 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-11-30 01:57+0100\n" +"POT-Creation-Date: 2022-12-27 00:33+0100\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" @@ -25,11 +25,11 @@ msgstr "Status" msgid "Toggle plan visibility" msgstr "Plansichtbarkeit ändern" -#: AKModel/admin.py:73 AKModel/admin.py:84 AKModel/views.py:485 +#: AKModel/admin.py:73 AKModel/admin.py:84 AKModel/views.py:491 msgid "Publish plan" msgstr "Plan veröffentlichen" -#: AKModel/admin.py:76 AKModel/admin.py:89 AKModel/views.py:495 +#: AKModel/admin.py:76 AKModel/admin.py:89 AKModel/views.py:501 msgid "Unpublish plan" msgstr "Plan verbergen" @@ -53,11 +53,11 @@ msgstr "In Wiki-Syntax exportieren" msgid "Cannot export AKs from more than one event at the same time." msgstr "Kann nicht AKs von mehreren Events zur selben Zeit exportieren." -#: AKModel/admin.py:236 AKModel/views.py:465 +#: AKModel/admin.py:236 AKModel/views.py:471 msgid "Reset interest in AKs" msgstr "Interesse an AKs zurücksetzen" -#: AKModel/admin.py:241 AKModel/views.py:475 +#: AKModel/admin.py:241 AKModel/views.py:481 msgid "Reset AKs' interest counters" msgstr "Interessenszähler der AKs zurücksetzen" @@ -65,15 +65,15 @@ msgstr "Interessenszähler der AKs zurücksetzen" msgid "AK Details" msgstr "AK-Details" -#: AKModel/admin.py:384 AKModel/views.py:435 +#: AKModel/admin.py:384 AKModel/views.py:441 msgid "Mark Constraint Violations as manually resolved" msgstr "Markiere Constraintverletzungen als manuell behoben" -#: AKModel/admin.py:389 AKModel/views.py:445 +#: AKModel/admin.py:389 AKModel/views.py:451 msgid "Set Constraint Violations to level \"violation\"" msgstr "Constraintverletzungen auf Level \"Violation\" setzen" -#: AKModel/admin.py:394 AKModel/views.py:455 +#: AKModel/admin.py:394 AKModel/views.py:461 msgid "Set Constraint Violations to level \"warning\"" msgstr "Constraintverletzungen auf Level \"Warning\" setzen" @@ -103,15 +103,15 @@ msgstr "Bitte Verfügbarkeiten eintragen!" #: AKModel/availability/models.py:38 AKModel/models.py:56 AKModel/models.py:128 #: AKModel/models.py:183 AKModel/models.py:202 AKModel/models.py:234 -#: AKModel/models.py:288 AKModel/models.py:354 AKModel/models.py:387 -#: AKModel/models.py:458 AKModel/models.py:499 AKModel/models.py:664 +#: AKModel/models.py:288 AKModel/models.py:357 AKModel/models.py:390 +#: AKModel/models.py:461 AKModel/models.py:502 AKModel/models.py:667 msgid "Event" msgstr "Event" #: AKModel/availability/models.py:39 AKModel/models.py:129 #: AKModel/models.py:184 AKModel/models.py:203 AKModel/models.py:235 -#: AKModel/models.py:289 AKModel/models.py:355 AKModel/models.py:388 -#: AKModel/models.py:459 AKModel/models.py:500 AKModel/models.py:665 +#: AKModel/models.py:289 AKModel/models.py:358 AKModel/models.py:391 +#: AKModel/models.py:462 AKModel/models.py:503 AKModel/models.py:668 msgid "Associated event" msgstr "Zugehöriges Event" @@ -123,8 +123,8 @@ msgstr "Person" 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:361 +#: AKModel/models.py:380 AKModel/models.py:511 msgid "Room" msgstr "Raum" @@ -132,8 +132,8 @@ msgstr "Raum" msgid "Room whose availability this is" msgstr "Raum dessen Verfügbarkeit hier abgebildet wird" -#: AKModel/availability/models.py:65 AKModel/models.py:294 -#: AKModel/models.py:376 AKModel/models.py:453 +#: AKModel/availability/models.py:65 AKModel/models.py:297 +#: AKModel/models.py:379 AKModel/models.py:456 msgid "AK" msgstr "AK" @@ -142,7 +142,7 @@ msgid "AK whose availability this is" msgstr "Verfügbarkeiten" #: AKModel/availability/models.py:74 AKModel/models.py:187 -#: AKModel/models.py:514 +#: AKModel/models.py:517 msgid "AK Category" msgstr "AK-Kategorie" @@ -208,7 +208,7 @@ msgstr "" "fürWünsche markieren, z.B. um während der Präsentation auf einem Touchscreen " "ausgefüllt zu werden?" -#: AKModel/forms.py:113 AKModel/models.py:658 +#: AKModel/forms.py:113 AKModel/models.py:661 msgid "Default Slots" msgstr "Standardslots" @@ -223,8 +223,8 @@ msgid "" "Delimiter: Semicolon" msgstr "" "Raumdetails im CSV-Format eingeben. Benötigte Spalte ist \"name\", optionale " -"Spalten sind \"location\", \"capacity\", und \"url\" for Online-/Hybridräume" -"Trennzeichen: Semikolon" +"Spalten sind \"location\", \"capacity\", und \"url\" for Online-/" +"HybridräumeTrennzeichen: Semikolon" #: AKModel/forms.py:136 msgid "CSV must contain a name column" @@ -232,7 +232,7 @@ msgstr "CSV muss eine name-Spalte enthalten" #: AKModel/models.py:18 AKModel/models.py:175 AKModel/models.py:199 #: AKModel/models.py:218 AKModel/models.py:232 AKModel/models.py:250 -#: AKModel/models.py:346 +#: AKModel/models.py:349 msgid "Name" msgstr "Name" @@ -266,7 +266,7 @@ msgstr "Zeitzone" msgid "Time Zone where this event takes place in" msgstr "Zeitzone in der das Event stattfindet" -#: AKModel/models.py:27 AKModel/views.py:246 +#: AKModel/models.py:27 AKModel/views.py:251 msgid "Start" msgstr "Start" @@ -406,7 +406,7 @@ msgstr "Internet Link" msgid "Link to Homepage" msgstr "Link zu Homepage oder Webseite" -#: AKModel/models.py:132 AKModel/models.py:507 +#: AKModel/models.py:132 AKModel/models.py:510 msgid "AK Owner" msgstr "AK-Leitung" @@ -478,7 +478,7 @@ msgstr "AK-Tags" msgid "Name of the Requirement" msgstr "Name der Anforderung" -#: AKModel/models.py:238 AKModel/models.py:511 +#: AKModel/models.py:238 AKModel/models.py:514 msgid "AK Requirement" msgstr "AK-Anforderung" @@ -617,263 +617,271 @@ msgstr "Interessenszähler" msgid "People who have indicated interest online" msgstr "Anzahl Personen, die online Interesse bekundet haben" -#: AKModel/models.py:295 AKModel/models.py:502 +#: AKModel/models.py:291 +msgid "Export?" +msgstr "Export?" + +#: AKModel/models.py:292 +msgid "Include AK in wiki export?" +msgstr "AK bei Wiki-Export berücksichtigen?" + +#: AKModel/models.py:298 AKModel/models.py:505 #: AKModel/templates/admin/AKModel/status.html:57 -#: AKModel/templates/admin/AKModel/status.html:64 AKModel/views.py:364 +#: AKModel/templates/admin/AKModel/status.html:64 AKModel/views.py:369 msgid "AKs" msgstr "AKs" -#: AKModel/models.py:346 +#: AKModel/models.py:349 msgid "Name or number of the room" msgstr "Name oder Nummer des Raums" -#: AKModel/models.py:347 +#: AKModel/models.py:350 msgid "Location" msgstr "Ort" -#: AKModel/models.py:348 +#: AKModel/models.py:351 msgid "Name or number of the location" msgstr "Name oder Nummer des Ortes" -#: AKModel/models.py:349 +#: AKModel/models.py:352 msgid "Capacity" msgstr "Kapazität" -#: AKModel/models.py:350 +#: AKModel/models.py:353 msgid "Maximum number of people (-1 for unlimited)." msgstr "Maximale Personenzahl (-1 wenn unbeschränkt)." -#: AKModel/models.py:351 +#: AKModel/models.py:354 msgid "Properties" msgstr "Eigenschaften" -#: AKModel/models.py:352 +#: AKModel/models.py:355 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:40 +#: AKModel/models.py:362 AKModel/templates/admin/AKModel/status.html:40 msgid "Rooms" msgstr "Räume" -#: AKModel/models.py:376 +#: AKModel/models.py:379 msgid "AK being mapped" msgstr "AK, der zugeordnet wird" -#: AKModel/models.py:378 +#: AKModel/models.py:381 msgid "Room the AK will take place in" msgstr "Raum in dem der AK stattfindet" -#: AKModel/models.py:379 AKModel/models.py:661 +#: AKModel/models.py:382 AKModel/models.py:664 msgid "Slot Begin" msgstr "Beginn des Slots" -#: AKModel/models.py:379 AKModel/models.py:661 +#: AKModel/models.py:382 AKModel/models.py:664 msgid "Time and date the slot begins" msgstr "Zeit und Datum zu der der AK beginnt" -#: AKModel/models.py:381 +#: AKModel/models.py:384 msgid "Duration" msgstr "Dauer" -#: AKModel/models.py:382 +#: AKModel/models.py:385 msgid "Length in hours" msgstr "Länge in Stunden" -#: AKModel/models.py:384 +#: AKModel/models.py:387 msgid "Scheduling fixed" msgstr "Planung fix" -#: AKModel/models.py:385 +#: AKModel/models.py:388 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:393 msgid "Last update" msgstr "Letzte Aktualisierung" -#: AKModel/models.py:393 +#: AKModel/models.py:396 msgid "AK Slot" msgstr "AK-Slot" -#: AKModel/models.py:394 AKModel/models.py:504 +#: AKModel/models.py:397 AKModel/models.py:507 msgid "AK Slots" msgstr "AK-Slot" -#: AKModel/models.py:416 AKModel/models.py:425 +#: AKModel/models.py:419 AKModel/models.py:428 msgid "Not scheduled yet" msgstr "Noch nicht geplant" -#: AKModel/models.py:454 +#: AKModel/models.py:457 msgid "AK this message belongs to" msgstr "AK zu dem die Nachricht gehört" -#: AKModel/models.py:455 +#: AKModel/models.py:458 msgid "Message text" msgstr "Nachrichtentext" -#: AKModel/models.py:456 +#: AKModel/models.py:459 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:465 msgid "AK Orga Message" msgstr "AK-Organachricht" -#: AKModel/models.py:463 +#: AKModel/models.py:466 msgid "AK Orga Messages" msgstr "AK-Organachrichten" -#: AKModel/models.py:472 +#: AKModel/models.py:475 msgid "Constraint Violation" msgstr "Constraintverletzung" -#: AKModel/models.py:473 AKModel/templates/admin/AKModel/status.html:87 +#: AKModel/models.py:476 AKModel/templates/admin/AKModel/status.html:87 msgid "Constraint Violations" msgstr "Constraintverletzungen" -#: AKModel/models.py:477 +#: AKModel/models.py:480 msgid "Owner has two parallel slots" msgstr "Leitung hat zwei Slots parallel" -#: AKModel/models.py:478 +#: AKModel/models.py:481 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:482 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:483 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:484 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:485 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:487 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:488 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:489 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:490 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:491 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:494 msgid "Warning" msgstr "Warnung" -#: AKModel/models.py:492 +#: AKModel/models.py:495 msgid "Violation" msgstr "Verletzung" -#: AKModel/models.py:494 +#: AKModel/models.py:497 msgid "Type" msgstr "Art" -#: AKModel/models.py:495 +#: AKModel/models.py:498 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:499 msgid "Level" msgstr "Level" -#: AKModel/models.py:497 +#: AKModel/models.py:500 msgid "Severity level of the violation" msgstr "Schweregrad der Verletzung" -#: AKModel/models.py:503 +#: AKModel/models.py:506 msgid "AK(s) belonging to this constraint" msgstr "AK(s), die zu diesem Constraint gehören" -#: AKModel/models.py:505 +#: AKModel/models.py:508 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:510 msgid "AK Owner belonging to this constraint" msgstr "AK Leitung(en), die zu diesem Constraint gehören" -#: AKModel/models.py:509 +#: AKModel/models.py:512 msgid "Room belonging to this constraint" msgstr "Raum, der zu diesem Constraint gehört" -#: AKModel/models.py:512 +#: AKModel/models.py:515 msgid "AK Requirement belonging to this constraint" msgstr "AK Anforderung, die zu diesem Constraint gehört" -#: AKModel/models.py:514 +#: AKModel/models.py:517 msgid "AK Category belonging to this constraint" msgstr "AK Kategorie, di zu diesem Constraint gehört" -#: AKModel/models.py:516 +#: AKModel/models.py:519 msgid "Comment" msgstr "Kommentar" -#: AKModel/models.py:516 +#: AKModel/models.py:519 msgid "Comment or further details for this violation" msgstr "Kommentar oder weitere Details zu dieser Vereletzung" -#: AKModel/models.py:519 +#: AKModel/models.py:522 msgid "Timestamp" msgstr "Timestamp" -#: AKModel/models.py:519 +#: AKModel/models.py:522 msgid "Time of creation" msgstr "Zeitpunkt der ERstellung" -#: AKModel/models.py:520 +#: AKModel/models.py:523 msgid "Manually Resolved" msgstr "Manuell behoben" -#: AKModel/models.py:521 +#: AKModel/models.py:524 msgid "Mark this violation manually as resolved" msgstr "Markiere diese Verletzung manuell als behoben" -#: AKModel/models.py:548 +#: AKModel/models.py:551 #: AKModel/templates/admin/AKModel/requirements_overview.html:27 msgid "Details" msgstr "Details" -#: AKModel/models.py:657 +#: AKModel/models.py:660 msgid "Default Slot" msgstr "Standardslot" -#: AKModel/models.py:662 +#: AKModel/models.py:665 msgid "Slot End" msgstr "Ende des Slots" -#: AKModel/models.py:662 +#: AKModel/models.py:665 msgid "Time and date the slot ends" msgstr "Zeit und Datum zu der der Slot endet" -#: AKModel/models.py:667 +#: AKModel/models.py:670 msgid "Primary categories" msgstr "Primäre Kategorien" -#: AKModel/models.py:668 +#: AKModel/models.py:671 msgid "Categories that should be assigned to this slot primarily" msgstr "Kategorieren, die diesem Slot primär zugewiesen werden sollen" @@ -924,7 +932,7 @@ 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:251 +#: AKModel/views.py:256 msgid "Finish" msgstr "Abschluss" @@ -1017,7 +1025,7 @@ msgstr "Bisher keine Räume" msgid "Add Room" msgstr "Raum hinzufügen" -#: AKModel/templates/admin/AKModel/status.html:55 AKModel/views.py:582 +#: AKModel/templates/admin/AKModel/status.html:55 AKModel/views.py:588 msgid "Import Rooms from CSV" msgstr "Räume aus CSV importieren" @@ -1046,7 +1054,7 @@ msgstr "AKs, die besondere Aufmerksamkeit benötigen" msgid "Enter Interest" msgstr "Interesse erfassen" -#: AKModel/templates/admin/AKModel/status.html:94 AKModel/views.py:507 +#: AKModel/templates/admin/AKModel/status.html:94 AKModel/views.py:513 msgid "Edit Default Slots" msgstr "Standardslots bearbeiten" @@ -1062,7 +1070,7 @@ msgstr "AKs als CSV exportieren" msgid "Export AKs for Wiki" msgstr "AKs im Wiki-Format exportieren" -#: AKModel/templates/admin/AKModel/status.html:102 AKModel/views.py:334 +#: AKModel/templates/admin/AKModel/status.html:102 AKModel/views.py:339 msgid "Export AK Slides" msgstr "AK-Folien exportieren" @@ -1115,162 +1123,162 @@ msgstr "Login" msgid "Register" msgstr "Registrieren" -#: AKModel/views.py:152 +#: AKModel/views.py:154 msgid "Event Status" msgstr "Eventstatus" -#: AKModel/views.py:165 +#: AKModel/views.py:167 msgid "Requirements for Event" msgstr "Anforderungen für das Event" -#: AKModel/views.py:179 +#: AKModel/views.py:181 msgid "AK CSV Export" msgstr "AK-CSV-Export" -#: AKModel/views.py:193 +#: AKModel/views.py:195 msgid "AK Wiki Export" msgstr "AK-Wiki-Export" -#: AKModel/views.py:201 AKModel/views.py:350 +#: AKModel/views.py:206 AKModel/views.py:355 msgid "Wishes" msgstr "Wünsche" -#: AKModel/views.py:222 +#: AKModel/views.py:227 msgid "Delete AK Orga Messages" msgstr "AK-Organachrichten löschen" -#: AKModel/views.py:237 +#: AKModel/views.py:242 msgid "AK Orga Messages successfully deleted" msgstr "AK-Organachrichten erfolgreich gelöscht" -#: AKModel/views.py:247 +#: AKModel/views.py:252 msgid "Settings" msgstr "Einstellungen" -#: AKModel/views.py:248 +#: AKModel/views.py:253 msgid "Event created, Prepare Import" msgstr "Event angelegt, Import vorbereiten" -#: AKModel/views.py:249 +#: AKModel/views.py:254 msgid "Import categories & requirements" msgstr "Kategorien & Anforderungen kopieren" -#: AKModel/views.py:250 +#: AKModel/views.py:255 msgid "Activate?" msgstr "Aktivieren?" -#: AKModel/views.py:309 +#: AKModel/views.py:314 #, python-format msgid "Copied '%(obj)s'" msgstr "'%(obj)s' kopiert" -#: AKModel/views.py:312 +#: AKModel/views.py:317 #, python-format msgid "Could not copy '%(obj)s' (%(error)s)" msgstr "'%(obj)s' konnte nicht kopiert werden (%(error)s)" -#: AKModel/views.py:345 +#: AKModel/views.py:350 msgid "Symbols" msgstr "Symbole" -#: AKModel/views.py:346 +#: AKModel/views.py:351 msgid "Who?" msgstr "Wer?" -#: AKModel/views.py:347 +#: AKModel/views.py:352 msgid "Duration(s)" msgstr "Dauer(n)" -#: AKModel/views.py:348 +#: AKModel/views.py:353 msgid "Reso intention?" msgstr "Resolutionsabsicht?" -#: AKModel/views.py:349 +#: AKModel/views.py:354 msgid "Category (for Wishes)" msgstr "Kategorie (für Wünsche)" -#: AKModel/views.py:437 +#: AKModel/views.py:443 msgid "The following Constraint Violations will be marked as manually resolved" msgstr "" "Die folgenden Constraintverletzungen werden als manuell behoben markiert." -#: AKModel/views.py:438 +#: AKModel/views.py:444 msgid "Constraint Violations marked as resolved" msgstr "Constraintverletzungen als manuell behoben markiert" -#: AKModel/views.py:447 +#: AKModel/views.py:453 msgid "The following Constraint Violations will be set to level 'violation'" msgstr "" "Die folgenden Constraintverletzungen werden auf das Level \"Violation\" " "gesetzt." -#: AKModel/views.py:448 +#: AKModel/views.py:454 msgid "Constraint Violations set to level 'violation'" msgstr "Constraintverletzungen auf Level \"Violation\" gesetzt" -#: AKModel/views.py:457 +#: AKModel/views.py:463 msgid "The following Constraint Violations will be set to level 'warning'" msgstr "" "Die folgenden Constraintverletzungen werden auf das Level 'warning' gesetzt." -#: AKModel/views.py:458 +#: AKModel/views.py:464 msgid "Constraint Violations set to level 'warning'" msgstr "Constraintverletzungen auf Level \"Warning\" gesetzt" -#: AKModel/views.py:467 +#: AKModel/views.py:473 msgid "Interest of the following AKs will be set to not filled (-1):" msgstr "Interesse an den folgenden AKs wird auf nicht ausgefüllt (-1) gesetzt:" -#: AKModel/views.py:468 +#: AKModel/views.py:474 msgid "Reset of interest in AKs successful." msgstr "Interesse an AKs erfolgreich zurückgesetzt." -#: AKModel/views.py:477 +#: AKModel/views.py:483 msgid "Interest counter of the following AKs will be set to 0:" msgstr "Interessensbekundungszähler der folgenden AKs wird auf 0 gesetzt:" -#: AKModel/views.py:478 +#: AKModel/views.py:484 msgid "AKs' interest counters set back to 0." msgstr "Interessenszähler der AKs zurückgesetzt" -#: AKModel/views.py:487 +#: AKModel/views.py:493 msgid "Publish the plan(s) of:" msgstr "Den Plan/die Pläne veröffentlichen von:" -#: AKModel/views.py:488 +#: AKModel/views.py:494 msgid "Plan published" msgstr "Plan veröffentlicht" -#: AKModel/views.py:497 +#: AKModel/views.py:503 msgid "Unpublish the plan(s) of:" msgstr "Den Plan/die Pläne verbergen von:" -#: AKModel/views.py:498 +#: AKModel/views.py:504 msgid "Plan unpublished" msgstr "Plan verborgen" -#: AKModel/views.py:544 +#: AKModel/views.py:550 #, python-brace-format msgid "Could not update slot {id} since it does not belong to {event}" msgstr "" "Konnte Slot {id} nicht bearbeiten, da er nicht zum Event {event} gehört" -#: AKModel/views.py:574 +#: AKModel/views.py:580 #, python-brace-format msgid "Updated {u} slot(s). created {c} new slot(s) and deleted {d} slot(s)" msgstr "" "{u} Slot(s) aktualisiert, {c} Slot(s) hinzugefügt und {d} Slot(s) gelöscht" -#: AKModel/views.py:611 +#: AKModel/views.py:624 #, python-brace-format msgid "Could not import room {name}: {e}" msgstr "Konnte Raum {name} nicht importieren: {e}" -#: AKModel/views.py:615 +#: AKModel/views.py:628 #, python-brace-format msgid "Imported {count} room(s)" msgstr "{count} Raum/Räume importiert" -#: AKModel/views.py:617 +#: AKModel/views.py:630 msgid "No rooms imported" msgstr "Keine Räume importiert" diff --git a/AKModel/migrations/0055_ak_export.py b/AKModel/migrations/0055_ak_export.py new file mode 100644 index 0000000000000000000000000000000000000000..9f38c2c480d0f7a0db65eaf76a4cfb2d3692ca55 --- /dev/null +++ b/AKModel/migrations/0055_ak_export.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.16 on 2022-12-26 22:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('AKModel', '0054_default_slots'), + ] + + operations = [ + migrations.AddField( + model_name='ak', + name='include_in_export', + field=models.BooleanField(default=True, help_text='Include AK in wiki export?', verbose_name='Export?'), + ), + ] diff --git a/AKModel/models.py b/AKModel/models.py index 2844ab8ad496ee2f43c9f1b764f8177a381ea804..03e0bc329a4b158d9137324bf7eabf6929fa374e 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -92,10 +92,10 @@ class Event(models.Model): for category in categories: ak_list = [] for ak in category.ak_set.all(): - if ak.wish: - ak_wishes.append(ak) - else: - if filter(ak): + if filter(ak): + if ak.wish: + ak_wishes.append(ak) + else: ak_list.append(ak) if not hide_empty_categories or len(ak_list) > 0: categories_with_aks.append((category, ak_list)) @@ -288,7 +288,10 @@ class AK(models.Model): event = models.ForeignKey(to=Event, on_delete=models.CASCADE, verbose_name=_('Event'), help_text=_('Associated event')) - history = HistoricalRecords(excluded_fields=['interest_counter']) + include_in_export = models.BooleanField(default=True, verbose_name=_('Export?'), + help_text=_("Include AK in wiki export?")) + + history = HistoricalRecords(excluded_fields=['interest_counter', 'include_in_export']) class Meta: verbose_name = _('AK') diff --git a/AKModel/tests.py b/AKModel/tests.py index 106de0979c99432f1589ab5be16909fc8d70247d..65bd48bcecb1595db8c338702cc57e8f738ddfda 100644 --- a/AKModel/tests.py +++ b/AKModel/tests.py @@ -110,3 +110,20 @@ class ModelViewTests(BasicViewTests, TestCase): view_name_with_prefix, url = self._name_and_url((f'admin:AKModel_{model[1]}_change', {'object_id': m.pk})) response = self.client.get(url) self.assertEqual(response.status_code, 200, msg=f"Edit form for model {model[1]} ({url}) broken") + + def test_wiki_export(self): + self.client.force_login(self.admin_user) + + export_url = reverse_lazy(f"admin:ak_wiki_export", kwargs={'slug': 'kif42'}) + response = self.client.get(export_url) + self.assertEqual(response.status_code, 200, "Export not working at all") + + export_count = 0 + for category, aks in response.context["categories_with_aks"]: + for ak in aks: + self.assertEqual(ak.include_in_export, True, f"AK with export flag set to False (pk={ak.pk}) included in export") + self.assertNotEqual(ak.pk, 1, "AK known to be excluded from export (PK 1) included in export") + export_count += 1 + + self.assertEqual(export_count, AK.objects.filter(event_id=2, include_in_export=True).count(), + "Wiki export contained the wrong number of AKs") diff --git a/AKModel/views.py b/AKModel/views.py index 4a2eff24dd94b2e131a8b56c834ed2421fbf0352..0458aa4d1c4114cd4242e47e908e9cd30dca5aa0 100644 --- a/AKModel/views.py +++ b/AKModel/views.py @@ -197,7 +197,10 @@ class AKWikiExportView(AdminViewMixin, DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - categories_with_aks, ak_wishes = context["event"].get_categories_with_aks(wishes_seperately=True) + categories_with_aks, ak_wishes = context["event"].get_categories_with_aks( + wishes_seperately=True, + filter=lambda ak: ak.include_in_export + ) context["categories_with_aks"] = [(category.name, ak_list) for category, ak_list in categories_with_aks] context["categories_with_aks"].append((_("Wishes"), ak_wishes))