diff --git a/AKModel/admin.py b/AKModel/admin.py index 3bfa7af53f7825bd86d542a321e4533ebd3013bc..1bc4a653734aae3af4457ebe74b1f1ef8cc3e0ad 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 63f8787902390a1f5a137bde8892abce900c8da6..ea136ff187a549ed05485fc48996ae4094b8dc33 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 dee3b93e38e4de618d094ff766855ffeda5dc7eb..a1896eac4763445dd95f81c11ce1b72b809ace6a 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):