mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixed bug interpreting facility_id as a required field
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
from rest_framework.validators import UniqueTogetherValidator
|
||||||
|
|
||||||
from ipam.models import IPAddress
|
from ipam.models import IPAddress
|
||||||
from dcim.models import (
|
from dcim.models import (
|
||||||
@ -157,6 +158,21 @@ class WritableRackSerializer(serializers.ModelSerializer):
|
|||||||
'id', 'name', 'facility_id', 'site', 'group', 'tenant', 'role', 'type', 'width', 'u_height', 'desc_units',
|
'id', 'name', 'facility_id', 'site', 'group', 'tenant', 'role', 'type', 'width', 'u_height', 'desc_units',
|
||||||
'comments',
|
'comments',
|
||||||
]
|
]
|
||||||
|
# Omit the UniqueTogetherValidator that would be automatically added to validate facility_id. This prevents
|
||||||
|
# facility_id from being interpreted as a required field.
|
||||||
|
validators = [
|
||||||
|
UniqueTogetherValidator(queryset=Rack.objects.all(), fields=('site', 'name'))
|
||||||
|
]
|
||||||
|
|
||||||
|
def validate(self, data):
|
||||||
|
|
||||||
|
# Validate uniqueness of facility_id (if set) since we omitted the automatically-created validator from Meta.
|
||||||
|
if data.get('facility_id', None):
|
||||||
|
validator = UniqueTogetherValidator(queryset=Rack.objects.all(), fields=('site', 'facility_id'))
|
||||||
|
validator.set_context(self)
|
||||||
|
validator(data)
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -310,7 +310,7 @@ class RackTest(APITestCase):
|
|||||||
self.rackrole1 = RackRole.objects.create(name='Test Rack Role 1', slug='test-rack-role-1', color='ff0000')
|
self.rackrole1 = RackRole.objects.create(name='Test Rack Role 1', slug='test-rack-role-1', color='ff0000')
|
||||||
self.rackrole2 = RackRole.objects.create(name='Test Rack Role 2', slug='test-rack-role-2', color='00ff00')
|
self.rackrole2 = RackRole.objects.create(name='Test Rack Role 2', slug='test-rack-role-2', color='00ff00')
|
||||||
self.rack1 = Rack.objects.create(
|
self.rack1 = Rack.objects.create(
|
||||||
site=self.site1, group=self.rackgroup1, role=self.rackrole1, name='Test Rack 1'
|
site=self.site1, group=self.rackgroup1, role=self.rackrole1, name='Test Rack 1',
|
||||||
)
|
)
|
||||||
self.rack2 = Rack.objects.create(
|
self.rack2 = Rack.objects.create(
|
||||||
site=self.site1, group=self.rackgroup1, role=self.rackrole1, name='Test Rack 2'
|
site=self.site1, group=self.rackgroup1, role=self.rackrole1, name='Test Rack 2'
|
||||||
|
Reference in New Issue
Block a user