From 3639b190e3211674cd3d6b9ca8c893182dee29a6 Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 1 Nov 2017 23:23:11 +0800 Subject: [PATCH] Update perm api --- apps/assets/models/asset.py | 3 +-- apps/perms/api.py | 38 ++++++++++++++++++++++--------------- apps/perms/utils.py | 5 +++++ apps/users/utils.py | 1 - 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/apps/assets/models/asset.py b/apps/assets/models/asset.py index 3b24b50e0..ae53cbf41 100644 --- a/apps/assets/models/asset.py +++ b/apps/assets/models/asset.py @@ -89,9 +89,8 @@ class Asset(models.Model): date_created = models.DateTimeField(auto_now_add=True, null=True, blank=True, verbose_name=_('Date created')) comment = models.TextField(max_length=128, default='', blank=True, verbose_name=_('Comment')) - def __unicode__(self): + def __str__(self): return '%s <%s: %s>' % (self.hostname, self.ip, self.port) - __str__ = __unicode__ @property def is_valid(self): diff --git a/apps/perms/api.py b/apps/perms/api.py index a2f014793..7e4f618d1 100644 --- a/apps/perms/api.py +++ b/apps/perms/api.py @@ -140,11 +140,25 @@ class UserGrantedAssetGroupsApi(ListAPIView): def get_queryset(self): user_id = self.kwargs.get('pk', '') - if user_id: - user = get_object_or_404(User, id=user_id) - queryset = get_user_granted_asset_groups(user) - else: - queryset = [] + if not user_id: + return [] + + user = get_object_or_404(User, id=user_id) + if user: + asset_groups = {} + for asset, system_ in get_user_granted_assets(user).items(): + for asset_group in asset.groups.all(): + if asset_group.id in asset_groups: + asset_groups[asset_group.id]['assets_amount'] += 1 + else: + asset_groups[asset_group.id] = { + 'id': asset_group.id, + 'name': asset_group.name, + 'comment': asset_group.comment, + 'assets_amount': 1 + } + asset_groups_json = asset_groups.values() + return queryset @@ -166,10 +180,11 @@ class MyGrantedAssetsApi(ListAPIView): return queryset - class MyGrantedAssetsGroupsApi(APIView): - """授权给用户的资产组列表, 非直接通过授权规则授权的资产组列表, 而是授权资产的所有 - 资产组之和""" + """ + 授权给用户的资产组列表, 非直接通过授权规则授权的资产组列表, 而是授权资产的所有 + 资产组之和 + """ permission_classes = (IsValidUser,) def get(self, request, *args, **kwargs): @@ -201,13 +216,6 @@ class MyAssetGroupAssetsApi(ListAPIView): asset_groups[0] = { 'id': 0, 'name': 'ungrouped', 'assets': [] } - # asset_group = { - # 1: {'id': 1, 'name': 'hello', - # 'assets': [{ - # 'id': 'asset_id', - # 'system_users': [{'id': 'system_user_id',...},] - # }], - # 'assets_id': set()}, 2: {}} user = request.user if user: diff --git a/apps/perms/utils.py b/apps/perms/utils.py index 4b032ac3c..811c00916 100644 --- a/apps/perms/utils.py +++ b/apps/perms/utils.py @@ -190,6 +190,11 @@ def get_user_granted_assets(user): return assets +def get_user_granted_asset_groups(user): + pass + + + def get_user_group_asset_permissions(user_group): permissions = user_group.asset_permissions.all() return permissions diff --git a/apps/users/utils.py b/apps/users/utils.py index 38cb55183..6610c2112 100644 --- a/apps/users/utils.py +++ b/apps/users/utils.py @@ -167,7 +167,6 @@ def generate_token(request, user): token = cache.get('%s_%s' % (user.id, remote_addr)) if not token: token = uuid.uuid4().hex - print('Set cache: %s' % token) cache.set(token, user.id, expiration) cache.set('%s_%s' % (user.id, remote_addr), token, expiration) return token