mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-25 22:22:26 +00:00
Add autocomplete on machine form fields
This commit is contained in:
parent
e4d4250dad
commit
d00d7019c5
2 changed files with 96 additions and 1 deletions
|
@ -40,7 +40,7 @@ from django.forms import ModelForm, Form
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from re2o.field_permissions import FieldPermissionFormMixin
|
from re2o.field_permissions import FieldPermissionFormMixin
|
||||||
from re2o.mixins import FormRevMixin
|
from re2o.mixins import FormRevMixin, AutocompleteModelMixin, AutocompleteMultipleModelMixin
|
||||||
from .models import (
|
from .models import (
|
||||||
Domain,
|
Domain,
|
||||||
Machine,
|
Machine,
|
||||||
|
@ -71,6 +71,11 @@ class EditMachineForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Machine
|
model = Machine
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
widgets = {
|
||||||
|
"user": AutocompleteModelMixin(
|
||||||
|
url="/users/user-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -91,6 +96,17 @@ class EditInterfaceForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = ["machine", "machine_type", "ipv4", "mac_address", "details"]
|
fields = ["machine", "machine_type", "ipv4", "mac_address", "details"]
|
||||||
|
widgets = {
|
||||||
|
"machine": AutocompleteModelMixin(
|
||||||
|
url="/machines/machine-autocomplete",
|
||||||
|
),
|
||||||
|
"machine_type": AutocompleteModelMixin(
|
||||||
|
url="/machines/machinetype-autocomplete",
|
||||||
|
),
|
||||||
|
"ipv4": AutocompleteModelMixin(
|
||||||
|
url="/machines/ipv4-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -139,6 +155,11 @@ class AliasForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Domain
|
model = Domain
|
||||||
fields = ["name", "extension", "ttl"]
|
fields = ["name", "extension", "ttl"]
|
||||||
|
widgets = {
|
||||||
|
"extension": AutocompleteModelMixin(
|
||||||
|
url="/machines/extension-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -222,6 +243,14 @@ class IpTypeForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = IpType
|
model = IpType
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
widgets = {
|
||||||
|
"vlan": AutocompleteModelMixin(
|
||||||
|
url="/machines/vlan-autocomplete",
|
||||||
|
),
|
||||||
|
"extension": AutocompleteModelMixin(
|
||||||
|
url="/machines/extension-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -351,6 +380,14 @@ class MxForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Mx
|
model = Mx
|
||||||
fields = ["zone", "priority", "name", "ttl"]
|
fields = ["zone", "priority", "name", "ttl"]
|
||||||
|
widgets = {
|
||||||
|
"zone": AutocompleteModelMixin(
|
||||||
|
url="/machines/extension-autocomplete",
|
||||||
|
),
|
||||||
|
"name": AutocompleteModelMixin(
|
||||||
|
url="/machines/domain-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -386,6 +423,14 @@ class NsForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Ns
|
model = Ns
|
||||||
fields = ["zone", "ns", "ttl"]
|
fields = ["zone", "ns", "ttl"]
|
||||||
|
widgets = {
|
||||||
|
"zone": AutocompleteModelMixin(
|
||||||
|
url="/machines/extension-autocomplete",
|
||||||
|
),
|
||||||
|
"ns": AutocompleteModelMixin(
|
||||||
|
url="/machines/domain-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -419,6 +464,11 @@ class TxtForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Txt
|
model = Txt
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
widgets = {
|
||||||
|
"zone": AutocompleteModelMixin(
|
||||||
|
url="/machines/extension-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -449,6 +499,11 @@ class DNameForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = DName
|
model = DName
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
widgets = {
|
||||||
|
"zone": AutocompleteModelMixin(
|
||||||
|
url="/machines/extension-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -479,6 +534,14 @@ class SrvForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Srv
|
model = Srv
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
widgets = {
|
||||||
|
"extension": AutocompleteModelMixin(
|
||||||
|
url="/machines/extension-autocomplete",
|
||||||
|
),
|
||||||
|
"target": AutocompleteModelMixin(
|
||||||
|
url="/machines/domain-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -509,6 +572,14 @@ class NasForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Nas
|
model = Nas
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
widgets = {
|
||||||
|
"nas_type": AutocompleteModelMixin(
|
||||||
|
url="/machines/machinetype-autocomplete",
|
||||||
|
),
|
||||||
|
"machine_type": AutocompleteModelMixin(
|
||||||
|
url="/machines/machinetype-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -539,6 +610,11 @@ class RoleForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Role
|
model = Role
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
widgets = {
|
||||||
|
"servers": AutocompleteMultipleModelMixin(
|
||||||
|
url="/machines/interface-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -572,6 +648,11 @@ class ServiceForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Service
|
model = Service
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
widgets = {
|
||||||
|
"servers": AutocompleteMultipleModelMixin(
|
||||||
|
url="/machines/interface-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -656,6 +737,11 @@ class EditOuverturePortConfigForm(FormRevMixin, ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = ["port_lists"]
|
fields = ["port_lists"]
|
||||||
|
widgets = {
|
||||||
|
"port_lists": AutocompleteMultipleModelMixin(
|
||||||
|
url="/machines/ouvertureportlist-autocomplete",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
|
|
@ -29,6 +29,7 @@ from __future__ import unicode_literals
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
|
||||||
from . import views
|
from . import views
|
||||||
|
from . import views_autocomplete
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r"^new_machine/(?P<userid>[0-9]+)$", views.new_machine, name="new-machine"),
|
url(r"^new_machine/(?P<userid>[0-9]+)$", views.new_machine, name="new-machine"),
|
||||||
|
@ -153,4 +154,12 @@ urlpatterns = [
|
||||||
views.configure_ports,
|
views.configure_ports,
|
||||||
name="port-config",
|
name="port-config",
|
||||||
),
|
),
|
||||||
|
### Autocomplete Views
|
||||||
|
url(r'^vlan-autocomplete/$', views_autocomplete.VlanAutocomplete.as_view(), name='vlan-autocomplete',),
|
||||||
|
url(r'^interface-autocomplete/$', views_autocomplete.InterfaceAutocomplete.as_view(), name='interface-autocomplete',),
|
||||||
|
url(r'^machine-autocomplete/$', views_autocomplete.MachineAutocomplete.as_view(), name='machine-autocomplete',),
|
||||||
|
url(r'^machinetype-autocomplete/$', views_autocomplete.MachineTypeAutocomplete.as_view(), name='machinetype-autocomplete',),
|
||||||
|
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',),
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in a new issue