From 7dfaf6ff651fdfc9b00c3beb4451b93777b9c207 Mon Sep 17 00:00:00 2001 From: chirac Date: Mon, 28 Dec 2020 18:27:15 +0100 Subject: [PATCH] Add autocomplete on machine, interface edit forms --- machines/forms.py | 5 ++++- machines/urls.py | 1 + machines/views_autocomplete.py | 19 ++++++++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/machines/forms.py b/machines/forms.py index 7141bcfc..0c78be3e 100644 --- a/machines/forms.py +++ b/machines/forms.py @@ -104,7 +104,10 @@ class EditInterfaceForm(FormRevMixin, FieldPermissionFormMixin, ModelForm): url="/machines/machinetype-autocomplete", ), "ipv4": AutocompleteModelMixin( - url="/machines/ipv4-autocomplete", + url="/machines/iplist-autocomplete", forward=['machine_type'], + attrs={ + 'data-placeholder': 'Automatic assigment. Type to choose specific ip.', + } ), } diff --git a/machines/urls.py b/machines/urls.py index 2967f7fd..387bdae1 100644 --- a/machines/urls.py +++ b/machines/urls.py @@ -162,4 +162,5 @@ urlpatterns = [ url(r'^extension-autocomplete/$', views_autocomplete.ExtensionAutocomplete.as_view(), name='extension-autocomplete',), url(r'^domain-autocomplete/$', views_autocomplete.DomainAutocomplete.as_view(), name='domain-autocomplete',), url(r'^ouvertureportlist-autocomplete/$', views_autocomplete.OuverturePortListAutocomplete.as_view(), name='ouvertureportlist-autocomplete',), + url(r'^iplist-autocomplete/$', views_autocomplete.IpListAutocomplete.as_view(), name='iplist-autocomplete',), ] diff --git a/machines/views_autocomplete.py b/machines/views_autocomplete.py index 2d4c8931..a79fd276 100644 --- a/machines/views_autocomplete.py +++ b/machines/views_autocomplete.py @@ -41,7 +41,8 @@ from .models import ( MachineType, Extension, Domain, - OuverturePortList + OuverturePortList, + IpList ) from re2o.mixins import AutocompleteViewMixin @@ -88,3 +89,19 @@ class InterfaceAutocomplete(AutocompleteViewMixin): ) return qs + + +class IpListAutocomplete(AutocompleteViewMixin): + obj_type = IpList + + def get_queryset(self): + machine_type = self.forwarded.get('machine_type', None) + qs = self.obj_type.objects.filter(interface__isnull=True) + if machine_type: + qs = qs.filter(ip_type__machinetype__id=machine_type) + if self.q: + qs = qs.filter( + Q(ipv4__startswith=self.q) + ) + + return qs