Skip to content

Commit

Permalink
Remove drf_yasg, Remove Nested Serializers, add max_version to __init__
Browse files Browse the repository at this point in the history
  • Loading branch information
renatoalmeidaoliveira committed Sep 8, 2024
1 parent a79a5ca commit 9f35f95
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 26 deletions.
3 changes: 2 additions & 1 deletion nb_service/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ class NbserviceConfig(PluginConfig):
verbose_name = 'Service Management'
description = 'ITSM Service Management'
version = __version__
author = 'Renato Almeida de Oliveira'
author = 'Renato Almeida de Oliveira Zaroubin'
author_email = '[email protected]'
min_version = "4.0.0"
max_version = "4.0.99"
required_settings = []
default_settings = {}

Expand Down
28 changes: 9 additions & 19 deletions nb_service/api/serializers.py
Original file line number Diff line number Diff line change
@@ -1,39 +1,30 @@
from drf_yasg.utils import swagger_serializer_method
from rest_framework import serializers
from django.contrib.contenttypes.models import ContentType

from netbox.api.fields import ChoiceField, ContentTypeField
from netbox.api.serializers import WritableNestedSerializer

from utilities.api import get_serializer_for_model
from tenancy.api.nested_serializers import NestedTenantSerializer
from tenancy.api.serializers import TenantSerializer

from ipam.choices import ServiceProtocolChoices
from dcim.api.nested_serializers import NestedDeviceSerializer
from virtualization.api.nested_serializers import NestedVirtualMachineSerializer
from dcim.api.serializers import DeviceSerializer
from virtualization.api.serializers import VirtualMachineSerializer

from netbox.api.serializers import NetBoxModelSerializer

from nb_service import models
from nb_service import choices


class NestedApplicationSerializer(WritableNestedSerializer):
id = serializers.IntegerField(read_only=True)
name = serializers.CharField()

class Meta:
model = models.Application
fields = ["id", "name", "display"]


class ApplicationSerializer(NetBoxModelSerializer):
id = serializers.IntegerField(read_only=True)
name = serializers.CharField()
display = serializers.SerializerMethodField("get_display")
protocol = ChoiceField(choices=ServiceProtocolChoices, required=False)
version = serializers.CharField()
devices = NestedDeviceSerializer(many=True, required=False, allow_null=True)
vm = NestedVirtualMachineSerializer(many=True, required=False, allow_null=True)
devices = DeviceSerializer(many=True, required=False, allow_null=True, nested=True)
vm = VirtualMachineSerializer(many=True, required=False, allow_null=True, nested=True)

def get_display(self, obj):
return f"{obj}"
Expand Down Expand Up @@ -102,13 +93,12 @@ class ICSerializer(serializers.Serializer):
def get_display(self, obj):
return obj.name

@swagger_serializer_method(serializer_or_field=serializers.DictField)
def get_assigned_object(self, obj):
if obj.assigned_object is None:
return None
serializer = get_serializer_for_model(obj.assigned_object, prefix="Nested")
serializer = get_serializer_for_model(obj.assigned_object)
context = {"request": self.context["request"]}
return serializer(obj.assigned_object, context=context).data
return serializer(obj.assigned_object, nested=True, context=context).data

class Meta:
model = models.IC
Expand All @@ -127,7 +117,7 @@ class ServiceSerializer(NetBoxModelSerializer):

name = serializers.CharField()
display = serializers.SerializerMethodField("get_display")
clients = NestedTenantSerializer(many=True, required=False, allow_null=True)
clients = TenantSerializer(many=True, required=False, allow_null=True, nested=True)
comments = serializers.CharField()
backup_profile = serializers.CharField(required=False)

Expand Down
5 changes: 5 additions & 0 deletions nb_service/filtersets.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ class ApplicationFilterSet(NetBoxModelFilterSet):
to_field_name="id",
)

ports = django_filters.NumberFilter(
field_name="ports",
lookup_expr="contains",
)

def search(self, queryset, name, value):

if not value.strip():
Expand Down
2 changes: 2 additions & 0 deletions nb_service/tests/application/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ class ApplicationFilterTestCase(TestCase, ChangeLoggedFilterSetTests):
queryset = Application.objects.all()
filterset = ApplicationFilterSet


@classmethod
def setUpTestData(cls):
cls.ignore_fields = [ "vm", "devices" ]
site = Site.objects.create(name="Site 1")
manufacturer = Manufacturer.objects.create(name='Manufacturer 1')
device_type = DeviceType.objects.create(manufacturer=manufacturer)
Expand Down
3 changes: 2 additions & 1 deletion nb_service/tests/service/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@
class ServiceFilterTestCase(TestCase, ChangeLoggedFilterSetTests):
queryset = Service.objects.all()
filterset = ServiceFilterSet

@classmethod
def setUpTestData(cls):
cls.ignore_fields = ( "clients", )
cls.tenants = (
Tenant(name="Tenant 1", slug="tenant-1"),
Tenant(name="Tenant 2", slug="tenant-2"),
Expand Down
2 changes: 1 addition & 1 deletion nb_service/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "3.0.0"
__version__ = "3.0.1"
6 changes: 2 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,9 @@ def get_version(rel_path):
long_description=long_description,
long_description_content_type="text/markdown",
url='https://github.com/renatoalmeidaoliveira/nbservice',
author='Renato Almeida de Oliveira',
author='Renato Almeida de Oliveira Zaroubin',
author_email='[email protected]',
install_requires=[
'drf_yasg',
],
install_requires=[],
packages=find_packages(),
include_package_data=True,
package_data={
Expand Down

0 comments on commit 9f35f95

Please sign in to comment.