Use TreeNode choice fields for region assignment

This commit is contained in:
Jeremy Stretch 2020-02-11 09:50:33 -05:00
parent da68968d75
commit 221805a63e
2 changed files with 16 additions and 14 deletions

View File

@ -182,18 +182,18 @@ class MACAddressField(forms.Field):
# #
class RegionForm(BootstrapMixin, forms.ModelForm): class RegionForm(BootstrapMixin, forms.ModelForm):
parent = TreeNodeChoiceField(
queryset=Region.objects.all(),
required=False,
widget=StaticSelect2()
)
slug = SlugField() slug = SlugField()
class Meta: class Meta:
model = Region model = Region
fields = [ fields = (
'parent', 'name', 'slug', 'parent', 'name', 'slug',
] )
widgets = {
'parent': APISelect(
api_url="/api/dcim/regions/"
)
}
class RegionCSVForm(forms.ModelForm): class RegionCSVForm(forms.ModelForm):
@ -232,9 +232,7 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
region = TreeNodeChoiceField( region = TreeNodeChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
widget=APISelect( widget=StaticSelect2()
api_url="/api/dcim/regions/"
)
) )
slug = SlugField() slug = SlugField()
comments = CommentField() comments = CommentField()
@ -325,9 +323,7 @@ class SiteBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditFor
region = TreeNodeChoiceField( region = TreeNodeChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
required=False, required=False,
widget=APISelect( widget=StaticSelect2()
api_url="/api/dcim/regions/"
)
) )
tenant = forms.ModelChoiceField( tenant = forms.ModelChoiceField(
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),

View File

@ -1,6 +1,7 @@
from django import forms from django import forms
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from mptt.forms import TreeNodeMultipleChoiceField
from taggit.forms import TagField from taggit.forms import TagField
from dcim.models import DeviceRole, Platform, Region, Site from dcim.models import DeviceRole, Platform, Region, Site
@ -8,7 +9,7 @@ from tenancy.models import Tenant, TenantGroup
from utilities.forms import ( from utilities.forms import (
add_blank_choice, APISelectMultiple, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect, ColorSelect, add_blank_choice, APISelectMultiple, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect, ColorSelect,
CommentField, ContentTypeSelect, DateTimePicker, DynamicModelMultipleChoiceField, JSONField, SlugField, CommentField, ContentTypeSelect, DateTimePicker, DynamicModelMultipleChoiceField, JSONField, SlugField,
StaticSelect2, BOOLEAN_WITH_BLANK_CHOICES, StaticSelect2, StaticSelect2Multiple, BOOLEAN_WITH_BLANK_CHOICES,
) )
from virtualization.models import Cluster, ClusterGroup from virtualization.models import Cluster, ClusterGroup
from .choices import * from .choices import *
@ -190,6 +191,11 @@ class TagBulkEditForm(BootstrapMixin, BulkEditForm):
# #
class ConfigContextForm(BootstrapMixin, forms.ModelForm): class ConfigContextForm(BootstrapMixin, forms.ModelForm):
regions = TreeNodeMultipleChoiceField(
queryset=Region.objects.all(),
required=False,
widget=StaticSelect2Multiple()
)
tags = forms.ModelMultipleChoiceField( tags = forms.ModelMultipleChoiceField(
queryset=Tag.objects.all(), queryset=Tag.objects.all(),
to_field_name='slug', to_field_name='slug',