Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions drf_admin/apps/cmdb/serializers/network_devices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
"""
@author : Wang Meng
@github : https://github.com/tianpangji
@software : PyCharm
@file : network_devices.py
@create : 2020/10/17 18:45
"""
from drf_writable_nested import WritableNestedModelSerializer
from rest_framework import serializers

from cmdb.models import NetworkDevices
from cmdb.serializers.assets import BaseAssetsSerializer


class NetworkDevicesSerializer(WritableNestedModelSerializer):
"""
网络设备序列化器
"""
asset = serializers.PrimaryKeyRelatedField(read_only=True)

class Meta:
model = NetworkDevices
fields = '__all__'

def to_representation(self, instance):
ret = super().to_representation(instance)
ret['device_type_display'] = instance.get_device_type_display()
return ret


class NetworkDevicesAssetsSerializer(BaseAssetsSerializer):
"""
网络设备资产序列化器
"""
network = NetworkDevicesSerializer()

def save(self, **kwargs):
instance = super(NetworkDevicesAssetsSerializer, self).save(**kwargs)
instance.asset_type = 'network'
instance.save()
return instance
42 changes: 42 additions & 0 deletions drf_admin/apps/cmdb/serializers/security_devices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
"""
@author : Wang Meng
@github : https://github.com/tianpangji
@software : PyCharm
@file : security_devices.py
@create : 2020/10/17 18:45
"""
from drf_writable_nested import WritableNestedModelSerializer
from rest_framework import serializers

from cmdb.models import SecurityDevices
from cmdb.serializers.assets import BaseAssetsSerializer


class SecurityDevicesSerializer(WritableNestedModelSerializer):
"""
安全设备序列化器
"""
asset = serializers.PrimaryKeyRelatedField(read_only=True)

class Meta:
model = SecurityDevices
fields = '__all__'

def to_representation(self, instance):
ret = super().to_representation(instance)
ret['device_type_display'] = instance.get_device_type_display()
return ret


class SecurityDevicesAssetsSerializer(BaseAssetsSerializer):
"""
安全设备资产序列化器
"""
security = SecurityDevicesSerializer()

def save(self, **kwargs):
instance = super(SecurityDevicesAssetsSerializer, self).save(**kwargs)
instance.asset_type = 'security'
instance.save()
return instance
42 changes: 42 additions & 0 deletions drf_admin/apps/cmdb/serializers/storage_devices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
"""
@author : Wang Meng
@github : https://github.com/tianpangji
@software : PyCharm
@file : storage_devices.py
@create : 2020/10/17 18:45
"""
from drf_writable_nested import WritableNestedModelSerializer
from rest_framework import serializers

from cmdb.models import StorageDevices
from cmdb.serializers.assets import BaseAssetsSerializer


class StorageDevicesSerializer(WritableNestedModelSerializer):
"""
存储设备序列化器
"""
asset = serializers.PrimaryKeyRelatedField(read_only=True)

class Meta:
model = StorageDevices
fields = '__all__'

def to_representation(self, instance):
ret = super().to_representation(instance)
ret['device_type_display'] = instance.get_device_type_display()
return ret


class StorageDevicesAssetsSerializer(BaseAssetsSerializer):
"""
存储设备资产序列化器
"""
storage = StorageDevicesSerializer()

def save(self, **kwargs):
instance = super(StorageDevicesAssetsSerializer, self).save(**kwargs)
instance.asset_type = 'storage'
instance.save()
return instance
8 changes: 7 additions & 1 deletion drf_admin/apps/cmdb/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,20 @@
"""
from django.urls import path, include

from cmdb.views import servers, assets
from cmdb.views import servers, assets, network_devices, storage_devices, security_devices
from drf_admin.utils import routers

router = routers.AdminRouter()
router.register(r'servers', servers.ServersViewSet, basename="servers") # 服务器管理
router.register(r'network-devices', network_devices.NetworkDevicesViewSet, basename="network-devices") # 网络设备管理
router.register(r'storage-devices', storage_devices.StorageDevicesViewSet, basename="storage-devices") # 存储设备管理
router.register(r'security-devices', security_devices.SecurityDevicesViewSet, basename="security-devices") # 安全设备管理
urlpatterns = [
path('servers/system-type/', servers.ServersSystemTypeAPIView.as_view()),
path('servers/type/', servers.ServersTypeAPIView.as_view()),
path('network-devices/type/', network_devices.NetworkDevicesTypeAPIView.as_view()),
path('storage-devices/type/', storage_devices.StorageDevicesTypeAPIView.as_view()),
path('security-devices/type/', security_devices.SecurityDevicesTypeAPIView.as_view()),
path('assets/status/', assets.AssetsStatusAPIView.as_view()),
path('assets/admin/', assets.AssetsAdminListAPIView.as_view()),
path('assets/cabinets/', assets.IDCCabinetsTreeAPIView.as_view()),
Expand Down
72 changes: 72 additions & 0 deletions drf_admin/apps/cmdb/views/network_devices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# -*- coding: utf-8 -*-
"""
@author : Wang Meng
@github : https://github.com/tianpangji
@software : PyCharm
@file : network_devices.py
@create : 2020/10/17 18:45
"""
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter

from cmdb.models import NetworkDevices
from cmdb.serializers.network_devices import NetworkDevicesAssetsSerializer
from cmdb.views.assets import BaseAssetsAPIView
from drf_admin.utils.views import ChoiceAPIView


class NetworkDevicesViewSet(BaseAssetsAPIView):
"""
create:
网络设备--新增

