mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 09:16:10 -06:00
9608 fix schema errors
This commit is contained in:
parent
b097ee25fc
commit
d0d13e8f6c
@ -10,6 +10,7 @@ class DCIMConfig(AppConfig):
|
||||
def ready(self):
|
||||
from . import signals, search
|
||||
from .models import CableTermination
|
||||
from . import schema # noqa: E402
|
||||
|
||||
# Register denormalized fields
|
||||
denormalized.register(CableTermination, '_device', {
|
||||
|
14
netbox/dcim/schema.py
Normal file
14
netbox/dcim/schema.py
Normal file
@ -0,0 +1,14 @@
|
||||
from drf_spectacular.extensions import (
|
||||
OpenApiSerializerFieldExtension
|
||||
)
|
||||
from drf_spectacular.extensions import OpenApiViewExtension
|
||||
from drf_spectacular.utils import extend_schema
|
||||
from drf_spectacular.plumbing import build_basic_type
|
||||
from drf_spectacular.types import OpenApiTypes
|
||||
|
||||
|
||||
class FixTimeZoneSerializerField(OpenApiSerializerFieldExtension):
|
||||
target_class = 'timezone_field.rest_framework.TimeZoneSerializerField'
|
||||
|
||||
def map_serializer_field(self, auto_schema, direction):
|
||||
return build_basic_type(OpenApiTypes.STR)
|
@ -1,4 +1,6 @@
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from drf_spectacular.utils import extend_schema_field
|
||||
from drf_spectacular.types import OpenApiTypes
|
||||
from rest_framework.fields import Field
|
||||
from rest_framework.serializers import ValidationError
|
||||
|
||||
@ -36,6 +38,7 @@ class CustomFieldDefaultValues:
|
||||
return value
|
||||
|
||||
|
||||
@extend_schema_field(OpenApiTypes.OBJECT)
|
||||
class CustomFieldsDataField(Field):
|
||||
|
||||
def _get_custom_fields(self):
|
||||
|
@ -9,6 +9,7 @@ from dcim.api.nested_serializers import (
|
||||
)
|
||||
from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup
|
||||
from drf_spectacular.utils import extend_schema_field
|
||||
from drf_spectacular.types import OpenApiTypes
|
||||
from extras.choices import *
|
||||
from extras.models import *
|
||||
from extras.utils import FeatureQuery
|
||||
@ -97,6 +98,7 @@ class CustomFieldSerializer(ValidatedModelSerializer):
|
||||
'validation_minimum', 'validation_maximum', 'validation_regex', 'choices', 'created', 'last_updated',
|
||||
]
|
||||
|
||||
@extend_schema_field(OpenApiTypes.STR)
|
||||
def get_data_type(self, obj):
|
||||
types = CustomFieldTypeChoices
|
||||
if obj.type == types.TYPE_INTEGER:
|
||||
|
@ -1,11 +1,14 @@
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
from drf_spectacular.utils import extend_schema_field
|
||||
from drf_spectacular.types import OpenApiTypes
|
||||
from netaddr import AddrFormatError, IPNetwork
|
||||
|
||||
from . import lookups, validators
|
||||
from .formfields import IPNetworkFormField
|
||||
|
||||
|
||||
@extend_schema_field(OpenApiTypes.STR)
|
||||
class BaseIPField(models.Field):
|
||||
|
||||
def python_type(self):
|
||||
@ -67,6 +70,7 @@ IPNetworkField.register_lookup(lookups.NetFamily)
|
||||
IPNetworkField.register_lookup(lookups.NetMaskLength)
|
||||
|
||||
|
||||
@extend_schema_field(OpenApiTypes.STR)
|
||||
class IPAddressField(BaseIPField):
|
||||
"""
|
||||
IP address (host address and mask)
|
||||
|
@ -1,4 +1,6 @@
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from drf_spectacular.utils import extend_schema_field
|
||||
from drf_spectacular.types import OpenApiTypes
|
||||
from netaddr import IPNetwork
|
||||
from rest_framework import serializers
|
||||
from rest_framework.exceptions import ValidationError
|
||||
@ -12,6 +14,7 @@ __all__ = (
|
||||
)
|
||||
|
||||
|
||||
@extend_schema_field(OpenApiTypes.OBJECT)
|
||||
class ChoiceField(serializers.Field):
|
||||
"""
|
||||
Represent a ChoiceField as {'value': <DB value>, 'label': <string>}. Accepts a single value on write.
|
||||
@ -86,6 +89,7 @@ class ChoiceField(serializers.Field):
|
||||
return self._choices
|
||||
|
||||
|
||||
@extend_schema_field(OpenApiTypes.STR)
|
||||
class ContentTypeField(RelatedField):
|
||||
"""
|
||||
Represent a ContentType as '<app_label>.<model>'
|
||||
|
@ -578,6 +578,7 @@ SPECTACULAR_SETTINGS = {
|
||||
"DESCRIPTION": "API to access NetBox",
|
||||
"LICENSE": {"name": "Apache v2 License"},
|
||||
"VERSION": VERSION,
|
||||
'COMPONENT_SPLIT_REQUEST': True,
|
||||
}
|
||||
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user