mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-27 19:08:38 -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
|
||||
#
|
||||
|
||||
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):
|
||||
|
@ -97,7 +97,7 @@ class CableTraceMixin(object):
|
||||
# Regions
|
||||
#
|
||||
|
||||
class RegionViewSet(ModelViewSet):
|
||||
class RegionViewSet(CustomFieldModelViewSet):
|
||||
queryset = Region.objects.annotate(
|
||||
site_count=Count('sites')
|
||||
)
|
||||
|
@ -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)',
|
||||
|
@ -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,
|
||||
|
@ -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']
|
||||
|
||||
|
@ -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',
|
||||
|
Loading…
Reference in New Issue
Block a user