网络设备新增, status: 201(成功), return: 新增网络设备信息

destroy:
网络设备--删除

网络设备删除, status: 204(成功), return: None

multiple_delete:
网络设备--批量删除

网络设备批量删除, status: 204(成功), return: None

update:
网络设备--修改

网络设备修改, status: 200(成功), return: 修改增网络设备信息

partial_update:
网络设备--局部修改

网络设备局部修改, status: 200(成功), return: 修改增网络设备信息

list:
网络设备--获取列表

网络设备列表信息, status: 200(成功), return: 网络设备信息列表

retrieve:
网络设备--网络设备详情

网络设备详情信息, status: 200(成功), return: 单个网络设备信息详情
"""
serializer_class = NetworkDevicesAssetsSerializer
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filter_fields = ['asset_status']
search_fields = ('name', 'sn', 'manage_ip')
ordering_fields = ('id', 'name', 'sn')

def get_queryset(self, **kwargs):
return super().get_queryset(asset_type='network')


class NetworkDevicesTypeAPIView(ChoiceAPIView):
"""
get:
网络设备--models类型列表

网络设备models中的类型列表信息, status: 200(成功), return: 网络设备models中的类型列表
"""
choice = NetworkDevices.device_type_choice
72 changes: 72 additions & 0 deletions drf_admin/apps/cmdb/views/security_devices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# -*- coding: utf-8 -*-
"""
@author : Wang Meng
@github : https://github.com/tianpangji
@software : PyCharm
@file : security_devices.py
@create : 2020/10/17 18:45
"""
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter

from cmdb.models import SecurityDevices
from cmdb.serializers.security_devices import SecurityDevicesAssetsSerializer
from cmdb.views.assets import BaseAssetsAPIView
from drf_admin.utils.views import ChoiceAPIView


class SecurityDevicesViewSet(BaseAssetsAPIView):
"""
create:
安全设备--新增

安全设备新增, status: 201(成功), return: 新增安全设备信息

destroy:
安全设备--删除

安全设备删除, status: 204(成功), return: None

multiple_delete:
安全设备--批量删除

安全设备批量删除, status: 204(成功), return: None

update:
安全设备--修改

安全设备修改, status: 200(成功), return: 修改增安全设备信息

partial_update:
安全设备--局部修改

安全设备局部修改, status: 200(成功), return: 修改增安全设备信息

list:
安全设备--获取列表

安全设备列表信息, status: 200(成功), return: 安全设备信息列表

retrieve:
安全设备--安全设备详情

安全设备详情信息, status: 200(成功), return: 单个安全设备信息详情
"""
serializer_class = SecurityDevicesAssetsSerializer
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filter_fields = ['asset_status']
search_fields = ('name', 'sn', 'manage_ip')
ordering_fields = ('id', 'name', 'sn')

def get_queryset(self, **kwargs):
return super().get_queryset(asset_type='security')


class SecurityDevicesTypeAPIView(ChoiceAPIView):
"""
get:
安全设备--models类型列表

安全设备models中的类型列表信息, status: 200(成功), return: 安全设备models中的类型列表
"""
choice = SecurityDevices.device_type_choice
72 changes: 72 additions & 0 deletions drf_admin/apps/cmdb/views/storage_devices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# -*- coding: utf-8 -*-
"""
@author : Wang Meng
@github : https://github.com/tianpangji
@software : PyCharm
@file : storage_devices.py
@create : 2020/10/17 18:45
"""
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter

from cmdb.models import StorageDevices
from cmdb.serializers.storage_devices import StorageDevicesAssetsSerializer
from cmdb.views.assets import BaseAssetsAPIView
from drf_admin.utils.views import ChoiceAPIView


class StorageDevicesViewSet(BaseAssetsAPIView):
"""
create:
存储设备--新增

存储设备新增, status: 201(成功), return: 新增存储设备信息

destroy:
存储设备--删除

存储设备删除, status: 204(成功), return: None

multiple_delete:
存储设备--批量删除

存储设备批量删除, status: 204(成功), return: None

update:
存储设备--修改

存储设备修改, status: 200(成功), return: 修改增存储设备信息

partial_update:
存储设备--局部修改

存储设备局部修改, status: 200(成功), return: 修改增存储设备信息

list:
存储设备--获取列表

存储设备列表信息, status: 200(成功), return: 存储设备信息列表

retrieve:
存储设备--存储设备详情

存储设备详情信息, status: 200(成功), return: 单个存储设备信息详情
"""
serializer_class = StorageDevicesAssetsSerializer
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filter_fields = ['asset_status']
search_fields = ('name', 'sn', 'manage_ip')
ordering_fields = ('id', 'name', 'sn')

def get_queryset(self, **kwargs):
return super().get_queryset(asset_type='storage')


class StorageDevicesTypeAPIView(ChoiceAPIView):
"""
get:
存储设备--models类型列表

存储设备models中的类型列表信息, status: 200(成功), return: 存储设备models中的类型列表
"""
choice = StorageDevices.device_type_choice
Loading