diff --git a/apps/perms/utils.py b/apps/perms/utils.py index 3f147ec1b..cbc6f823d 100644 --- a/apps/perms/utils.py +++ b/apps/perms/utils.py @@ -7,7 +7,7 @@ def get_user_group_granted_asset_groups(user_group): """Return asset groups granted of the user group :param user_group: Instance of :class: ``UserGroup`` - :return: {asset_group1: {system_user1, }, asset_group2: {system_user1, system_user2]} + :return: {asset1: {system_user1, }, asset1: {system_user1, system_user2]} """ asset_groups = {} asset_permissions = user_group.asset_permissions.all() @@ -61,6 +61,7 @@ def get_user_granted_asset_groups_direct(user): if asset_group in asset_groups: asset_groups[asset_group] |= set(asset_permission.system_users.all()) else: + setattr(asset_group, 'is_inherit_from_user_group', False) asset_groups[asset_group] = set(asset_permission.system_users.all()) return asset_groups @@ -88,6 +89,7 @@ def get_user_granted_asset_groups_inherit_from_user_groups(user): if asset_group in asset_groups: asset_groups[asset_group] |= set(asset_permission.system_users.all()) else: + setattr(asset_group, 'is_inherit_from_user_group', True) asset_groups[asset_group] = set(asset_permission.system_users.all()) return asset_groups @@ -130,6 +132,8 @@ def get_user_granted_assets_direct(user): if asset in assets: assets[asset] |= set(asset_permission.system_users.all()) else: + setattr(asset, 'is_inherit_from_user_groups', False) + setattr(asset, 'is_inherit_from_user_groups', False) assets[asset] = set(asset_permission.system_users.all()) return assets @@ -150,6 +154,7 @@ def get_user_granted_assets_inherit_from_user_groups(user): if asset in assets: assets[asset] |= assets_inherited[asset] else: + setattr(asset, 'is_inherit_from_user_groups', True) assets[asset] = assets_inherited[asset] return assets diff --git a/apps/users/templates/users/user_granted_asset.html b/apps/users/templates/users/user_granted_asset.html index 9db6ce952..08feee6c1 100644 --- a/apps/users/templates/users/user_granted_asset.html +++ b/apps/users/templates/users/user_granted_asset.html @@ -74,7 +74,7 @@ - {% for asset in object_list %} + {% for asset, system_users in object_list %} @@ -83,7 +83,7 @@ {{ asset.ip }} {{ asset.port }} - {{ assets.asset }} + {{ system_users|join_attr:"name" }} {% if asset.is_valid %} @@ -92,8 +92,7 @@ {% endif %} - - + {% endfor %} @@ -134,7 +133,7 @@ - {% for asset_group in asset_groups %} + {% for asset_group, system_users in asset_groups %} @@ -142,9 +141,9 @@ {{ asset_group.assets.count }} - {{ asset_group.name }} + {{ system_users|join_attr:"name" }} - + {% endfor %} diff --git a/apps/users/views.py b/apps/users/views.py index 160fff42d..1b24d6c52 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -427,15 +427,20 @@ class UserGrantedAssetView(AdminUserRequiredMixin, SingleObjectMixin, ListView): return super(UserGrantedAssetView, self).get(request, *args, **kwargs) def get_queryset(self): - self.assets_granted = get_user_granted_assets(self.object) - return self.assets_granted.keys() + # Convert format from {'asset': ['system_users'], ..} to + # [('asset', ['system_users']), ('asset', ['system_users'])) + assets_granted = [(asset, system_users) for asset, system_users in + get_user_granted_assets(self.object).items()] + + return assets_granted def get_context_data(self, **kwargs): + asset_groups = [(asset_group, system_users) for asset_group, system_users in + get_user_granted_asset_groups(self.object).items()] context = { 'app': 'User', 'action': 'User granted asset', - 'asset_groups': get_user_granted_asset_groups(self.object), - 'assets': self.assets_granted, + 'asset_groups': asset_groups, } kwargs.update(context) return super(UserGrantedAssetView, self).get_context_data(**kwargs)