From 19e46342493e68d70f468bad625272f15dd8460f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?= <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de> Date: Sun, 23 Oct 2022 23:26:47 +0200 Subject: [PATCH] Fix admin action for wiki export Looks like this was broken since the switch to individual boxes per category. Fixed it and made it more robust (show error message when trying to export AKs from more than one event at the same time). --- AKModel/admin.py | 9 +++++- AKModel/locale/de_DE/LC_MESSAGES/django.po | 32 ++++++++++++---------- AKModel/models.py | 8 ++++-- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/AKModel/admin.py b/AKModel/admin.py index 3bfa7af5..1bc4a653 100644 --- a/AKModel/admin.py +++ b/AKModel/admin.py @@ -196,7 +196,14 @@ class AKAdmin(SimpleHistoryAdmin): @action(description=_("Export to wiki syntax")) def wiki_export(self, request, queryset): - return render(request, 'admin/AKModel/wiki_export.html', context={"AKs": queryset}) + # Only export when all AKs belong to the same event + if queryset.values("event").distinct().count() == 1: + event = queryset.first().event + pks = set(ak.pk for ak in queryset.all()) + categories_with_aks = event.get_categories_with_aks(wishes_seperately=False, filter=lambda ak: ak.pk in pks, + hide_empty_categories=True) + return render(request, 'admin/AKModel/wiki_export.html', context={"categories_with_aks": categories_with_aks}) + self.message_user(request, _("Cannot export AKs from more than one event at the same time."), messages.ERROR) def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'event': diff --git a/AKModel/locale/de_DE/LC_MESSAGES/django.po b/AKModel/locale/de_DE/LC_MESSAGES/django.po index 63f87879..ea136ff1 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-10-23 19:20+0000\n" +"POT-Creation-Date: 2022-10-23 23:19+0200\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,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: AKModel/admin.py:61 AKModel/admin.py:63 +#: AKModel/admin.py:59 AKModel/admin.py:62 #: 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 @@ -21,38 +21,42 @@ msgstr "" msgid "Status" msgstr "Status" -#: AKModel/admin.py:70 +#: AKModel/admin.py:69 msgid "Publish plan" msgstr "Plan veröffentlichen" -#: AKModel/admin.py:73 +#: AKModel/admin.py:72 msgid "Plan published" msgstr "Plan veröffentlicht" -#: AKModel/admin.py:75 +#: AKModel/admin.py:74 msgid "Unpublish plan" msgstr "Plan verbergen" -#: AKModel/admin.py:78 +#: AKModel/admin.py:77 msgid "Plan unpublished" msgstr "Plan verborgen" -#: AKModel/admin.py:147 +#: AKModel/admin.py:146 msgid "Wish" msgstr "AK-Wunsch" -#: AKModel/admin.py:153 +#: AKModel/admin.py:152 msgid "Is wish" msgstr "Ist ein Wunsch" -#: AKModel/admin.py:154 +#: AKModel/admin.py:153 msgid "Is not a wish" msgstr "Ist kein Wunsch" -#: AKModel/admin.py:200 +#: AKModel/admin.py:197 msgid "Export to wiki syntax" msgstr "In Wiki-Syntax exportieren" +#: AKModel/admin.py:205 +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:220 AKModel/views.py:442 msgid "Reset interest in AKs" msgstr "Interesse an AKs zurücksetzen" @@ -61,19 +65,19 @@ msgstr "Interesse an AKs zurücksetzen" msgid "Reset AKs' interest counters" msgstr "Interessenszähler der AKs zurücksetzen" -#: AKModel/admin.py:312 +#: AKModel/admin.py:309 msgid "AK Details" msgstr "AK-Details" -#: AKModel/admin.py:367 AKModel/views.py:412 +#: AKModel/admin.py:366 AKModel/views.py:412 msgid "Mark Constraint Violations as manually resolved" msgstr "Markiere Constraintverletzungen als manuell behoben" -#: AKModel/admin.py:372 AKModel/views.py:422 +#: AKModel/admin.py:371 AKModel/views.py:422 msgid "Set Constraint Violations to level \"violation\"" msgstr "Constraintverletzungen auf Level \"Violation\" setzen" -#: AKModel/admin.py:377 AKModel/views.py:432 +#: AKModel/admin.py:376 AKModel/views.py:432 msgid "Set Constraint Violations to level \"warning\"" msgstr "Constraintverletzungen auf Level \"Warning\" setzen" diff --git a/AKModel/models.py b/AKModel/models.py index dee3b93e..a1896eac 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -73,7 +73,7 @@ class Event(models.Model): event = Event.objects.order_by('start').filter(start__gt=datetime.now()).first() return event - def get_categories_with_aks(self, wishes_seperately=False, filter=lambda ak: True): + def get_categories_with_aks(self, wishes_seperately=False, filter=lambda ak: True, hide_empty_categories=False): """ Get AKCategories as well as a list of AKs belonging to the category for this event @@ -97,7 +97,8 @@ class Event(models.Model): else: if filter(ak): ak_list.append(ak) - categories_with_aks.append((category, ak_list)) + if not hide_empty_categories or len(ak_list) > 0: + categories_with_aks.append((category, ak_list)) return categories_with_aks, ak_wishes else: for category in categories: @@ -105,7 +106,8 @@ class Event(models.Model): for ak in category.ak_set.all(): if filter(ak): ak_list.append(ak) - categories_with_aks.append((category, ak_list)) + if not hide_empty_categories or len(ak_list) > 0: + categories_with_aks.append((category, ak_list)) return categories_with_aks def get_unscheduled_wish_slots(self): -- GitLab