Finish user detail asset grant ..

pull/530/head
ibuler 2016-09-17 18:51:19 +08:00
parent 7d3474aeea
commit df281defd8
3 changed files with 21 additions and 12 deletions

View File

@ -7,7 +7,7 @@ def get_user_group_granted_asset_groups(user_group):
"""Return asset groups granted of the user group """Return asset groups granted of the user group
:param user_group: Instance of :class: ``UserGroup`` :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_groups = {}
asset_permissions = user_group.asset_permissions.all() 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: if asset_group in asset_groups:
asset_groups[asset_group] |= set(asset_permission.system_users.all()) asset_groups[asset_group] |= set(asset_permission.system_users.all())
else: else:
setattr(asset_group, 'is_inherit_from_user_group', False)
asset_groups[asset_group] = set(asset_permission.system_users.all()) asset_groups[asset_group] = set(asset_permission.system_users.all())
return asset_groups return asset_groups
@ -88,6 +89,7 @@ def get_user_granted_asset_groups_inherit_from_user_groups(user):
if asset_group in asset_groups: if asset_group in asset_groups:
asset_groups[asset_group] |= set(asset_permission.system_users.all()) asset_groups[asset_group] |= set(asset_permission.system_users.all())
else: else:
setattr(asset_group, 'is_inherit_from_user_group', True)
asset_groups[asset_group] = set(asset_permission.system_users.all()) asset_groups[asset_group] = set(asset_permission.system_users.all())
return asset_groups return asset_groups
@ -130,6 +132,8 @@ def get_user_granted_assets_direct(user):
if asset in assets: if asset in assets:
assets[asset] |= set(asset_permission.system_users.all()) assets[asset] |= set(asset_permission.system_users.all())
else: 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()) assets[asset] = set(asset_permission.system_users.all())
return assets return assets
@ -150,6 +154,7 @@ def get_user_granted_assets_inherit_from_user_groups(user):
if asset in assets: if asset in assets:
assets[asset] |= assets_inherited[asset] assets[asset] |= assets_inherited[asset]
else: else:
setattr(asset, 'is_inherit_from_user_groups', True)
assets[asset] = assets_inherited[asset] assets[asset] = assets_inherited[asset]
return assets return assets

View File

@ -74,7 +74,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for asset in object_list %} {% for asset, system_users in object_list %}
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center"> <td class="text-center">
<a href="{% url 'assets:asset-detail' pk=asset.id %}"> <a href="{% url 'assets:asset-detail' pk=asset.id %}">
@ -83,7 +83,7 @@
</td> </td>
<td class="text-center">{{ asset.ip }}</td> <td class="text-center">{{ asset.ip }}</td>
<td class="text-center">{{ asset.port }}</td> <td class="text-center">{{ asset.port }}</td>
<td class="text-center">{{ assets.asset }}</td> <td class="text-center">{{ system_users|join_attr:"name" }}</td>
<td class="text-center"> <td class="text-center">
{% if asset.is_valid %} {% if asset.is_valid %}
<i class="fa fa-check text-navy"></i> <i class="fa fa-check text-navy"></i>
@ -92,8 +92,7 @@
{% endif %} {% endif %}
</td> </td>
<td> <td>
<button class="btn btn-danger btn-xs btn_delete_user_group {% if not asset.is_valid %} disabled {% endif %}" type="button" style="float: right;"><i class="fa fa-minus"></i></button> <button class="btn btn-danger btn-xs btn_delete_user_group {% if asset.is_inherit_from_user_groups or asset.is_inherit_from_asset_groups %} disabled {% endif %}" type="button" style="float: right;"><i class="fa fa-minus"></i></button>
</td>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
@ -134,7 +133,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for asset_group in asset_groups %} {% for asset_group, system_users in asset_groups %}
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center"> <td class="text-center">
<a href="{% url 'assets:asset-group-detail' pk=asset_group.id %}"> <a href="{% url 'assets:asset-group-detail' pk=asset_group.id %}">
@ -142,9 +141,9 @@
</a> </a>
</td> </td>
<td class="text-center">{{ asset_group.assets.count }}</td> <td class="text-center">{{ asset_group.assets.count }}</td>
<td class="text-center">{{ asset_group.name }}</td> <td class="text-center">{{ system_users|join_attr:"name" }}</td>
<td> <td>
<button class="btn btn-danger btn-xs btn_delete_user_group {% if not asset.is_valid %} disabled {% endif %}" type="button" style="float: right;"><i class="fa fa-minus"></i></button> <button class="btn btn-danger btn-xs btn_delete_user_group {% if not asset_group.is_inherit_from_user_groups %} disabled {% endif %}" type="button" style="float: right;"><i class="fa fa-minus"></i></button>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}

View File

@ -427,15 +427,20 @@ class UserGrantedAssetView(AdminUserRequiredMixin, SingleObjectMixin, ListView):
return super(UserGrantedAssetView, self).get(request, *args, **kwargs) return super(UserGrantedAssetView, self).get(request, *args, **kwargs)
def get_queryset(self): def get_queryset(self):
self.assets_granted = get_user_granted_assets(self.object) # Convert format from {'asset': ['system_users'], ..} to
return self.assets_granted.keys() # [('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): 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 = { context = {
'app': 'User', 'app': 'User',
'action': 'User granted asset', 'action': 'User granted asset',
'asset_groups': get_user_granted_asset_groups(self.object), 'asset_groups': asset_groups,
'assets': self.assets_granted,
} }
kwargs.update(context) kwargs.update(context)
return super(UserGrantedAssetView, self).get_context_data(**kwargs) return super(UserGrantedAssetView, self).get_context_data(**kwargs)