mirror of
https://github.com/netbox-community/netbox.git
synced 2025-09-06 14:23:36 -06:00
Misc cleanup
This commit is contained in:
parent
7789147f04
commit
96306dcc6f
@ -8,7 +8,7 @@ from strawberry_django import FilterLookup
|
|||||||
from core.graphql.filter_mixins import BaseObjectTypeFilterMixin, ChangeLogFilterMixin
|
from core.graphql.filter_mixins import BaseObjectTypeFilterMixin, ChangeLogFilterMixin
|
||||||
from extras import models
|
from extras import models
|
||||||
from extras.graphql.filter_mixins import TagBaseFilterMixin, CustomFieldsFilterMixin, TagsFilterMixin
|
from extras.graphql.filter_mixins import TagBaseFilterMixin, CustomFieldsFilterMixin, TagsFilterMixin
|
||||||
from netbox.graphql.filter_mixins import SyncedDataFilterMixin
|
from netbox.graphql.filter_mixins import PrimaryModelFilterMixin, SyncedDataFilterMixin
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.graphql.filters import ContentTypeFilter
|
from core.graphql.filters import ContentTypeFilter
|
||||||
@ -99,7 +99,7 @@ class ConfigContextFilter(BaseObjectTypeFilterMixin, SyncedDataFilterMixin, Chan
|
|||||||
|
|
||||||
|
|
||||||
@strawberry_django.filter_type(models.ConfigContextProfile, lookups=True)
|
@strawberry_django.filter_type(models.ConfigContextProfile, lookups=True)
|
||||||
class ConfigContextProfileFilter(BaseObjectTypeFilterMixin, SyncedDataFilterMixin, ChangeLogFilterMixin):
|
class ConfigContextProfileFilter(SyncedDataFilterMixin, PrimaryModelFilterMixin):
|
||||||
name: FilterLookup[str] = strawberry_django.filter_field()
|
name: FilterLookup[str] = strawberry_django.filter_field()
|
||||||
description: FilterLookup[str] = strawberry_django.filter_field()
|
description: FilterLookup[str] = strawberry_django.filter_field()
|
||||||
tags: Annotated['TagFilter', strawberry.lazy('extras.graphql.filters')] | None = strawberry_django.filter_field()
|
tags: Annotated['TagFilter', strawberry.lazy('extras.graphql.filters')] | None = strawberry_django.filter_field()
|
||||||
|
@ -60,13 +60,6 @@ class ConfigContextProfile(SyncedDataMixin, PrimaryModel):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def get_absolute_url(self):
|
|
||||||
return reverse('extras:configcontextprofile', kwargs={'pk': self.pk})
|
|
||||||
|
|
||||||
@property
|
|
||||||
def docs_url(self):
|
|
||||||
return f'{settings.STATIC_URL}docs/models/extras/configcontextprofile/'
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigContext(SyncedDataMixin, CloningMixin, CustomLinksMixin, ChangeLoggedModel):
|
class ConfigContext(SyncedDataMixin, CloningMixin, CustomLinksMixin, ChangeLoggedModel):
|
||||||
"""
|
"""
|
||||||
|
@ -559,7 +559,7 @@ class ConfigContextProfileTable(NetBoxTable):
|
|||||||
class Meta(NetBoxTable.Meta):
|
class Meta(NetBoxTable.Meta):
|
||||||
model = ConfigContextProfile
|
model = ConfigContextProfile
|
||||||
fields = (
|
fields = (
|
||||||
'pk', 'id', 'name', 'description', 'tags', 'created', 'last_updated',
|
'pk', 'id', 'name', 'description', 'comments', 'tags', 'created', 'last_updated',
|
||||||
)
|
)
|
||||||
default_columns = ('pk', 'name', 'description')
|
default_columns = ('pk', 'name', 'description')
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ from django.test import tag, TestCase
|
|||||||
|
|
||||||
from core.models import DataSource, ObjectType
|
from core.models import DataSource, ObjectType
|
||||||
from dcim.models import Device, DeviceRole, DeviceType, Location, Manufacturer, Platform, Region, Site, SiteGroup
|
from dcim.models import Device, DeviceRole, DeviceType, Location, Manufacturer, Platform, Region, Site, SiteGroup
|
||||||
from extras.models import ConfigContext, ConfigTemplate, Tag
|
from extras.models import ConfigContext, ConfigContextProfile, ConfigTemplate, Tag
|
||||||
from tenancy.models import Tenant, TenantGroup
|
from tenancy.models import Tenant, TenantGroup
|
||||||
from utilities.exceptions import AbortRequest
|
from utilities.exceptions import AbortRequest
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
||||||
@ -159,6 +159,32 @@ class ConfigContextTest(TestCase):
|
|||||||
}
|
}
|
||||||
self.assertEqual(device.get_config_context(), expected_data)
|
self.assertEqual(device.get_config_context(), expected_data)
|
||||||
|
|
||||||
|
def test_schema_validation(self):
|
||||||
|
"""
|
||||||
|
Check that the JSON schema defined by the assigned profile is enforced.
|
||||||
|
"""
|
||||||
|
profile = ConfigContextProfile.objects.create(
|
||||||
|
name="Config context profile 1",
|
||||||
|
schema={
|
||||||
|
"properties": {
|
||||||
|
"foo": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
# Missing required attribute
|
||||||
|
ConfigContext(name="CC1", profile=profile, data={}).clean()
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
# Invalid attribute type
|
||||||
|
ConfigContext(name="CC1", profile=profile, data={"foo": 123}).clean()
|
||||||
|
ConfigContext(name="CC1", profile=profile, data={"foo": "bar"}).clean()
|
||||||
|
|
||||||
def test_annotation_same_as_get_for_object(self):
|
def test_annotation_same_as_get_for_object(self):
|
||||||
"""
|
"""
|
||||||
This test incorporates features from all of the above tests cases to ensure
|
This test incorporates features from all of the above tests cases to ensure
|
||||||
|
Loading…
Reference in New Issue
Block a user