diff --git a/apps/assets/api/system_user.py b/apps/assets/api/system_user.py index ff3f81f36..59be0fa68 100644 --- a/apps/assets/api/system_user.py +++ b/apps/assets/api/system_user.py @@ -19,7 +19,7 @@ from ..tasks import ( logger = get_logger(__file__) __all__ = [ 'SystemUserViewSet', 'SystemUserAuthInfoApi', 'SystemUserAssetAuthInfoApi', - 'SystemUserCommandFilterRuleListApi', 'SystemUserTaskApi', + 'SystemUserCommandFilterRuleListApi', 'SystemUserTaskApi', 'SystemUserAssetsListView', ] @@ -125,3 +125,18 @@ class SystemUserCommandFilterRuleListApi(generics.ListAPIView): pk = self.kwargs.get('pk', None) system_user = get_object_or_404(SystemUser, pk=pk) return system_user.cmd_filter_rules + + +class SystemUserAssetsListView(generics.ListAPIView): + permission_classes = (IsOrgAdmin,) + serializer_class = serializers.AssetSimpleSerializer + filter_fields = ("hostname", "ip") + search_fields = filter_fields + + def get_object(self): + pk = self.kwargs.get('pk') + return get_object_or_404(SystemUser, pk=pk) + + def get_queryset(self): + system_user = self.get_object() + return system_user.get_all_assets() diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py index 3df73d219..d81520b65 100644 --- a/apps/assets/urls/api_urls.py +++ b/apps/assets/urls/api_urls.py @@ -45,6 +45,7 @@ urlpatterns = [ path('admin-users//assets/', api.AdminUserAssetsListView.as_view(), name='admin-user-assets'), path('system-users//auth-info/', api.SystemUserAuthInfoApi.as_view(), name='system-user-auth-info'), + path('system-users//assets/', api.SystemUserAssetsListView.as_view(), name='system-user-assets'), path('system-users//assets//auth-info/', api.SystemUserAssetAuthInfoApi.as_view(), name='system-user-asset-auth-info'), path('system-users//tasks/', api.SystemUserTaskApi.as_view(), name='system-user-task-create'), path('system-users//cmd-filter-rules/', api.SystemUserCommandFilterRuleListApi.as_view(), name='system-user-cmd-filter-rule-list'),