diff --git a/apps/assets/api.py b/apps/assets/api.py index 37ed15c5c..29e694f6f 100644 --- a/apps/assets/api.py +++ b/apps/assets/api.py @@ -11,7 +11,7 @@ from django.shortcuts import get_object_or_404 from common.mixins import IDInFilterMixin from common.utils import get_object_or_none, signer -from .hands import IsSuperUser, IsAppUser +from .hands import IsSuperUser, IsAppUser, IsValidUser, get_user_granted_assets from .models import AssetGroup, Asset, IDC, SystemUser, AdminUser from . import serializers @@ -20,10 +20,13 @@ class AssetViewSet(IDInFilterMixin, BulkModelViewSet): """API endpoint that allows Asset to be viewed or edited.""" queryset = Asset.objects.all() serializer_class = serializers.AssetSerializer - permission_classes = (IsSuperUser,) + permission_classes = (IsValidUser,) def get_queryset(self): - queryset = super(AssetViewSet, self).get_queryset() + if self.request.user.is_superuser: + queryset = super(AssetViewSet, self).get_queryset() + else: + queryset = get_user_granted_assets(self.request.user) idc_id = self.request.query_params.get('idc_id', '') system_users_id = self.request.query_params.get('system_user_id', '') asset_group_id = self.request.query_params.get('asset_group_id', '') diff --git a/apps/assets/hands.py b/apps/assets/hands.py index 633a995f6..61d432db2 100644 --- a/apps/assets/hands.py +++ b/apps/assets/hands.py @@ -12,5 +12,6 @@ from users.utils import AdminUserRequiredMixin -from users.permissions import IsAppUser, IsSuperUser +from users.permissions import IsAppUser, IsSuperUser, IsValidUser from users.models import User, UserGroup +from perms.utils import get_user_granted_assets \ No newline at end of file diff --git a/apps/assets/models/asset.py b/apps/assets/models/asset.py index 54a2d4820..8a6d0bad6 100644 --- a/apps/assets/models/asset.py +++ b/apps/assets/models/asset.py @@ -99,7 +99,12 @@ class Asset(models.Model): return False, warning def to_json(self): - pass + return { + 'id': self.id, + 'hostname': self.hostname, + 'ip': self.ip, + 'port': self.port, + } def _to_secret_json(self): """Ansible use it create inventory""" diff --git a/apps/assets/templates/assets/asset_detail.html b/apps/assets/templates/assets/asset_detail.html index 81c4f7a69..9878e1f0d 100644 --- a/apps/assets/templates/assets/asset_detail.html +++ b/apps/assets/templates/assets/asset_detail.html @@ -16,7 +16,7 @@