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 @@
+ | {% trans 'Hostname' %} | +{% trans 'IP' %} | +{% trans 'Port' %} | +{% trans 'Type' %} | +{% trans 'Env' %} | +{% trans 'Hardware' %} | +{% trans 'Valid' %} | +{% trans 'Alive' %} | +
---|
用户名 | +{{ user.username }} | +
姓名 | +{{ user.name }} | +
权限 | +{{ user.get_role_display }} | +
{{ user.email }} | +|
激活 | +{{ user.is_active|yesno:"Yes,No,Unkown" }} | +
添加日期 | +{{ user.date_joined|date:"Y-m-d H:i:s" }} | +
最后登录 | +{{ user.last_login|date:"Y-m-d H:i:s" }} | +
所在用户组 | ++ {% for group in user.groups.all %} + + {{ group.name }} + + {% endfor %} + | +
授权主机数量 | +{{ assets | length }} | +
授权主机组 | ++ {% for group in asset_groups %} + + {{ group.name }} + + {% endfor %} + | +
授权规则 | ++ {% for perm in permissions %} + + {{ perm.name }} + + {% endfor %} + | +
用户名 | -{{ user.username }} | -
姓名 | -{{ user.name }} | -
权限 | -{{ user.get_role_display }} | -
{{ user.email }} | -|
激活 | -{{ user.is_active }} | -
添加日期 | -{{ user.date_joined|date:"Y-m-d H:i:s" }} | -
最后登录 | -{{ user.last_login|date:"Y-m-d H:i:s" }} | -
所在用户组 | -- {% for group in user.groups.all %} - - {{ group.name }} - - {% endfor %} - | -
授权主机数量 | -{{ assets | length }} | -
授权主机组 | -- {% for group in asset_groups %} - - {{ group.name }} - - {% endfor %} - | -
授权规则 | -- {% for perm in permissions %} - - {{ perm.name }} - - {% endfor %} - | -