diff --git a/apps/assets/api/asset/__init__.py b/apps/assets/api/asset/__init__.py index f9c9ae5e6..bca1dec50 100644 --- a/apps/assets/api/asset/__init__.py +++ b/apps/assets/api/asset/__init__.py @@ -1,4 +1,7 @@ from .asset import * from .host import * from .database import * +from .web import * +from .cloud import * +from .network import * from .permission import * diff --git a/apps/assets/api/asset/asset.py b/apps/assets/api/asset/asset.py index 18325cb58..4bfd778c4 100644 --- a/apps/assets/api/asset/asset.py +++ b/apps/assets/api/asset/asset.py @@ -40,7 +40,7 @@ class AssetViewSet(SuggestionMixin, NodeFilterMixin, OrgBulkModelViewSet): filterset_class = AssetFilterSet search_fields = ("name", "ip") ordering_fields = ("name", "ip", "port") - ordering = ('name', ) + ordering = ('name',) serializer_classes = ( ('default', serializers.AssetSerializer), ('suggestion', serializers.MiniAssetSerializer), @@ -173,5 +173,3 @@ class AssetsTaskCreateApi(AssetsTaskMixin, generics.CreateAPIView): has = self.request.user.has_perm(perm_required) if not has: self.permission_denied(request) - - diff --git a/apps/assets/api/asset/cloud.py b/apps/assets/api/asset/cloud.py new file mode 100644 index 000000000..64ab6b738 --- /dev/null +++ b/apps/assets/api/asset/cloud.py @@ -0,0 +1,15 @@ +from assets.models import Cloud +from assets.serializers import CloudSerializer + +from .asset import AssetViewSet + +__all__ = ['CloudViewSet'] + + +class CloudViewSet(AssetViewSet): + model = Cloud + + def get_serializer_classes(self): + serializer_classes = super().get_serializer_classes() + serializer_classes['default'] = CloudSerializer + return serializer_classes diff --git a/apps/assets/api/asset/network.py b/apps/assets/api/asset/network.py index 15822b1e1..608a70d1a 100644 --- a/apps/assets/api/asset/network.py +++ b/apps/assets/api/asset/network.py @@ -1,13 +1,13 @@ from assets.serializers import HostSerializer -from assets.models import Network +from assets.models import Networking from .asset import AssetViewSet __all__ = ['NetworkViewSet'] class NetworkViewSet(AssetViewSet): - model = Network + model = Networking def get_serializer_classes(self): serializer_classes = super().get_serializer_classes() diff --git a/apps/assets/api/asset/web.py b/apps/assets/api/asset/web.py new file mode 100644 index 000000000..92aaeff9b --- /dev/null +++ b/apps/assets/api/asset/web.py @@ -0,0 +1,15 @@ +from assets.models import Web +from assets.serializers import WebSerializer + +from .asset import AssetViewSet + +__all__ = ['WebViewSet'] + + +class WebViewSet(AssetViewSet): + model = Web + + def get_serializer_classes(self): + serializer_classes = super().get_serializer_classes() + serializer_classes['default'] = WebSerializer + return serializer_classes diff --git a/apps/assets/serializers/asset/category.py b/apps/assets/serializers/asset/category.py index 8431b0169..e4129bb1a 100644 --- a/apps/assets/serializers/asset/category.py +++ b/apps/assets/serializers/asset/category.py @@ -1,11 +1,11 @@ from rest_framework import serializers -from assets.models import DeviceInfo, Host, Database, Networking, Cloud +from assets.models import DeviceInfo, Host, Database, Networking, Cloud, Web from .common import AssetSerializer __all__ = [ 'DeviceSerializer', 'HostSerializer', 'DatabaseSerializer', - 'NetworkingSerializer', 'CloudSerializer', + 'NetworkingSerializer', 'CloudSerializer', 'WebSerializer', ] @@ -34,12 +34,18 @@ class DatabaseSerializer(AssetSerializer): fields = AssetSerializer.Meta.fields + ['db_name'] -class NetworkingSerializer(AssetSerializer): +class WebSerializer(AssetSerializer): class Meta(AssetSerializer.Meta): - model = Networking + model = Web + fields = AssetSerializer.Meta.fields + ['url'] class CloudSerializer(AssetSerializer): class Meta(AssetSerializer.Meta): model = Cloud fields = AssetSerializer.Meta.fields + ['cluster'] + + +class NetworkingSerializer(AssetSerializer): + class Meta(AssetSerializer.Meta): + model = Networking diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py index 9d73acfa6..d1b1455d6 100644 --- a/apps/assets/urls/api_urls.py +++ b/apps/assets/urls/api_urls.py @@ -1,10 +1,7 @@ # coding:utf-8 -from django.urls import path, re_path -from rest_framework_nested import routers +from django.urls import path from rest_framework_bulk.routes import BulkRouter -from common import api as capi - from .. import api app_name = 'assets' @@ -13,6 +10,9 @@ router = BulkRouter() router.register(r'assets', api.AssetViewSet, 'asset') router.register(r'hosts', api.HostViewSet, 'host') router.register(r'databases', api.DatabaseViewSet, 'database') +router.register(r'webs', api.WebViewSet, 'web') +router.register(r'clouds', api.CloudViewSet, 'cloud') +router.register(r'networks', api.NetworkViewSet, 'network') router.register(r'accounts', api.AccountViewSet, 'account') router.register(r'account-templates', api.AccountTemplateViewSet, 'account-template') router.register(r'account-secrets', api.AccountSecretsViewSet, 'account-secret')