mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 09:16:10 -06:00
9608 update yasg -> spectacular
This commit is contained in:
parent
a949de8d5f
commit
8dcd3eda28
@ -3,6 +3,7 @@ import decimal
|
|||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
from drf_spectacular.utils import extend_schema_field
|
from drf_spectacular.utils import extend_schema_field
|
||||||
|
from drf_spectacular.types import OpenApiTypes
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from timezone_field.rest_framework import TimeZoneSerializerField
|
from timezone_field.rest_framework import TimeZoneSerializerField
|
||||||
|
|
||||||
@ -231,6 +232,7 @@ class RackUnitSerializer(serializers.Serializer):
|
|||||||
occupied = serializers.BooleanField(read_only=True)
|
occupied = serializers.BooleanField(read_only=True)
|
||||||
display = serializers.SerializerMethodField(read_only=True)
|
display = serializers.SerializerMethodField(read_only=True)
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.STR)
|
||||||
def get_display(self, obj):
|
def get_display(self, obj):
|
||||||
return obj['name']
|
return obj['name']
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
from drf_spectacular.utils import extend_schema_field
|
||||||
|
from drf_spectacular.types import OpenApiTypes
|
||||||
|
|
||||||
from extras.filtersets import LocalConfigContextFilterSet
|
from extras.filtersets import LocalConfigContextFilterSet
|
||||||
from ipam.models import ASN, L2VPN, IPAddress, VRF
|
from ipam.models import ASN, L2VPN, IPAddress, VRF
|
||||||
|
@ -367,6 +367,7 @@ class IPRangeAvailableIPAddressesView(AvailableIPAddressesView):
|
|||||||
|
|
||||||
class AvailableVLANsView(ObjectValidationMixin, APIView):
|
class AvailableVLANsView(ObjectValidationMixin, APIView):
|
||||||
queryset = VLAN.objects.all()
|
queryset = VLAN.objects.all()
|
||||||
|
filterset_class = serializers.VLANSerializer # for drf-spectacular
|
||||||
|
|
||||||
@extend_schema(methods=["get"], responses={200: serializers.AvailableVLANSerializer(many=True)})
|
@extend_schema(methods=["get"], responses={200: serializers.AvailableVLANSerializer(many=True)})
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
from django.db.models import ManyToManyField
|
from django.db.models import ManyToManyField
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
from drf_spectacular.utils import extend_schema_field
|
||||||
|
from drf_spectacular.types import OpenApiTypes
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'BaseModelSerializer',
|
'BaseModelSerializer',
|
||||||
@ -10,6 +12,7 @@ __all__ = (
|
|||||||
class BaseModelSerializer(serializers.ModelSerializer):
|
class BaseModelSerializer(serializers.ModelSerializer):
|
||||||
display = serializers.SerializerMethodField(read_only=True)
|
display = serializers.SerializerMethodField(read_only=True)
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.STR)
|
||||||
def get_display(self, obj):
|
def get_display(self, obj):
|
||||||
return str(obj)
|
return str(obj)
|
||||||
|
|
||||||
|
@ -574,6 +574,10 @@ REST_FRAMEWORK = {
|
|||||||
#
|
#
|
||||||
|
|
||||||
SPECTACULAR_SETTINGS = {
|
SPECTACULAR_SETTINGS = {
|
||||||
|
"TITLE": "NetBox API",
|
||||||
|
"DESCRIPTION": "API to access NetBox",
|
||||||
|
"LICENSE": {"name": "Apache v2 License"},
|
||||||
|
"VERSION": VERSION,
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth.models import Group, User
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from drf_spectacular.utils import extend_schema_field
|
from drf_spectacular.utils import extend_schema_field
|
||||||
|
from drf_spectacular.types import OpenApiTypes
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from netbox.api.fields import ContentTypeField
|
from netbox.api.fields import ContentTypeField
|
||||||
@ -30,6 +31,7 @@ class NestedUserSerializer(WritableNestedSerializer):
|
|||||||
model = User
|
model = User
|
||||||
fields = ['id', 'url', 'display', 'username']
|
fields = ['id', 'url', 'display', 'username']
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.STR)
|
||||||
def get_display(self, obj):
|
def get_display(self, obj):
|
||||||
if full_name := obj.get_full_name():
|
if full_name := obj.get_full_name():
|
||||||
return f"{obj.username} ({full_name})"
|
return f"{obj.username} ({full_name})"
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth.models import Group, User
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
from drf_spectacular.utils import extend_schema_field
|
||||||
|
from drf_spectacular.types import OpenApiTypes
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from netbox.api.fields import ContentTypeField, IPNetworkSerializer, SerializedPKRelatedField
|
from netbox.api.fields import ContentTypeField, IPNetworkSerializer, SerializedPKRelatedField
|
||||||
@ -47,6 +49,7 @@ class UserSerializer(ValidatedModelSerializer):
|
|||||||
|
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.STR)
|
||||||
def get_display(self, obj):
|
def get_display(self, obj):
|
||||||
if full_name := obj.get_full_name():
|
if full_name := obj.get_full_name():
|
||||||
return f"{obj.username} ({full_name})"
|
return f"{obj.username} ({full_name})"
|
||||||
|
@ -3,6 +3,8 @@ from django import forms
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django_filters.constants import EMPTY_VALUES
|
from django_filters.constants import EMPTY_VALUES
|
||||||
|
from drf_spectacular.utils import extend_schema_field
|
||||||
|
from drf_spectacular.types import OpenApiTypes
|
||||||
|
|
||||||
|
|
||||||
def multivalue_field_factory(field_class):
|
def multivalue_field_factory(field_class):
|
||||||
@ -37,26 +39,32 @@ def multivalue_field_factory(field_class):
|
|||||||
# Filters
|
# Filters
|
||||||
#
|
#
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.STR)
|
||||||
class MultiValueCharFilter(django_filters.MultipleChoiceFilter):
|
class MultiValueCharFilter(django_filters.MultipleChoiceFilter):
|
||||||
field_class = multivalue_field_factory(forms.CharField)
|
field_class = multivalue_field_factory(forms.CharField)
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.DATE)
|
||||||
class MultiValueDateFilter(django_filters.MultipleChoiceFilter):
|
class MultiValueDateFilter(django_filters.MultipleChoiceFilter):
|
||||||
field_class = multivalue_field_factory(forms.DateField)
|
field_class = multivalue_field_factory(forms.DateField)
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.DATETIME)
|
||||||
class MultiValueDateTimeFilter(django_filters.MultipleChoiceFilter):
|
class MultiValueDateTimeFilter(django_filters.MultipleChoiceFilter):
|
||||||
field_class = multivalue_field_factory(forms.DateTimeField)
|
field_class = multivalue_field_factory(forms.DateTimeField)
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.INT32)
|
||||||
class MultiValueNumberFilter(django_filters.MultipleChoiceFilter):
|
class MultiValueNumberFilter(django_filters.MultipleChoiceFilter):
|
||||||
field_class = multivalue_field_factory(forms.IntegerField)
|
field_class = multivalue_field_factory(forms.IntegerField)
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.DECIMAL)
|
||||||
class MultiValueDecimalFilter(django_filters.MultipleChoiceFilter):
|
class MultiValueDecimalFilter(django_filters.MultipleChoiceFilter):
|
||||||
field_class = multivalue_field_factory(forms.DecimalField)
|
field_class = multivalue_field_factory(forms.DecimalField)
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.TIME)
|
||||||
class MultiValueTimeFilter(django_filters.MultipleChoiceFilter):
|
class MultiValueTimeFilter(django_filters.MultipleChoiceFilter):
|
||||||
field_class = multivalue_field_factory(forms.TimeField)
|
field_class = multivalue_field_factory(forms.TimeField)
|
||||||
|
|
||||||
@ -65,6 +73,7 @@ class MACAddressFilter(django_filters.CharFilter):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.STR)
|
||||||
class MultiValueMACAddressFilter(django_filters.MultipleChoiceFilter):
|
class MultiValueMACAddressFilter(django_filters.MultipleChoiceFilter):
|
||||||
field_class = multivalue_field_factory(forms.CharField)
|
field_class = multivalue_field_factory(forms.CharField)
|
||||||
|
|
||||||
@ -75,6 +84,7 @@ class MultiValueMACAddressFilter(django_filters.MultipleChoiceFilter):
|
|||||||
return qs.none()
|
return qs.none()
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.STR)
|
||||||
class MultiValueWWNFilter(django_filters.MultipleChoiceFilter):
|
class MultiValueWWNFilter(django_filters.MultipleChoiceFilter):
|
||||||
field_class = multivalue_field_factory(forms.CharField)
|
field_class = multivalue_field_factory(forms.CharField)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user