From b0e70d4a2ceedfc2f8abcf98fdad671bb729e08e Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Mon, 5 Oct 2020 22:05:09 +0200
Subject: [PATCH] NOT WORKING: WORK COMMIT

---
 aleksis/core/forms.py                         | 23 ++++++++++++++++---
 .../templates/core/announcement/form.html     |  8 ++++++-
 ...go_select2_modelselect2multiplewidget.html |  3 +++
 3 files changed, 30 insertions(+), 4 deletions(-)
 create mode 100644 aleksis/core/templates/fields/django_select2_modelselect2multiplewidget.html

diff --git a/aleksis/core/forms.py b/aleksis/core/forms.py
index e1c0be7ef..199a0cbca 100644
--- a/aleksis/core/forms.py
+++ b/aleksis/core/forms.py
@@ -108,6 +108,8 @@ class EditPersonForm(ExtensibleForm):
         ]
         widgets = {
             "user": Select2Widget,
+            "primary_group": Select2Widget,
+            "guardians": Select2Widget,
         }
 
     new_user = forms.CharField(
@@ -167,9 +169,24 @@ class AnnouncementForm(ExtensibleForm):
     valid_until_time = forms.TimeField(label=_("Time"))
 
     persons = forms.ModelMultipleChoiceField(
-        Person.objects.all(), label=_("Persons"), required=False
+        queryset=Person.objects.all(), label=_("Persons"), required=False, widget=ModelSelect2MultipleWidget(
+            search_fields=[
+                "first_name__icontains",
+                "last_name__icontains",
+                "short_name__icontains",
+            ],
+            attrs={"data-minimum-input-length": 0},
+        )
+    )
+    groups = forms.ModelMultipleChoiceField(
+        queryset=None, label=_("Groups"), required=False, widget=ModelSelect2MultipleWidget(
+            search_fields=[
+                "name__icontains",
+                "short_name__icontains",
+            ],
+            attrs={"data-minimum-input-length": 0},
+        )
     )
-    groups = forms.ModelMultipleChoiceField(queryset=None, label=_("Groups"), required=False)
 
     layout = Layout(
         Fieldset(
@@ -264,7 +281,7 @@ class AnnouncementForm(ExtensibleForm):
 class ChildGroupsForm(forms.Form):
     """Inline form for group editing to select child groups."""
 
-    child_groups = forms.ModelMultipleChoiceField(queryset=Group.objects.all())
+    child_groups = forms.ModelMultipleChoiceField(queryset=Group.objects.all(), widget=ModelSelect2MultipleWidget)
 
 
 class SitePreferenceForm(PreferenceForm):
diff --git a/aleksis/core/templates/core/announcement/form.html b/aleksis/core/templates/core/announcement/form.html
index 0cd31cdef..44d60280c 100644
--- a/aleksis/core/templates/core/announcement/form.html
+++ b/aleksis/core/templates/core/announcement/form.html
@@ -2,8 +2,12 @@
 
 {% extends "core/base.html" %}
 
-{% load i18n material_form %}
+{% load i18n material_form any_js %}
 
+{% block extra_head %}
+    {{ form.media.css }}
+    {% include_css "select2-materialize" %}
+{% endblock %}
 
 {% block browser_title %}
   {% if mode == "edit" %}
@@ -30,4 +34,6 @@
       {% trans "Save und publish announcement" %}
     </button>
   </form>
+  {% include_js "select2-materialize" %}
+  {{ form.media.js }}
 {% endblock %}
diff --git a/aleksis/core/templates/fields/django_select2_modelselect2multiplewidget.html b/aleksis/core/templates/fields/django_select2_modelselect2multiplewidget.html
new file mode 100644
index 000000000..d0b2c5c36
--- /dev/null
+++ b/aleksis/core/templates/fields/django_select2_modelselect2multiplewidget.html
@@ -0,0 +1,3 @@
+{% load l10n material_form material_form_internal %}
+{% part bound_field.field %}<{{ field.widget.component|default:'dmc-select' }}><div class="row">
+</div></{{ field.widget.component|default:'dmc-select' }}>{% endpart %}
-- 
GitLab