diff --git a/netbox/netbox/views/htmx.py b/netbox/netbox/views/htmx.py index bde710fe3..f0f54658c 100644 --- a/netbox/netbox/views/htmx.py +++ b/netbox/netbox/views/htmx.py @@ -1,7 +1,9 @@ from django.shortcuts import render from django.views.generic import View +from dcim.filtersets import SiteFilterSet from dcim.forms import SiteFilterForm +from dcim.models import Site class ObjectSelectorView(View): @@ -11,10 +13,31 @@ class ObjectSelectorView(View): form_class = self._get_form_class() form = form_class(request.GET) + if '_search' in request.GET: + # Return only search results + model = self._get_model() + filterset = self._get_filterset_class() + + queryset = model.objects.restrict(request.user) + if filterset: + queryset = filterset(request.GET, queryset, request=request).qs + + return render(request, 'htmx/object_selector_results.html', { + 'results': queryset, + }) + return render(request, self.template_name, { 'form': form, }) + def _get_model(self): + # TODO: Determine model from request parameters + return Site + def _get_form_class(self): - # TODO: Determine form class from request parameters + # TODO: Determine form class from model return SiteFilterForm + + def _get_filterset_class(self): + # TODO: Determine filterset class from model + return SiteFilterSet diff --git a/netbox/templates/dcim/device_edit.html b/netbox/templates/dcim/device_edit.html index 15725f559..ba81dfa13 100644 --- a/netbox/templates/dcim/device_edit.html +++ b/netbox/templates/dcim/device_edit.html @@ -119,5 +119,5 @@ {% endblock %} {% block modals %} - {% include 'inc/htmx_modal.html' %} + {% include 'inc/htmx_modal.html' with size='lg' %} {% endblock %} diff --git a/netbox/templates/htmx/object_selector.html b/netbox/templates/htmx/object_selector.html index b5858ab89..b7114bd4d 100644 --- a/netbox/templates/htmx/object_selector.html +++ b/netbox/templates/htmx/object_selector.html @@ -1,11 +1,30 @@ {% load form_helpers %} -