From 73da04627470b1f31f1b5c066d1f4c84d7afbe9e 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 Oct 2019 13:05:25 +0100 Subject: [PATCH] Add AK wiki export to admin actions Add new property to model to simply access planned durations of AK --- AKModel/admin.py | 11 +- AKModel/locale/de_DE/LC_MESSAGES/django.po | 213 +++++++++--------- AKModel/models.py | 4 + .../templates/admin/AKModel/wiki_export.html | 17 ++ 4 files changed, 137 insertions(+), 108 deletions(-) create mode 100644 AKModel/templates/admin/AKModel/wiki_export.html diff --git a/AKModel/admin.py b/AKModel/admin.py index cf7dc6bb..5efd099d 100644 --- a/AKModel/admin.py +++ b/AKModel/admin.py @@ -1,6 +1,6 @@ -# Register your models here. - from django.contrib import admin +from django.shortcuts import render +from django.utils.translation import gettext_lazy as _ from AKModel.availability import Availability from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, Room, AKSlot @@ -18,10 +18,17 @@ admin.site.register(AKRequirement) class AKAdmin(admin.ModelAdmin): model = AK list_display = ['name', 'short_name', 'category', 'is_wish'] + actions = ['wiki_export'] def is_wish(self, obj): return obj.wish + def wiki_export(self, request, queryset): + return render(request, + 'admin/AKModel/wiki_export.html', + context={"AKs": queryset}) + wiki_export.short_description = _("Export to wiki syntax") + is_wish.boolean = True diff --git a/AKModel/locale/de_DE/LC_MESSAGES/django.po b/AKModel/locale/de_DE/LC_MESSAGES/django.po index b5b9ac06..37298839 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: 2019-10-29 14:50+0000\n" +"POT-Creation-Date: 2019-10-30 11:56+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,125 +11,126 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: AKModel/availability.py:38 AKModel/models.py:30 AKModel/models.py:51 -#: AKModel/models.py:103 AKModel/models.py:121 AKModel/models.py:152 -#: AKModel/models.py:201 AKModel/models.py:233 AKModel/models.py:259 +#: admin.py:33 +msgid "Export to wiki syntax" +msgstr "In Wiki-Syntax exportieren" + +#: availability.py:38 models.py:30 models.py:51 models.py:103 models.py:121 +#: models.py:152 models.py:201 models.py:233 models.py:259 msgid "Event" msgstr "Event" -#: AKModel/availability.py:39 AKModel/models.py:52 AKModel/models.py:104 -#: AKModel/models.py:122 AKModel/models.py:153 AKModel/models.py:202 -#: AKModel/models.py:234 AKModel/models.py:260 +#: availability.py:39 models.py:52 models.py:104 models.py:122 models.py:153 +#: models.py:202 models.py:234 models.py:260 msgid "Associated event" msgstr "Zugehöriges Event" -#: AKModel/availability.py:47 +#: availability.py:47 msgid "Person" msgstr "Person" -#: AKModel/availability.py:48 +#: availability.py:48 msgid "Person whose availability this is" msgstr "Person deren Verfügbarkeit hier abgebildet wird" -#: AKModel/availability.py:56 AKModel/models.py:237 AKModel/models.py:252 +#: availability.py:56 models.py:237 models.py:252 msgid "Room" msgstr "Raum" -#: AKModel/availability.py:57 +#: availability.py:57 msgid "Room whose availability this is" msgstr "Raum dessen Verfügbarkeit hier abgebildet wird" -#: AKModel/availability.py:65 AKModel/models.py:205 AKModel/models.py:251 +#: availability.py:65 models.py:205 models.py:251 msgid "AK" msgstr "AK" -#: AKModel/availability.py:66 +#: availability.py:66 #, fuzzy #| msgid "Availabilities" msgid "AK whose availability this is" msgstr "Verfügbarkeiten" -#: AKModel/availability.py:74 AKModel/models.py:107 +#: availability.py:74 models.py:107 msgid "AK Category" msgstr "AK Kategorie" -#: AKModel/availability.py:75 +#: availability.py:75 msgid "AK Category whose availability this is" msgstr "AK Kategorie dessen Verfügbarkeit hier abgebildet wird" -#: AKModel/availability.py:235 +#: availability.py:235 msgid "Availability" msgstr "Verfügbarkeit" -#: AKModel/availability.py:236 +#: availability.py:236 msgid "Availabilities" msgstr "Verfügbarkeiten" -#: AKModel/models.py:12 AKModel/models.py:98 AKModel/models.py:118 -#: AKModel/models.py:136 AKModel/models.py:150 AKModel/models.py:167 -#: AKModel/models.py:226 +#: models.py:12 models.py:98 models.py:118 models.py:136 models.py:150 +#: models.py:167 models.py:226 msgid "Name" msgstr "Name" -#: AKModel/models.py:13 +#: models.py:13 msgid "Name or iteration of the event" msgstr "Name oder Iteration des Events" -#: AKModel/models.py:14 +#: models.py:14 #, fuzzy #| msgid "Short Name" msgid "Short Form" msgstr "Kurzer Name" -#: AKModel/models.py:15 +#: models.py:15 msgid "Short name of letters/numbers/dots/dashes/underscores used in URLs." msgstr "" -#: AKModel/models.py:16 +#: models.py:16 msgid "Start" msgstr "Start" -#: AKModel/models.py:16 +#: models.py:16 msgid "Time the event begins" msgstr "Zeit zu der das Event beginnt" -#: AKModel/models.py:17 +#: models.py:17 msgid "End" msgstr "Ende" -#: AKModel/models.py:17 +#: models.py:17 msgid "Time the event ends" msgstr "Zeit zu der das Event endet" -#: AKModel/models.py:18 +#: models.py:18 msgid "Place" msgstr "Ort" -#: AKModel/models.py:19 +#: models.py:19 msgid "City etc. the event takes place in" msgstr "Stadt o.ä. in der das Event stattfindet" -#: AKModel/models.py:20 +#: models.py:20 msgid "Active State" msgstr "Aktiver Status" -#: AKModel/models.py:20 +#: models.py:20 msgid "Marks currently active events" msgstr "Markiert aktuell aktive Events" -#: AKModel/models.py:22 +#: models.py:22 msgid "Base URL" msgstr "URL-Prefix" -#: AKModel/models.py:22 +#: models.py:22 msgid "Prefix for wiki link construction" msgstr "Prefix für die automatische Generierung von Wiki-Links" -#: AKModel/models.py:26 +#: models.py:26 msgid "Contact email address" msgstr "E-Mail Kontaktadresse" -#: AKModel/models.py:27 +#: models.py:27 msgid "" "An email address that is displayed on every page and can be used for all " "kinds of questions" @@ -137,288 +138,288 @@ msgstr "" "Eine Mailadresse die auf jeder Seite angezeigt wird und für alle Arten von " "Fragen genutzt werden kann" -#: AKModel/models.py:31 +#: models.py:31 msgid "Events" msgstr "Events" -#: AKModel/models.py:45 +#: models.py:45 msgid "Nickname" msgstr "Spitzname" -#: AKModel/models.py:45 +#: models.py:45 msgid "Name to identify an AK owner by" msgstr "Name durch den eine AK Leitung identifiziert wird" -#: AKModel/models.py:46 +#: models.py:46 msgid "Slug" msgstr "Slug" -#: AKModel/models.py:47 +#: models.py:47 msgid "Slug for URL generation" msgstr "Slug für URL-Generierung" -#: AKModel/models.py:48 +#: models.py:48 msgid "Institution" msgstr "Instutution" -#: AKModel/models.py:48 +#: models.py:48 msgid "Uni etc." msgstr "Universität o.ä." -#: AKModel/models.py:49 AKModel/models.py:176 +#: models.py:49 models.py:176 msgid "Web Link" msgstr "Internet Link" -#: AKModel/models.py:49 +#: models.py:49 msgid "Link to Homepage" msgstr "Link zu Homepage oder Webseite" -#: AKModel/models.py:55 +#: models.py:55 msgid "AK Owner" msgstr "AK Leitung" -#: AKModel/models.py:56 +#: models.py:56 msgid "AK Owners" msgstr "AK Leitungen" -#: AKModel/models.py:98 +#: models.py:98 msgid "Name of the AK Category" msgstr "Name des AK Kategorie" -#: AKModel/models.py:99 AKModel/models.py:119 +#: models.py:99 models.py:119 msgid "Color" msgstr "Farbe" -#: AKModel/models.py:99 AKModel/models.py:119 +#: models.py:99 models.py:119 msgid "Color for displaying" msgstr "Farbe für die Anzeige" -#: AKModel/models.py:100 AKModel/models.py:170 +#: models.py:100 models.py:170 msgid "Description" msgstr "Beschreibung" -#: AKModel/models.py:101 +#: models.py:101 msgid "Short description of this AK Category" msgstr "Beschreibung der AK-Kategorie" -#: AKModel/models.py:108 +#: models.py:108 msgid "AK Categories" msgstr "AK Kategorien" -#: AKModel/models.py:118 +#: models.py:118 msgid "Name of the AK Track" msgstr "Name des AK Tracks" -#: AKModel/models.py:125 +#: models.py:125 msgid "AK Track" msgstr "AK Track" -#: AKModel/models.py:126 +#: models.py:126 msgid "AK Tracks" msgstr "AK Tracks" -#: AKModel/models.py:136 +#: models.py:136 msgid "Name of the AK Tag" msgstr "Name das AK Tags" -#: AKModel/models.py:139 +#: models.py:139 msgid "AK Tag" msgstr "AK Tag" -#: AKModel/models.py:140 +#: models.py:140 msgid "AK Tags" msgstr "AK Tags" -#: AKModel/models.py:150 +#: models.py:150 msgid "Name of the Requirement" msgstr "Name der Anforderung" -#: AKModel/models.py:156 +#: models.py:156 msgid "AK Requirement" msgstr "AK Anforderung" -#: AKModel/models.py:157 +#: models.py:157 msgid "AK Requirements" msgstr "AK Anforderungen" -#: AKModel/models.py:167 +#: models.py:167 msgid "Name of the AK" msgstr "Name des AKs" -#: AKModel/models.py:168 +#: models.py:168 msgid "Short Name" msgstr "Kurzer Name" -#: AKModel/models.py:169 +#: models.py:169 msgid "Name displayed in the schedule" msgstr "Name zur Anzeige im AK Plan" -#: AKModel/models.py:170 +#: models.py:170 msgid "Description of the AK" msgstr "Beschreibung des AKs" -#: AKModel/models.py:172 +#: models.py:172 msgid "Owners" msgstr "Leitungen" -#: AKModel/models.py:173 +#: models.py:173 msgid "Those organizing the AK" msgstr "Menschen, die den AK organisieren und halten" -#: AKModel/models.py:176 +#: models.py:176 msgid "Link to wiki page" msgstr "Link zur Wiki Seite" -#: AKModel/models.py:178 +#: models.py:178 msgid "Category" msgstr "Kategorie" -#: AKModel/models.py:179 +#: models.py:179 msgid "Category of the AK" msgstr "Kategorie des AKs" -#: AKModel/models.py:180 +#: models.py:180 msgid "Tags" msgstr "Tags" -#: AKModel/models.py:180 +#: models.py:180 msgid "Tags provided by owners" msgstr "Tags, die durch die AK Leitung vergeben wurden" -#: AKModel/models.py:181 +#: models.py:181 msgid "Track" msgstr "Track" -#: AKModel/models.py:182 +#: models.py:182 msgid "Track the AK belongs to" msgstr "Track zu dem der AK gehört" -#: AKModel/models.py:184 +#: models.py:184 msgid "Resolution Intention" msgstr "Resolutionsabsicht" -#: AKModel/models.py:185 +#: models.py:185 msgid "Intends to submit a resolution" msgstr "Beabsichtigt eine Resolution einzureichen" -#: AKModel/models.py:186 +#: models.py:186 msgid "Present this AK" msgstr "AK Präsentieren" -#: AKModel/models.py:187 +#: models.py:187 msgid "Present results of this AK" msgstr "Die Ergebnisse dieses AKs vorstellen" -#: AKModel/models.py:189 +#: models.py:189 msgid "Requirements" msgstr "Anforderungen" -#: AKModel/models.py:190 +#: models.py:190 msgid "AK's Requirements" msgstr "Anforderungen des AKs" -#: AKModel/models.py:192 +#: models.py:192 msgid "Conflicting AKs" msgstr "AK Konflikte" -#: AKModel/models.py:193 +#: models.py:193 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:194 +#: models.py:194 msgid "Prerequisite AKs" msgstr "Vorausgesetzte AKs" -#: AKModel/models.py:195 +#: models.py:195 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:197 +#: models.py:197 msgid "Internal Notes" msgstr "Interne Notizen" -#: AKModel/models.py:197 +#: models.py:197 msgid "Notes to organizers" msgstr "Notizen an die Organisator*innen" -#: AKModel/models.py:199 +#: models.py:199 msgid "Interest" msgstr "Interesse" -#: AKModel/models.py:199 +#: models.py:199 msgid "Expected number of people" msgstr "Erwartete Personenzahl" -#: AKModel/models.py:206 +#: models.py:206 msgid "AKs" msgstr "AKs" -#: AKModel/models.py:226 +#: models.py:226 msgid "Name or number of the room" msgstr "Name oder Nummer des Raums" -#: AKModel/models.py:227 +#: models.py:227 msgid "Building" msgstr "Gebäude" -#: AKModel/models.py:228 +#: models.py:228 msgid "Name or number of the building" msgstr "Name oder Nummer des Gebäudes" -#: AKModel/models.py:229 +#: models.py:229 msgid "Capacity" msgstr "Kapazität" -#: AKModel/models.py:229 +#: models.py:229 msgid "Maximum number of people" msgstr "Maximale Personenzahl" -#: AKModel/models.py:230 +#: models.py:230 msgid "Properties" msgstr "Eigenschaften" -#: AKModel/models.py:231 +#: models.py:231 msgid "AK requirements fulfilled by the room" msgstr "AK Anforderungen, die dieser Raum erfüllt" -#: AKModel/models.py:238 +#: models.py:238 msgid "Rooms" msgstr "Räume" -#: AKModel/models.py:251 +#: models.py:251 msgid "AK being mapped" msgstr "AK, der zugeordnet wird" -#: AKModel/models.py:253 +#: models.py:253 msgid "Room the AK will take place in" msgstr "Raum in dem der AK stattfindet" -#: AKModel/models.py:254 +#: models.py:254 msgid "Slot Begin" msgstr "Beginn des Slots" -#: AKModel/models.py:254 +#: models.py:254 msgid "Time and date the slot begins" msgstr "Zeit und Datum zu der der AK beginnt" -#: AKModel/models.py:256 +#: models.py:256 msgid "Duration" msgstr "Dauer" -#: AKModel/models.py:257 +#: models.py:257 msgid "Length in hours" msgstr "Länge in Stunden" -#: AKModel/models.py:263 +#: models.py:263 msgid "AK Slot" msgstr "AK Slot" -#: AKModel/models.py:264 +#: models.py:264 msgid "AK Slots" msgstr "AK Slot" -#: AKModel/models.py:278 +#: models.py:278 msgid "Not scheduled yet" msgstr "Noch nicht geplant" diff --git a/AKModel/models.py b/AKModel/models.py index a1442587..57c35f41 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -215,6 +215,10 @@ class AK(models.Model): def owners_list(self): return ", ".join(str(owner) for owner in self.owners.all()) + @property + def durations_list(self): + return ", ".join(str(slot.duration) for slot in self.akslot_set.all()) + @property def wish(self): return self.owners.count() == 0 diff --git a/AKModel/templates/admin/AKModel/wiki_export.html b/AKModel/templates/admin/AKModel/wiki_export.html new file mode 100644 index 00000000..6d847729 --- /dev/null +++ b/AKModel/templates/admin/AKModel/wiki_export.html @@ -0,0 +1,17 @@ +{% extends "admin/base_site.html" %} + +{% block content %} +<pre> +{% for ak in AKs %} +{% verbatim %}{{Ak Spalte 475{% endverbatim %} +| name={{ ak.name }} +| beschreibung= {{ ak.description }} +| wieviele={{ ak.interest}} +| wer= {{ ak.owners_list }} +| wann= {{ ak.notes }} +| dauer= {{ ak.durations_list }} +| reso= {{ ak.reso }} +{% verbatim %}}}{% endverbatim %} +{% endfor %} +</pre> +{% endblock %} -- GitLab