From f743410b4eb0aa1f029f013e0be1fb80b1f9f16f Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 20 Mar 2017 21:18:37 -0400 Subject: [PATCH] Renamed rack-units API and added a test --- netbox/dcim/api/views.py | 4 ++-- netbox/dcim/forms.py | 2 +- netbox/dcim/tests/test_api.py | 13 ++++++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index a5a53fbb5..e185eac93 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -82,8 +82,8 @@ class RackViewSet(WritableSerializerMixin, CustomFieldModelViewSet): write_serializer_class = serializers.WritableRackSerializer filter_class = filters.RackFilter - @detail_route(url_path='rack-units') - def rack_units(self, request, pk=None): + @detail_route() + def units(self, request, pk=None): """ List rack units (by rack) """ diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index c79f65d53..5fa5865fe 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -512,7 +512,7 @@ class DeviceForm(BootstrapMixin, CustomFieldForm): )) position = forms.TypedChoiceField(required=False, empty_value=None, help_text="The lowest-numbered unit occupied by the device", - widget=APISelect(api_url='/api/dcim/racks/{{rack}}/rack-units/?face={{face}}', + widget=APISelect(api_url='/api/dcim/racks/{{rack}}/units/?face={{face}}', disabled_indicator='device')) manufacturer = forms.ModelChoiceField(queryset=Manufacturer.objects.all(), widget=forms.Select(attrs={'filter-for': 'device_type'})) diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index 628973cdd..bf3e000bd 100644 --- a/netbox/dcim/tests/test_api.py +++ b/netbox/dcim/tests/test_api.py @@ -335,13 +335,13 @@ class RackTest(HttpStatusMixin, APITestCase): 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.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', u_height=42, ) 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', u_height=42, ) self.rack3 = Rack.objects.create( - site=self.site1, group=self.rackgroup1, role=self.rackrole1, name='Test Rack 3' + site=self.site1, group=self.rackgroup1, role=self.rackrole1, name='Test Rack 3', u_height=42, ) def test_get_rack(self): @@ -351,6 +351,13 @@ class RackTest(HttpStatusMixin, APITestCase): self.assertEqual(response.data['name'], self.rack1.name) + def test_get_rack_units(self): + + url = reverse('dcim-api:rack-units', kwargs={'pk': self.rack1.pk}) + response = self.client.get(url, **self.header) + + self.assertEqual(response.data['count'], 42) + def test_list_racks(self): url = reverse('dcim-api:rack-list')