From fcb2ef1f3e0aa71f77b73142ec27e4e89c69c961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?= <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de> Date: Wed, 30 Sep 2020 00:23:32 +0200 Subject: [PATCH] Improve wiki export Introduce field for wiki export template to Event model Use this for wiki export Fixes #85 Create and link new export view (auto-split by categories) --- AKModel/admin.py | 5 +- AKModel/locale/de_DE/LC_MESSAGES/django.po | 250 ++++++++++-------- .../0039_event_wiki_template_name.py | 18 ++ AKModel/models.py | 1 + AKModel/templates/admin/AKModel/status.html | 1 + .../templates/admin/AKModel/wiki_export.html | 14 +- AKModel/views.py | 10 + 7 files changed, 176 insertions(+), 123 deletions(-) create mode 100644 AKModel/migrations/0039_event_wiki_template_name.py diff --git a/AKModel/admin.py b/AKModel/admin.py index 1d631ed7..e871bac1 100644 --- a/AKModel/admin.py +++ b/AKModel/admin.py @@ -11,7 +11,7 @@ from simple_history.admin import SimpleHistoryAdmin from AKModel.availability.models import Availability from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, AKSlot, Room, AKOrgaMessage -from AKModel.views import EventStatusView, AKCSVExportView +from AKModel.views import EventStatusView, AKCSVExportView, AKWikiExportView @admin.register(Event) @@ -26,7 +26,8 @@ class EventAdmin(admin.ModelAdmin): urls = super().get_urls() custom_urls = [ path('<slug:slug>/status/', self.admin_site.admin_view(EventStatusView.as_view()), name="event_status"), - path('<slug:event_slug>/ak-csv-export/', self.admin_site.admin_view(AKCSVExportView.as_view()), name="ak_csv_export") + path('<slug:event_slug>/ak-csv-export/', self.admin_site.admin_view(AKCSVExportView.as_view()), name="ak_csv_export"), + path('<slug:event_slug>/ak-wiki-export/', self.admin_site.admin_view(AKWikiExportView.as_view()), name="ak_wiki_export"), ] return custom_urls + urls diff --git a/AKModel/locale/de_DE/LC_MESSAGES/django.po b/AKModel/locale/de_DE/LC_MESSAGES/django.po index 3b9d98f3..840db7b0 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: 2020-09-28 22:17+0000\n" +"POT-Creation-Date: 2020-09-29 22:27+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,24 +11,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: AKModel/admin.py:35 AKModel/admin.py:36 +#: AKModel/admin.py:36 AKModel/admin.py:37 #: AKModel/templates/admin/AKModel/status.html:7 msgid "Status" msgstr "Status" -#: AKModel/admin.py:114 +#: AKModel/admin.py:115 msgid "Wish" msgstr "AK-Wunsch" -#: AKModel/admin.py:120 +#: AKModel/admin.py:121 msgid "Is wish" msgstr "Ist ein Wunsch" -#: AKModel/admin.py:121 +#: AKModel/admin.py:122 msgid "Is not a wish" msgstr "Ist kein Wunsch" -#: AKModel/admin.py:148 +#: AKModel/admin.py:149 msgid "Export to wiki syntax" msgstr "In Wiki-Syntax exportieren" @@ -56,15 +56,15 @@ msgstr "Die eingegebene Verfügbarkeit enthält ein ungültiges Datum." msgid "Please fill in your availabilities!" msgstr "Bitte Verfügbarkeiten eintragen!" -#: AKModel/availability/models.py:38 AKModel/models.py:44 AKModel/models.py:73 -#: AKModel/models.py:125 AKModel/models.py:144 AKModel/models.py:176 -#: AKModel/models.py:230 AKModel/models.py:276 AKModel/models.py:306 +#: AKModel/availability/models.py:38 AKModel/models.py:45 AKModel/models.py:74 +#: AKModel/models.py:126 AKModel/models.py:145 AKModel/models.py:177 +#: AKModel/models.py:231 AKModel/models.py:277 AKModel/models.py:307 msgid "Event" msgstr "Event" -#: AKModel/availability/models.py:39 AKModel/models.py:74 AKModel/models.py:126 -#: AKModel/models.py:145 AKModel/models.py:177 AKModel/models.py:231 -#: AKModel/models.py:277 AKModel/models.py:307 +#: AKModel/availability/models.py:39 AKModel/models.py:75 AKModel/models.py:127 +#: AKModel/models.py:146 AKModel/models.py:178 AKModel/models.py:232 +#: AKModel/models.py:278 AKModel/models.py:308 msgid "Associated event" msgstr "Zugehöriges Event" @@ -76,8 +76,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:280 -#: AKModel/models.py:299 +#: AKModel/availability/models.py:56 AKModel/models.py:281 +#: AKModel/models.py:300 msgid "Room" msgstr "Raum" @@ -85,8 +85,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:236 -#: AKModel/models.py:298 AKModel/models.py:348 +#: AKModel/availability/models.py:65 AKModel/models.py:237 +#: AKModel/models.py:299 AKModel/models.py:349 msgid "AK" msgstr "AK" @@ -94,7 +94,7 @@ msgstr "AK" msgid "AK whose availability this is" msgstr "Verfügbarkeiten" -#: AKModel/availability/models.py:74 AKModel/models.py:129 +#: AKModel/availability/models.py:74 AKModel/models.py:130 msgid "AK Category" msgstr "AK Kategorie" @@ -106,9 +106,9 @@ msgstr "AK Kategorie dessen Verfügbarkeit hier abgebildet wird" msgid "Availabilities" msgstr "Verfügbarkeiten" -#: AKModel/models.py:16 AKModel/models.py:120 AKModel/models.py:141 -#: AKModel/models.py:160 AKModel/models.py:174 AKModel/models.py:192 -#: AKModel/models.py:269 +#: AKModel/models.py:16 AKModel/models.py:121 AKModel/models.py:142 +#: AKModel/models.py:161 AKModel/models.py:175 AKModel/models.py:193 +#: AKModel/models.py:270 msgid "Name" msgstr "Name" @@ -191,18 +191,22 @@ msgid "Prefix for wiki link construction" msgstr "Prefix für die automatische Generierung von Wiki-Links" #: AKModel/models.py:36 +msgid "Wiki Export Template Name" +msgstr "Wiki-Export Templatename" + +#: AKModel/models.py:37 msgid "Default Slot Length" msgstr "Standardslotlänge" -#: AKModel/models.py:37 +#: AKModel/models.py:38 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:39 +#: AKModel/models.py:40 msgid "Contact email address" msgstr "E-Mail Kontaktadresse" -#: AKModel/models.py:41 +#: AKModel/models.py:42 msgid "" "An email address that is displayed on every page and can be used for all " "kinds of questions" @@ -210,216 +214,216 @@ msgstr "" "Eine Mailadresse die auf jeder Seite angezeigt wird und für alle Arten von " "Fragen genutzt werden kann" -#: AKModel/models.py:45 +#: AKModel/models.py:46 msgid "Events" msgstr "Events" -#: AKModel/models.py:68 +#: AKModel/models.py:69 msgid "Nickname" msgstr "Spitzname" -#: AKModel/models.py:68 +#: AKModel/models.py:69 msgid "Name to identify an AK owner by" msgstr "Name durch den eine AK Leitung identifiziert wird" -#: AKModel/models.py:69 +#: AKModel/models.py:70 msgid "Slug" msgstr "Slug" -#: AKModel/models.py:69 +#: AKModel/models.py:70 msgid "Slug for URL generation" msgstr "Slug für URL-Generierung" -#: AKModel/models.py:70 +#: AKModel/models.py:71 msgid "Institution" msgstr "Instutution" -#: AKModel/models.py:70 +#: AKModel/models.py:71 msgid "Uni etc." msgstr "Universität o.ä." -#: AKModel/models.py:71 AKModel/models.py:201 +#: AKModel/models.py:72 AKModel/models.py:202 msgid "Web Link" msgstr "Internet Link" -#: AKModel/models.py:71 +#: AKModel/models.py:72 msgid "Link to Homepage" msgstr "Link zu Homepage oder Webseite" -#: AKModel/models.py:77 +#: AKModel/models.py:78 msgid "AK Owner" msgstr "AK Leitung" -#: AKModel/models.py:78 +#: AKModel/models.py:79 msgid "AK Owners" msgstr "AK Leitungen" -#: AKModel/models.py:120 +#: AKModel/models.py:121 msgid "Name of the AK Category" msgstr "Name des AK Kategorie" -#: AKModel/models.py:121 AKModel/models.py:142 +#: AKModel/models.py:122 AKModel/models.py:143 msgid "Color" msgstr "Farbe" -#: AKModel/models.py:121 AKModel/models.py:142 +#: AKModel/models.py:122 AKModel/models.py:143 msgid "Color for displaying" msgstr "Farbe für die Anzeige" -#: AKModel/models.py:122 AKModel/models.py:195 +#: AKModel/models.py:123 AKModel/models.py:196 msgid "Description" msgstr "Beschreibung" -#: AKModel/models.py:123 +#: AKModel/models.py:124 msgid "Short description of this AK Category" msgstr "Beschreibung der AK-Kategorie" -#: AKModel/models.py:130 +#: AKModel/models.py:131 msgid "AK Categories" msgstr "AK Kategorien" -#: AKModel/models.py:141 +#: AKModel/models.py:142 msgid "Name of the AK Track" msgstr "Name des AK Tracks" -#: AKModel/models.py:148 +#: AKModel/models.py:149 msgid "AK Track" msgstr "AK Track" -#: AKModel/models.py:149 +#: AKModel/models.py:150 msgid "AK Tracks" msgstr "AK Tracks" -#: AKModel/models.py:160 +#: AKModel/models.py:161 msgid "Name of the AK Tag" msgstr "Name das AK Tags" -#: AKModel/models.py:163 +#: AKModel/models.py:164 msgid "AK Tag" msgstr "AK Tag" -#: AKModel/models.py:164 +#: AKModel/models.py:165 msgid "AK Tags" msgstr "AK Tags" -#: AKModel/models.py:174 +#: AKModel/models.py:175 msgid "Name of the Requirement" msgstr "Name der Anforderung" -#: AKModel/models.py:180 +#: AKModel/models.py:181 msgid "AK Requirement" msgstr "AK Anforderung" -#: AKModel/models.py:181 +#: AKModel/models.py:182 msgid "AK Requirements" msgstr "AK Anforderungen" -#: AKModel/models.py:192 +#: AKModel/models.py:193 msgid "Name of the AK" msgstr "Name des AKs" -#: AKModel/models.py:193 +#: AKModel/models.py:194 msgid "Short Name" msgstr "Kurzer Name" -#: AKModel/models.py:194 +#: AKModel/models.py:195 msgid "Name displayed in the schedule" msgstr "Name zur Anzeige im AK Plan" -#: AKModel/models.py:195 +#: AKModel/models.py:196 msgid "Description of the AK" msgstr "Beschreibung des AKs" -#: AKModel/models.py:197 +#: AKModel/models.py:198 msgid "Owners" msgstr "Leitungen" -#: AKModel/models.py:198 +#: AKModel/models.py:199 msgid "Those organizing the AK" msgstr "Menschen, die den AK organisieren und halten" -#: AKModel/models.py:201 +#: AKModel/models.py:202 msgid "Link to wiki page" msgstr "Link zur Wiki Seite" -#: AKModel/models.py:202 +#: AKModel/models.py:203 msgid "Protocol Link" msgstr "Protokolllink" -#: AKModel/models.py:202 +#: AKModel/models.py:203 msgid "Link to protocol" msgstr "Link zum Protokoll" -#: AKModel/models.py:204 +#: AKModel/models.py:205 msgid "Category" msgstr "Kategorie" -#: AKModel/models.py:205 +#: AKModel/models.py:206 msgid "Category of the AK" msgstr "Kategorie des AKs" -#: AKModel/models.py:206 +#: AKModel/models.py:207 msgid "Tags" msgstr "Tags" -#: AKModel/models.py:206 +#: AKModel/models.py:207 msgid "Tags provided by owners" msgstr "Tags, die durch die AK Leitung vergeben wurden" -#: AKModel/models.py:207 +#: AKModel/models.py:208 msgid "Track" msgstr "Track" -#: AKModel/models.py:208 +#: AKModel/models.py:209 msgid "Track the AK belongs to" msgstr "Track zu dem der AK gehört" -#: AKModel/models.py:210 +#: AKModel/models.py:211 msgid "Resolution Intention" msgstr "Resolutionsabsicht" -#: AKModel/models.py:211 +#: AKModel/models.py:212 msgid "Intends to submit a resolution" msgstr "Beabsichtigt eine Resolution einzureichen" -#: AKModel/models.py:212 +#: AKModel/models.py:213 msgid "Present this AK" msgstr "AK Präsentieren" -#: AKModel/models.py:213 +#: AKModel/models.py:214 msgid "Present results of this AK" msgstr "Die Ergebnisse dieses AKs vorstellen" -#: AKModel/models.py:215 AKModel/templates/admin/AKModel/status.html:76 +#: AKModel/models.py:216 AKModel/templates/admin/AKModel/status.html:79 msgid "Requirements" msgstr "Anforderungen" -#: AKModel/models.py:216 +#: AKModel/models.py:217 msgid "AK's Requirements" msgstr "Anforderungen des AKs" -#: AKModel/models.py:218 +#: AKModel/models.py:219 msgid "Conflicting AKs" msgstr "AK Konflikte" -#: AKModel/models.py:219 +#: AKModel/models.py:220 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:220 +#: AKModel/models.py:221 msgid "Prerequisite AKs" msgstr "Vorausgesetzte AKs" -#: AKModel/models.py:221 +#: AKModel/models.py:222 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:223 +#: AKModel/models.py:224 msgid "Organizational Notes" msgstr "Notizen zur Organisation" -#: AKModel/models.py:224 +#: AKModel/models.py:225 msgid "" "Notes to organizers. These are public. For private notes, please send an e-" "mail." @@ -427,119 +431,119 @@ msgstr "" "Notizen an die Organisator*innen. Diese sind öffentlich, für private " "Anmerkungen bitte eine E-Mail schicken." -#: AKModel/models.py:226 +#: AKModel/models.py:227 msgid "Interest" msgstr "Interesse" -#: AKModel/models.py:226 +#: AKModel/models.py:227 msgid "Expected number of people" msgstr "Erwartete Personenzahl" -#: AKModel/models.py:227 +#: AKModel/models.py:228 msgid "Interest Counter" msgstr "Interessenszähler" -#: AKModel/models.py:228 +#: AKModel/models.py:229 msgid "People who have indicated interest online" msgstr "Anzahl Personen, die online Interesse bekundet haben" -#: AKModel/models.py:237 AKModel/templates/admin/AKModel/status.html:47 -#: AKModel/templates/admin/AKModel/status.html:54 +#: AKModel/models.py:238 AKModel/templates/admin/AKModel/status.html:49 +#: AKModel/templates/admin/AKModel/status.html:56 msgid "AKs" msgstr "AKs" -#: AKModel/models.py:269 +#: AKModel/models.py:270 msgid "Name or number of the room" msgstr "Name oder Nummer des Raums" -#: AKModel/models.py:270 +#: AKModel/models.py:271 msgid "Location" msgstr "Ort" -#: AKModel/models.py:271 +#: AKModel/models.py:272 msgid "Name or number of the location" msgstr "Name oder Nummer des Ortes" -#: AKModel/models.py:272 +#: AKModel/models.py:273 msgid "Capacity" msgstr "Kapazität" -#: AKModel/models.py:272 +#: AKModel/models.py:273 msgid "Maximum number of people" msgstr "Maximale Personenzahl" -#: AKModel/models.py:273 +#: AKModel/models.py:274 msgid "Properties" msgstr "Eigenschaften" -#: AKModel/models.py:274 +#: AKModel/models.py:275 msgid "AK requirements fulfilled by the room" msgstr "AK Anforderungen, die dieser Raum erfüllt" -#: AKModel/models.py:281 AKModel/templates/admin/AKModel/status.html:31 +#: AKModel/models.py:282 AKModel/templates/admin/AKModel/status.html:33 msgid "Rooms" msgstr "Räume" -#: AKModel/models.py:298 +#: AKModel/models.py:299 msgid "AK being mapped" msgstr "AK, der zugeordnet wird" -#: AKModel/models.py:300 +#: AKModel/models.py:301 msgid "Room the AK will take place in" msgstr "Raum in dem der AK stattfindet" -#: AKModel/models.py:301 +#: AKModel/models.py:302 msgid "Slot Begin" msgstr "Beginn des Slots" -#: AKModel/models.py:301 +#: AKModel/models.py:302 msgid "Time and date the slot begins" msgstr "Zeit und Datum zu der der AK beginnt" -#: AKModel/models.py:303 +#: AKModel/models.py:304 msgid "Duration" msgstr "Dauer" -#: AKModel/models.py:304 +#: AKModel/models.py:305 msgid "Length in hours" msgstr "Länge in Stunden" -#: AKModel/models.py:309 +#: AKModel/models.py:310 msgid "Last update" msgstr "Letzte Aktualisierung" -#: AKModel/models.py:312 +#: AKModel/models.py:313 msgid "AK Slot" msgstr "AK Slot" -#: AKModel/models.py:313 +#: AKModel/models.py:314 msgid "AK Slots" msgstr "AK Slot" -#: AKModel/models.py:327 +#: AKModel/models.py:328 msgid "Not scheduled yet" msgstr "Noch nicht geplant" -#: AKModel/models.py:348 +#: AKModel/models.py:349 #, fuzzy #| msgid "Track the AK belongs to" msgid "AK this message belongs to" msgstr "Track zu dem der AK gehört" -#: AKModel/models.py:349 +#: AKModel/models.py:350 msgid "Message text" msgstr "Nachrichtentext" -#: AKModel/models.py:349 +#: AKModel/models.py:350 msgid "Message to the organizers. This is not publicly visible." msgstr "" "Nachricht an die Organisator*innen. Diese ist nicht öffentlich sichtbar." -#: AKModel/models.py:353 +#: AKModel/models.py:354 msgid "AK Orga Message" msgstr "AK-Organachricht" -#: AKModel/models.py:354 +#: AKModel/models.py:355 msgid "AK Orga Messages" msgstr "AK-Organachrichten" @@ -564,54 +568,62 @@ msgstr "" msgid "Logout" msgstr "Ausloggen" -#: AKModel/templates/admin/AKModel/status.html:14 +#: AKModel/templates/admin/AKModel/status.html:16 #, fuzzy #| msgid "AK Categories" msgid "Categories" msgstr "AK Kategorien" -#: AKModel/templates/admin/AKModel/status.html:16 +#: AKModel/templates/admin/AKModel/status.html:18 #, fuzzy #| msgid "No categories yet" msgid "No categroies yet" msgstr "Bisher keine Kategorien" -#: AKModel/templates/admin/AKModel/status.html:29 +#: AKModel/templates/admin/AKModel/status.html:31 msgid "Add category" msgstr "Kategorie hinzufügen" -#: AKModel/templates/admin/AKModel/status.html:33 +#: AKModel/templates/admin/AKModel/status.html:35 msgid "No rooms yet" msgstr "Bisher keine Räume" -#: AKModel/templates/admin/AKModel/status.html:45 +#: AKModel/templates/admin/AKModel/status.html:47 msgid "Add Room" msgstr "Raum hinzufügen" -#: AKModel/templates/admin/AKModel/status.html:49 +#: AKModel/templates/admin/AKModel/status.html:51 msgid "No AKs yet" msgstr "Bisher keine AKs" -#: AKModel/templates/admin/AKModel/status.html:57 +#: AKModel/templates/admin/AKModel/status.html:59 msgid "Slots" msgstr "Slots" -#: AKModel/templates/admin/AKModel/status.html:60 +#: AKModel/templates/admin/AKModel/status.html:62 msgid "Unscheduled Slots" msgstr "Ungeplante Slots" -#: AKModel/templates/admin/AKModel/status.html:73 +#: AKModel/templates/admin/AKModel/status.html:75 msgid "Export AKs as CSV" msgstr "AKs als CSV exportieren" -#: AKModel/templates/admin/AKModel/status.html:78 +#: AKModel/templates/admin/AKModel/status.html:76 +msgid "Export AKs for Wiki" +msgstr "AKs im Wiki-Format exportieren" + +#: AKModel/templates/admin/AKModel/status.html:81 msgid "No requirements yet" msgstr "Bisher keine Anforderungen" -#: AKModel/templates/admin/AKModel/status.html:91 +#: AKModel/templates/admin/AKModel/status.html:94 msgid "Add Requirement" msgstr "Anforderungen hinzufügen" +#: AKModel/templates/admin/AKModel/status.html:97 +msgid "Messages" +msgstr "Nachrichten" + #: AKModel/templates/admin/ak_index.html:7 msgid "Active Events" msgstr "Aktive Events" @@ -620,9 +632,13 @@ msgstr "Aktive Events" msgid "Event Status" msgstr "Eventstatus" -#: AKModel/views.py:142 +#: AKModel/views.py:143 msgid "AK CSV Export" msgstr "AK CSV Export" +#: AKModel/views.py:157 +msgid "AK Wiki Export" +msgstr "AK Wiki Export" + #~ msgid "Notes to organizers" #~ msgstr "Notizen an die Organisator*innen" diff --git a/AKModel/migrations/0039_event_wiki_template_name.py b/AKModel/migrations/0039_event_wiki_template_name.py new file mode 100644 index 00000000..4bc23fc2 --- /dev/null +++ b/AKModel/migrations/0039_event_wiki_template_name.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.6 on 2020-09-29 22:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('AKModel', '0038_akorgamessage'), + ] + + operations = [ + migrations.AddField( + model_name='event', + name='wiki_export_template_name', + field=models.CharField(blank=True, max_length=50, verbose_name='Wiki Export Template Name'), + ), + ] diff --git a/AKModel/models.py b/AKModel/models.py index 130e5bba..58e1abd2 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -33,6 +33,7 @@ class Event(models.Model): default=True) 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) default_slot = models.DecimalField(max_digits=4, decimal_places=2, default=2, verbose_name=_('Default Slot Length'), help_text=_('Default length in hours that is assumed for AKs in this event.')) diff --git a/AKModel/templates/admin/AKModel/status.html b/AKModel/templates/admin/AKModel/status.html index 0bc84ba2..7f1ef31b 100644 --- a/AKModel/templates/admin/AKModel/status.html +++ b/AKModel/templates/admin/AKModel/status.html @@ -73,6 +73,7 @@ </table> <a class="btn btn-success" href="{% url 'admin:ak_csv_export' event_slug=event.slug %}">{% trans "Export AKs as CSV" %}</a> + <a class="btn btn-success" href="{% url 'admin:ak_wiki_export' event_slug=event.slug %}">{% trans "Export AKs for Wiki" %}</a> {% endif %} <h3 class="block-header">{% trans "Requirements" %}</h3> diff --git a/AKModel/templates/admin/AKModel/wiki_export.html b/AKModel/templates/admin/AKModel/wiki_export.html index d754ae79..555742ef 100644 --- a/AKModel/templates/admin/AKModel/wiki_export.html +++ b/AKModel/templates/admin/AKModel/wiki_export.html @@ -1,9 +1,14 @@ {% extends "admin/base_site.html" %} {% block content %} -<pre> -{% for ak in AKs %} -{% verbatim %}{{Ak Spalte 480{% endverbatim %} + +{% regroup AKs by category as ak_list %} + +{% for category_aks in ak_list %} +<h3>{{ category_aks.grouper }}</h3> +<textarea style="width: 100%;height:30vh;">{% for ak in category_aks.list %} +{% verbatim %}{{{% endverbatim %} +{{ ak.event.wiki_export_template_name }} | name={{ ak.name }} | beschreibung= {{ ak.description }} | wieviele={{ ak.interest_counter }} @@ -13,6 +18,7 @@ | reso={{ ak.reso }} | vorstellung={{ ak.present }} {% verbatim %}}}{% endverbatim %} +{% endfor %}</textarea> {% endfor %} -</pre> + {% endblock %} diff --git a/AKModel/views.py b/AKModel/views.py index 1f25d745..277cca12 100644 --- a/AKModel/views.py +++ b/AKModel/views.py @@ -148,3 +148,13 @@ class AKCSVExportView(AdminViewMixin, FilterByEventSlugMixin, ListView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) return context + + +class AKWikiExportView(AdminViewMixin, FilterByEventSlugMixin, ListView): + template_name = "admin/AKModel/wiki_export.html" + model = AK + context_object_name = "AKs" + title = _("AK Wiki Export") + + def get_queryset(self): + return super().get_queryset().order_by("category") -- GitLab