Add Custom Field support to dcim Regions

This commit is contained in:
Marco Ceppi 2019-11-21 06:54:12 -05:00
parent 8aab425b45
commit b037e9de35
6 changed files with 14 additions and 7 deletions

View File

@ -57,13 +57,13 @@ class ConnectedEndpointSerializer(ValidatedModelSerializer):
# Regions/sites
#
class RegionSerializer(serializers.ModelSerializer):
class RegionSerializer(CustomFieldModelSerializer):
parent = NestedRegionSerializer(required=False, allow_null=True)
site_count = serializers.IntegerField(read_only=True)
class Meta:
model = Region
fields = ['id', 'name', 'slug', 'parent', 'site_count']
fields = ['id', 'name', 'slug', 'parent', 'site_count', 'custom_fields']
class SiteSerializer(TaggitSerializer, CustomFieldModelSerializer):

View File

@ -97,7 +97,7 @@ class CableTraceMixin(object):
# Regions
#
class RegionViewSet(ModelViewSet):
class RegionViewSet(CustomFieldModelViewSet):
queryset = Region.objects.annotate(
site_count=Count('sites')
)

View File

@ -21,7 +21,7 @@ from .models import (
)
class RegionFilter(NameSlugSearchFilterSet):
class RegionFilter(NameSlugSearchFilterSet, CustomFieldFilterSet):
parent_id = django_filters.ModelMultipleChoiceFilter(
queryset=Region.objects.all(),
label='Parent region (ID)',

View File

@ -125,7 +125,7 @@ class MACAddressField(forms.Field):
# Regions
#
class RegionForm(BootstrapMixin, forms.ModelForm):
class RegionForm(BootstrapMixin, CustomFieldForm):
slug = SlugField()
class Meta:
@ -160,7 +160,7 @@ class RegionCSVForm(forms.ModelForm):
}
class RegionFilterForm(BootstrapMixin, forms.Form):
class RegionFilterForm(BootstrapMixin, CustomFieldFilterForm):
model = Site
q = forms.CharField(
required=False,

View File

@ -183,7 +183,7 @@ class CableTermination(models.Model):
# Regions
#
class Region(MPTTModel, ChangeLoggedModel):
class Region(MPTTModel, ChangeLoggedModel, CustomFieldModel):
"""
Sites can be grouped within geographic Regions.
"""
@ -202,6 +202,11 @@ class Region(MPTTModel, ChangeLoggedModel):
slug = models.SlugField(
unique=True
)
custom_field_values = GenericRelation(
to='extras.CustomFieldValue',
content_type_field='obj_type',
object_id_field='obj_id'
)
csv_headers = ['name', 'slug', 'parent']

View File

@ -6,6 +6,7 @@ CUSTOMFIELD_MODELS = [
'dcim.devicetype',
'dcim.powerfeed',
'dcim.rack',
'dcim.region',
'dcim.site',
'ipam.aggregate',
'ipam.ipaddress',
@ -55,6 +56,7 @@ CUSTOMLINK_MODELS = [
'dcim.powerpanel',
'dcim.powerfeed',
'dcim.rack',
'dcim.region',
'dcim.site',
'ipam.aggregate',
'ipam.ipaddress',