mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-28 03:16:25 -06:00
Add Custom Field support to dcim Regions
This commit is contained in:
parent
8aab425b45
commit
b037e9de35
@ -57,13 +57,13 @@ class ConnectedEndpointSerializer(ValidatedModelSerializer):
|
|||||||
# Regions/sites
|
# Regions/sites
|
||||||
#
|
#
|
||||||
|
|
||||||
class RegionSerializer(serializers.ModelSerializer):
|
class RegionSerializer(CustomFieldModelSerializer):
|
||||||
parent = NestedRegionSerializer(required=False, allow_null=True)
|
parent = NestedRegionSerializer(required=False, allow_null=True)
|
||||||
site_count = serializers.IntegerField(read_only=True)
|
site_count = serializers.IntegerField(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Region
|
model = Region
|
||||||
fields = ['id', 'name', 'slug', 'parent', 'site_count']
|
fields = ['id', 'name', 'slug', 'parent', 'site_count', 'custom_fields']
|
||||||
|
|
||||||
|
|
||||||
class SiteSerializer(TaggitSerializer, CustomFieldModelSerializer):
|
class SiteSerializer(TaggitSerializer, CustomFieldModelSerializer):
|
||||||
|
@ -97,7 +97,7 @@ class CableTraceMixin(object):
|
|||||||
# Regions
|
# Regions
|
||||||
#
|
#
|
||||||
|
|
||||||
class RegionViewSet(ModelViewSet):
|
class RegionViewSet(CustomFieldModelViewSet):
|
||||||
queryset = Region.objects.annotate(
|
queryset = Region.objects.annotate(
|
||||||
site_count=Count('sites')
|
site_count=Count('sites')
|
||||||
)
|
)
|
||||||
|
@ -21,7 +21,7 @@ from .models import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class RegionFilter(NameSlugSearchFilterSet):
|
class RegionFilter(NameSlugSearchFilterSet, CustomFieldFilterSet):
|
||||||
parent_id = django_filters.ModelMultipleChoiceFilter(
|
parent_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=Region.objects.all(),
|
queryset=Region.objects.all(),
|
||||||
label='Parent region (ID)',
|
label='Parent region (ID)',
|
||||||
|
@ -125,7 +125,7 @@ class MACAddressField(forms.Field):
|
|||||||
# Regions
|
# Regions
|
||||||
#
|
#
|
||||||
|
|
||||||
class RegionForm(BootstrapMixin, forms.ModelForm):
|
class RegionForm(BootstrapMixin, CustomFieldForm):
|
||||||
slug = SlugField()
|
slug = SlugField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -160,7 +160,7 @@ class RegionCSVForm(forms.ModelForm):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class RegionFilterForm(BootstrapMixin, forms.Form):
|
class RegionFilterForm(BootstrapMixin, CustomFieldFilterForm):
|
||||||
model = Site
|
model = Site
|
||||||
q = forms.CharField(
|
q = forms.CharField(
|
||||||
required=False,
|
required=False,
|
||||||
|
@ -183,7 +183,7 @@ class CableTermination(models.Model):
|
|||||||
# Regions
|
# Regions
|
||||||
#
|
#
|
||||||
|
|
||||||
class Region(MPTTModel, ChangeLoggedModel):
|
class Region(MPTTModel, ChangeLoggedModel, CustomFieldModel):
|
||||||
"""
|
"""
|
||||||
Sites can be grouped within geographic Regions.
|
Sites can be grouped within geographic Regions.
|
||||||
"""
|
"""
|
||||||
@ -202,6 +202,11 @@ class Region(MPTTModel, ChangeLoggedModel):
|
|||||||
slug = models.SlugField(
|
slug = models.SlugField(
|
||||||
unique=True
|
unique=True
|
||||||
)
|
)
|
||||||
|
custom_field_values = GenericRelation(
|
||||||
|
to='extras.CustomFieldValue',
|
||||||
|
content_type_field='obj_type',
|
||||||
|
object_id_field='obj_id'
|
||||||
|
)
|
||||||
|
|
||||||
csv_headers = ['name', 'slug', 'parent']
|
csv_headers = ['name', 'slug', 'parent']
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ CUSTOMFIELD_MODELS = [
|
|||||||
'dcim.devicetype',
|
'dcim.devicetype',
|
||||||
'dcim.powerfeed',
|
'dcim.powerfeed',
|
||||||
'dcim.rack',
|
'dcim.rack',
|
||||||
|
'dcim.region',
|
||||||
'dcim.site',
|
'dcim.site',
|
||||||
'ipam.aggregate',
|
'ipam.aggregate',
|
||||||
'ipam.ipaddress',
|
'ipam.ipaddress',
|
||||||
@ -55,6 +56,7 @@ CUSTOMLINK_MODELS = [
|
|||||||
'dcim.powerpanel',
|
'dcim.powerpanel',
|
||||||
'dcim.powerfeed',
|
'dcim.powerfeed',
|
||||||
'dcim.rack',
|
'dcim.rack',
|
||||||
|
'dcim.region',
|
||||||
'dcim.site',
|
'dcim.site',
|
||||||
'ipam.aggregate',
|
'ipam.aggregate',
|
||||||
'ipam.ipaddress',
|
'ipam.ipaddress',
|
||||||
|
Loading…
Reference in New Issue
Block a user