diff --git a/aleksis/core/forms.py b/aleksis/core/forms.py index e1c0be7ef4f28e609c93f3b58208aa0ea4d58b3a..199a0cbca99ae59339b4c31156cfe284655302d1 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 0cd31cdefc11e8f1a2d29a30fb72a001357a946f..44d60280c6d358f74c60cb9c5ccff2c7aba89b07 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 0000000000000000000000000000000000000000..d0b2c5c36cc1e06daf7cc4682c13655f617c3fb9 --- /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 %}