From e6b4bbd912c2b353e5211656a439efea0151d611 Mon Sep 17 00:00:00 2001
From: George Katsikas <giorgakis.katsikas@gmail.com>
Date: Wed, 6 Mar 2024 17:36:47 +0100
Subject: [PATCH] allow multiple renewal-of subsidies

---
 scipost_django/finances/forms.py | 17 +++++++++++++----
 scipost_django/finances/views.py | 10 ++++++++++
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/scipost_django/finances/forms.py b/scipost_django/finances/forms.py
index b74540c87..c642baf03 100644
--- a/scipost_django/finances/forms.py
+++ b/scipost_django/finances/forms.py
@@ -33,16 +33,25 @@ class SubsidyForm(forms.ModelForm):
     organization = forms.ModelChoiceField(
         queryset=Organization.objects.all(),
         widget=autocomplete.ModelSelect2(
-            url="/organizations/organization-autocomplete", attrs={"data-html": True}
+            url="/organizations/organization-autocomplete",
+            attrs={
+                "data-html": True,
+                "style": "width: 100%",
+            },
         ),
     )
 
-    renewal_of = forms.ModelChoiceField(
+    renewal_of = forms.ModelMultipleChoiceField(
         queryset=Subsidy.objects.all(),
-        widget=autocomplete.ModelSelect2(
-            url=reverse_lazy("finances:subsidy_autocomplete")
+        widget=autocomplete.ModelSelect2Multiple(
+            url=reverse_lazy("finances:subsidy_autocomplete"),
+            attrs={
+                "data-html": True,
+                "style": "width: 100%",
+            },
         ),
         help_text=("Start typing, and select from the popup."),
+        required=False,
     )
 
     class Meta:
diff --git a/scipost_django/finances/views.py b/scipost_django/finances/views.py
index 79e7c7c94..1846ef697 100644
--- a/scipost_django/finances/views.py
+++ b/scipost_django/finances/views.py
@@ -8,6 +8,7 @@ import mimetypes
 from dal import autocomplete
 
 from django.db.models import Q
+from django.utils.html import format_html
 import matplotlib
 
 matplotlib.use("Agg")
@@ -314,6 +315,15 @@ class SubsidyAutocompleteView(autocomplete.Select2QuerySetView):
                 | Q(date_until__year__icontains=self.q)
             )
         return qs
+    
+    def get_result_label(self, item):
+        return format_html(
+            "{}<br>{} -> {} [{}]",
+            item.organization.name,
+            item.date_from,
+            item.date_until,
+            item.get_status_display(),
+        )
 
 
 class SubsidyListView(ListView):
-- 
GitLab