mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 03:56:53 -06:00
Remove NullableCharFieldFilter; add missing filter fields
This commit is contained in:
parent
3d616baf75
commit
205adeb2e9
@ -47,7 +47,7 @@ class CircuitTypeFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CircuitType
|
model = CircuitType
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class CircuitFilter(CustomFieldFilterSet):
|
class CircuitFilter(CustomFieldFilterSet):
|
||||||
|
@ -8,9 +8,7 @@ from netaddr.core import AddrFormatError
|
|||||||
from extras.filters import CustomFieldFilterSet
|
from extras.filters import CustomFieldFilterSet
|
||||||
from tenancy.models import Tenant
|
from tenancy.models import Tenant
|
||||||
from utilities.constants import COLOR_CHOICES
|
from utilities.constants import COLOR_CHOICES
|
||||||
from utilities.filters import (
|
from utilities.filters import NameSlugSearchFilterSet, TagFilter, TreeNodeMultipleChoiceFilter
|
||||||
NameSlugSearchFilterSet, NullableCharFieldFilter, TagFilter, TreeNodeMultipleChoiceFilter
|
|
||||||
)
|
|
||||||
from virtualization.models import Cluster
|
from virtualization.models import Cluster
|
||||||
from .constants import *
|
from .constants import *
|
||||||
from .models import (
|
from .models import (
|
||||||
@ -36,7 +34,7 @@ class RegionFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Region
|
model = Region
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class SiteFilter(CustomFieldFilterSet):
|
class SiteFilter(CustomFieldFilterSet):
|
||||||
@ -73,7 +71,10 @@ class SiteFilter(CustomFieldFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Site
|
model = Site
|
||||||
fields = ['id', 'name', 'slug', 'facility', 'asn', 'contact_name', 'contact_phone', 'contact_email']
|
fields = [
|
||||||
|
'id', 'name', 'slug', 'facility', 'asn', 'latitude', 'longitude', 'contact_name', 'contact_phone',
|
||||||
|
'contact_email',
|
||||||
|
]
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
@ -110,14 +111,14 @@ class RackGroupFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RackGroup
|
model = RackGroup
|
||||||
fields = ['site_id', 'name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class RackRoleFilter(NameSlugSearchFilterSet):
|
class RackRoleFilter(NameSlugSearchFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RackRole
|
model = RackRole
|
||||||
fields = ['name', 'slug', 'color']
|
fields = ['id', 'name', 'slug', 'color']
|
||||||
|
|
||||||
|
|
||||||
class RackFilter(CustomFieldFilterSet):
|
class RackFilter(CustomFieldFilterSet):
|
||||||
@ -125,7 +126,6 @@ class RackFilter(CustomFieldFilterSet):
|
|||||||
method='search',
|
method='search',
|
||||||
label='Search',
|
label='Search',
|
||||||
)
|
)
|
||||||
facility_id = NullableCharFieldFilter()
|
|
||||||
site_id = django_filters.ModelMultipleChoiceFilter(
|
site_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=Site.objects.all(),
|
queryset=Site.objects.all(),
|
||||||
label='Site (ID)',
|
label='Site (ID)',
|
||||||
@ -170,14 +170,13 @@ class RackFilter(CustomFieldFilterSet):
|
|||||||
to_field_name='slug',
|
to_field_name='slug',
|
||||||
label='Role (slug)',
|
label='Role (slug)',
|
||||||
)
|
)
|
||||||
asset_tag = NullableCharFieldFilter()
|
|
||||||
tag = TagFilter()
|
tag = TagFilter()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Rack
|
model = Rack
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'name', 'serial', 'asset_tag', 'type', 'width', 'u_height', 'desc_units', 'outer_width',
|
'id', 'name', 'facility_id', 'serial', 'asset_tag', 'type', 'width', 'u_height', 'desc_units',
|
||||||
'outer_depth', 'outer_unit',
|
'outer_width', 'outer_depth', 'outer_unit',
|
||||||
]
|
]
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
@ -263,7 +262,7 @@ class ManufacturerFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Manufacturer
|
model = Manufacturer
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class DeviceTypeFilter(CustomFieldFilterSet):
|
class DeviceTypeFilter(CustomFieldFilterSet):
|
||||||
@ -357,63 +356,63 @@ class ConsolePortTemplateFilter(DeviceTypeComponentFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ConsolePortTemplate
|
model = ConsolePortTemplate
|
||||||
fields = ['name']
|
fields = ['id', 'name']
|
||||||
|
|
||||||
|
|
||||||
class ConsoleServerPortTemplateFilter(DeviceTypeComponentFilterSet):
|
class ConsoleServerPortTemplateFilter(DeviceTypeComponentFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ConsoleServerPortTemplate
|
model = ConsoleServerPortTemplate
|
||||||
fields = ['name']
|
fields = ['id', 'name']
|
||||||
|
|
||||||
|
|
||||||
class PowerPortTemplateFilter(DeviceTypeComponentFilterSet):
|
class PowerPortTemplateFilter(DeviceTypeComponentFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PowerPortTemplate
|
model = PowerPortTemplate
|
||||||
fields = ['name']
|
fields = ['id', 'name', 'maximum_draw', 'allocated_draw']
|
||||||
|
|
||||||
|
|
||||||
class PowerOutletTemplateFilter(DeviceTypeComponentFilterSet):
|
class PowerOutletTemplateFilter(DeviceTypeComponentFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PowerOutletTemplate
|
model = PowerOutletTemplate
|
||||||
fields = ['name']
|
fields = ['id', 'name', 'feed_leg']
|
||||||
|
|
||||||
|
|
||||||
class InterfaceTemplateFilter(DeviceTypeComponentFilterSet):
|
class InterfaceTemplateFilter(DeviceTypeComponentFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = InterfaceTemplate
|
model = InterfaceTemplate
|
||||||
fields = ['name', 'type', 'mgmt_only']
|
fields = ['id', 'name', 'type', 'mgmt_only']
|
||||||
|
|
||||||
|
|
||||||
class FrontPortTemplateFilter(DeviceTypeComponentFilterSet):
|
class FrontPortTemplateFilter(DeviceTypeComponentFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = FrontPortTemplate
|
model = FrontPortTemplate
|
||||||
fields = ['name', 'type']
|
fields = ['id', 'name', 'type']
|
||||||
|
|
||||||
|
|
||||||
class RearPortTemplateFilter(DeviceTypeComponentFilterSet):
|
class RearPortTemplateFilter(DeviceTypeComponentFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RearPortTemplate
|
model = RearPortTemplate
|
||||||
fields = ['name', 'type']
|
fields = ['id', 'name', 'type', 'positions']
|
||||||
|
|
||||||
|
|
||||||
class DeviceBayTemplateFilter(DeviceTypeComponentFilterSet):
|
class DeviceBayTemplateFilter(DeviceTypeComponentFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = DeviceBayTemplate
|
model = DeviceBayTemplate
|
||||||
fields = ['name']
|
fields = ['id', 'name']
|
||||||
|
|
||||||
|
|
||||||
class DeviceRoleFilter(NameSlugSearchFilterSet):
|
class DeviceRoleFilter(NameSlugSearchFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = DeviceRole
|
model = DeviceRole
|
||||||
fields = ['name', 'slug', 'color', 'vm_role']
|
fields = ['id', 'name', 'slug', 'color', 'vm_role']
|
||||||
|
|
||||||
|
|
||||||
class PlatformFilter(NameSlugSearchFilterSet):
|
class PlatformFilter(NameSlugSearchFilterSet):
|
||||||
@ -431,7 +430,7 @@ class PlatformFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Platform
|
model = Platform
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug', 'napalm_driver']
|
||||||
|
|
||||||
|
|
||||||
class DeviceFilter(CustomFieldFilterSet):
|
class DeviceFilter(CustomFieldFilterSet):
|
||||||
@ -485,8 +484,6 @@ class DeviceFilter(CustomFieldFilterSet):
|
|||||||
to_field_name='slug',
|
to_field_name='slug',
|
||||||
label='Platform (slug)',
|
label='Platform (slug)',
|
||||||
)
|
)
|
||||||
name = NullableCharFieldFilter()
|
|
||||||
asset_tag = NullableCharFieldFilter()
|
|
||||||
region_id = TreeNodeMultipleChoiceFilter(
|
region_id = TreeNodeMultipleChoiceFilter(
|
||||||
queryset=Region.objects.all(),
|
queryset=Region.objects.all(),
|
||||||
field_name='site__region__in',
|
field_name='site__region__in',
|
||||||
@ -581,7 +578,7 @@ class DeviceFilter(CustomFieldFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Device
|
model = Device
|
||||||
fields = ['id', 'serial', 'face']
|
fields = ['id', 'name', 'serial', 'asset_tag', 'face', 'vc_position', 'vc_priority']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
@ -672,7 +669,7 @@ class ConsolePortFilter(DeviceComponentFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ConsolePort
|
model = ConsolePort
|
||||||
fields = ['name', 'description', 'connection_status']
|
fields = ['id', 'name', 'description', 'connection_status']
|
||||||
|
|
||||||
|
|
||||||
class ConsoleServerPortFilter(DeviceComponentFilterSet):
|
class ConsoleServerPortFilter(DeviceComponentFilterSet):
|
||||||
@ -684,7 +681,7 @@ class ConsoleServerPortFilter(DeviceComponentFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ConsoleServerPort
|
model = ConsoleServerPort
|
||||||
fields = ['name', 'description', 'connection_status']
|
fields = ['id', 'name', 'description', 'connection_status']
|
||||||
|
|
||||||
|
|
||||||
class PowerPortFilter(DeviceComponentFilterSet):
|
class PowerPortFilter(DeviceComponentFilterSet):
|
||||||
@ -696,7 +693,7 @@ class PowerPortFilter(DeviceComponentFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PowerPort
|
model = PowerPort
|
||||||
fields = ['name', 'description', 'connection_status']
|
fields = ['id', 'name', 'maximum_draw', 'allocated_draw', 'description', 'connection_status']
|
||||||
|
|
||||||
|
|
||||||
class PowerOutletFilter(DeviceComponentFilterSet):
|
class PowerOutletFilter(DeviceComponentFilterSet):
|
||||||
@ -708,7 +705,7 @@ class PowerOutletFilter(DeviceComponentFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PowerOutlet
|
model = PowerOutlet
|
||||||
fields = ['name', 'description', 'connection_status']
|
fields = ['id', 'name', 'feed_leg', 'description', 'connection_status']
|
||||||
|
|
||||||
|
|
||||||
class InterfaceFilter(django_filters.FilterSet):
|
class InterfaceFilter(django_filters.FilterSet):
|
||||||
@ -763,7 +760,7 @@ class InterfaceFilter(django_filters.FilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = ['name', 'connection_status', 'type', 'enabled', 'mtu', 'mgmt_only', 'description']
|
fields = ['id', 'name', 'connection_status', 'type', 'enabled', 'mtu', 'mgmt_only', 'mode', 'description']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
@ -827,7 +824,7 @@ class FrontPortFilter(DeviceComponentFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = FrontPort
|
model = FrontPort
|
||||||
fields = ['name', 'type', 'description']
|
fields = ['id', 'name', 'type', 'description']
|
||||||
|
|
||||||
|
|
||||||
class RearPortFilter(DeviceComponentFilterSet):
|
class RearPortFilter(DeviceComponentFilterSet):
|
||||||
@ -839,14 +836,14 @@ class RearPortFilter(DeviceComponentFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RearPort
|
model = RearPort
|
||||||
fields = ['name', 'type', 'description']
|
fields = ['id', 'name', 'type', 'positions', 'description']
|
||||||
|
|
||||||
|
|
||||||
class DeviceBayFilter(DeviceComponentFilterSet):
|
class DeviceBayFilter(DeviceComponentFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = DeviceBay
|
model = DeviceBay
|
||||||
fields = ['name', 'description']
|
fields = ['id', 'name', 'description']
|
||||||
|
|
||||||
|
|
||||||
class InventoryItemFilter(DeviceComponentFilterSet):
|
class InventoryItemFilter(DeviceComponentFilterSet):
|
||||||
@ -877,11 +874,10 @@ class InventoryItemFilter(DeviceComponentFilterSet):
|
|||||||
to_field_name='slug',
|
to_field_name='slug',
|
||||||
label='Manufacturer (slug)',
|
label='Manufacturer (slug)',
|
||||||
)
|
)
|
||||||
asset_tag = NullableCharFieldFilter()
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = InventoryItem
|
model = InventoryItem
|
||||||
fields = ['name', 'part_id', 'serial', 'asset_tag', 'discovered']
|
fields = ['id', 'name', 'part_id', 'serial', 'asset_tag', 'discovered']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
@ -927,7 +923,7 @@ class VirtualChassisFilter(django_filters.FilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VirtualChassis
|
model = VirtualChassis
|
||||||
fields = ['domain']
|
fields = ['id', 'domain']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
@ -947,6 +943,9 @@ class CableFilter(django_filters.FilterSet):
|
|||||||
type = django_filters.MultipleChoiceFilter(
|
type = django_filters.MultipleChoiceFilter(
|
||||||
choices=CABLE_TYPE_CHOICES
|
choices=CABLE_TYPE_CHOICES
|
||||||
)
|
)
|
||||||
|
status = django_filters.MultipleChoiceFilter(
|
||||||
|
choices=CONNECTION_STATUS_CHOICES
|
||||||
|
)
|
||||||
color = django_filters.MultipleChoiceFilter(
|
color = django_filters.MultipleChoiceFilter(
|
||||||
choices=COLOR_CHOICES
|
choices=COLOR_CHOICES
|
||||||
)
|
)
|
||||||
@ -961,7 +960,7 @@ class CableFilter(django_filters.FilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Cable
|
model = Cable
|
||||||
fields = ['type', 'status', 'color', 'length', 'length_unit']
|
fields = ['id', 'label', 'length', 'length_unit']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
|
@ -56,6 +56,10 @@ class AggregateFilter(CustomFieldFilterSet):
|
|||||||
method='search',
|
method='search',
|
||||||
label='Search',
|
label='Search',
|
||||||
)
|
)
|
||||||
|
prefix = django_filters.CharFilter(
|
||||||
|
method='filter_prefix',
|
||||||
|
label='Prefix',
|
||||||
|
)
|
||||||
rir_id = django_filters.ModelMultipleChoiceFilter(
|
rir_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=RIR.objects.all(),
|
queryset=RIR.objects.all(),
|
||||||
label='RIR (ID)',
|
label='RIR (ID)',
|
||||||
@ -83,6 +87,15 @@ class AggregateFilter(CustomFieldFilterSet):
|
|||||||
pass
|
pass
|
||||||
return queryset.filter(qs_filter)
|
return queryset.filter(qs_filter)
|
||||||
|
|
||||||
|
def filter_prefix(self, queryset, name, value):
|
||||||
|
if not value.strip():
|
||||||
|
return queryset
|
||||||
|
try:
|
||||||
|
query = str(netaddr.IPNetwork(value).cidr)
|
||||||
|
return queryset.filter(prefix=query)
|
||||||
|
except ValidationError:
|
||||||
|
return queryset.none()
|
||||||
|
|
||||||
|
|
||||||
class RoleFilter(NameSlugSearchFilterSet):
|
class RoleFilter(NameSlugSearchFilterSet):
|
||||||
q = django_filters.CharFilter(
|
q = django_filters.CharFilter(
|
||||||
@ -92,7 +105,7 @@ class RoleFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Role
|
model = Role
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class PrefixFilter(CustomFieldFilterSet):
|
class PrefixFilter(CustomFieldFilterSet):
|
||||||
@ -372,7 +385,7 @@ class VLANGroupFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VLANGroup
|
model = VLANGroup
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class VLANFilter(CustomFieldFilterSet):
|
class VLANFilter(CustomFieldFilterSet):
|
||||||
@ -470,7 +483,7 @@ class ServiceFilter(django_filters.FilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Service
|
model = Service
|
||||||
fields = ['name', 'protocol', 'port']
|
fields = ['id', 'name', 'protocol', 'port']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
|
@ -11,7 +11,7 @@ class SecretRoleFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SecretRole
|
model = SecretRole
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class SecretFilter(CustomFieldFilterSet):
|
class SecretFilter(CustomFieldFilterSet):
|
||||||
|
@ -10,7 +10,7 @@ class TenantGroupFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TenantGroup
|
model = TenantGroup
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class TenantFilter(CustomFieldFilterSet):
|
class TenantFilter(CustomFieldFilterSet):
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from netaddr import EUI
|
from netaddr import EUI
|
||||||
from netaddr.core import AddrFormatError
|
from netaddr.core import AddrFormatError
|
||||||
@ -16,14 +15,14 @@ class ClusterTypeFilter(NameSlugSearchFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ClusterType
|
model = ClusterType
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class ClusterGroupFilter(NameSlugSearchFilterSet):
|
class ClusterGroupFilter(NameSlugSearchFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ClusterGroup
|
model = ClusterGroup
|
||||||
fields = ['name', 'slug']
|
fields = ['id', 'name', 'slug']
|
||||||
|
|
||||||
|
|
||||||
class ClusterFilter(CustomFieldFilterSet):
|
class ClusterFilter(CustomFieldFilterSet):
|
||||||
@ -167,7 +166,7 @@ class VirtualMachineFilter(CustomFieldFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VirtualMachine
|
model = VirtualMachine
|
||||||
fields = ['id', 'name', 'cluster']
|
fields = ['id', 'name', 'cluster', 'vcpus', 'memory', 'disk']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
@ -201,7 +200,7 @@ class InterfaceFilter(django_filters.FilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = ['name', 'enabled', 'mtu']
|
fields = ['id', 'name', 'enabled', 'mtu']
|
||||||
|
|
||||||
def _mac_address(self, queryset, name, value):
|
def _mac_address(self, queryset, name, value):
|
||||||
value = value.strip()
|
value = value.strip()
|
||||||
|
@ -464,7 +464,7 @@ class VirtualMachineTest(APITestCase):
|
|||||||
def test_config_context_included_by_default_in_list_view(self):
|
def test_config_context_included_by_default_in_list_view(self):
|
||||||
|
|
||||||
url = reverse('virtualization-api:virtualmachine-list')
|
url = reverse('virtualization-api:virtualmachine-list')
|
||||||
url = '{}?id__in={}'.format(url, self.virtualmachine_with_context_data.pk)
|
url = '{}?id={}'.format(url, self.virtualmachine_with_context_data.pk)
|
||||||
response = self.client.get(url, **self.header)
|
response = self.client.get(url, **self.header)
|
||||||
|
|
||||||
self.assertEqual(response.data['results'][0].get('config_context', {}).get('A'), 1)
|
self.assertEqual(response.data['results'][0].get('config_context', {}).get('A'), 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user