1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Implement nested RackGroups

This commit is contained in:
Jeremy Stretch
2020-03-11 14:40:29 -04:00
parent 2b33e91e2c
commit 84de0458aa
11 changed files with 213 additions and 37 deletions

View File

@@ -386,7 +386,17 @@ class RackGroupForm(BootstrapMixin, forms.ModelForm):
site = DynamicModelChoiceField(
queryset=Site.objects.all(),
widget=APISelect(
api_url="/api/dcim/sites/"
api_url="/api/dcim/sites/",
filter_for={
'parent': 'site_id',
}
)
)
parent = DynamicModelChoiceField(
queryset=RackGroup.objects.all(),
required=False,
widget=APISelect(
api_url="/api/dcim/rack-groups/"
)
)
slug = SlugField()
@@ -394,7 +404,7 @@ class RackGroupForm(BootstrapMixin, forms.ModelForm):
class Meta:
model = RackGroup
fields = (
'site', 'name', 'slug',
'site', 'parent', 'name', 'slug',
)
@@ -407,6 +417,15 @@ class RackGroupCSVForm(forms.ModelForm):
'invalid_choice': 'Site not found.',
}
)
parent = forms.ModelChoiceField(
queryset=RackGroup.objects.all(),
required=False,
to_field_name='name',
help_text='Name of parent rack group',
error_messages={
'invalid_choice': 'Rack group not found.',
}
)
class Meta:
model = RackGroup
@@ -426,7 +445,8 @@ class RackGroupFilterForm(BootstrapMixin, forms.Form):
api_url="/api/dcim/regions/",
value_field="slug",
filter_for={
'site': 'region'
'site': 'region',
'parent': 'region',
}
)
)
@@ -437,6 +457,18 @@ class RackGroupFilterForm(BootstrapMixin, forms.Form):
widget=APISelectMultiple(
api_url="/api/dcim/sites/",
value_field="slug",
filter_for={
'parent': 'site',
}
)
)
parent = DynamicModelMultipleChoiceField(
queryset=RackGroup.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
api_url="/api/dcim/rack-groups/",
value_field="slug",
)
)