From a4dc27f0739dcfd2bbab53963f940c3cf1699dc8 Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 14 Sep 2016 23:29:39 +0800 Subject: [PATCH] Finish permissin detail asset list and user list --- apps/common/README.md | 15 ++++ apps/common/utils.py | 36 +++++++--- apps/perms/models.py | 2 +- .../perms/asset_permission_asset_list.html | 40 +++++++---- .../perms/asset_permission_user_list.html | 2 +- apps/perms/views.py | 72 +++++++++++++------ 6 files changed, 119 insertions(+), 48 deletions(-) diff --git a/apps/common/README.md b/apps/common/README.md index 6aac06589..400f19fc8 100644 --- a/apps/common/README.md +++ b/apps/common/README.md @@ -1,3 +1,18 @@ +# Common app + +Common app provide common view, function or others. + +Common app shouldn't rely on other apps, because It may lead to cycle +import. + +If your want to implement some function or class, you should think +whether other app use or not. If yes, You should make in common. + +If the ability more relate to your app tightness, It's mean your app +provide this ability, not common, You should write it on your app utils. + + + ## Celery usage diff --git a/apps/common/utils.py b/apps/common/utils.py index 0d2a4284c..d2437537b 100644 --- a/apps/common/utils.py +++ b/apps/common/utils.py @@ -2,6 +2,7 @@ # from __future__ import unicode_literals +from six import string_types from itertools import chain import string @@ -52,30 +53,43 @@ def combine_seq(s1, s2, callback=None): seq = chain(s1, s2) if callback: seq = map(callback, seq) - return seq def search_object_attr(obj, value='', attr_list=None, ignore_case=False): - try: - object_attr = obj.__dict__ - except AttributeError: - return False + """It's provide a method to search a object attribute equal some value - if not isinstance(value, str): - return False + If object some attribute equal :param: value, return True else return False + + class A(): + name = 'admin' + age = 7 + :param obj: A object + :param value: A string match object attribute + :param attr_list: Only match attribute in attr_list + :param ignore_case: Ignore case + :return: Boolean + """ if value == '': return True + try: + object_attr = obj.__dict__ + except AttributeError: + return False + if attr_list is not None: + new_object_attr = {} for attr in attr_list: - object_attr.pop(attr) + new_object_attr[attr] = object_attr.pop(attr) + object_attr = new_object_attr - print(value) - print(object_attr) if ignore_case: - if value.lower() in map(string.lower, filter(lambda x: isinstance(x, (str, unicode)), object_attr.values())): + if not isinstance(value, string_types): + return False + + if value.lower() in map(string.lower, map(str, object_attr.values())): return True else: if value in object_attr.values(): diff --git a/apps/perms/models.py b/apps/perms/models.py index 6b3b88b3f..60e150672 100644 --- a/apps/perms/models.py +++ b/apps/perms/models.py @@ -55,7 +55,7 @@ class AssetPermission(models.Model): return [] def get_granted_assets(self): - return list(self.assets.all() or []) | set(self.get_granted_asset_groups_member()) + return list(set(self.assets.all() or []) | set(self.get_granted_asset_groups_member())) def get_granted_asset_groups_member(self): combine_assets = functools.partial(combine_seq, callback=AssetPermission.set_inherit) diff --git a/apps/perms/templates/perms/asset_permission_asset_list.html b/apps/perms/templates/perms/asset_permission_asset_list.html index c60ea49a8..baad101d1 100644 --- a/apps/perms/templates/perms/asset_permission_asset_list.html +++ b/apps/perms/templates/perms/asset_permission_asset_list.html @@ -28,6 +28,16 @@ {% trans 'Assets and asset gruops' %} +
@@ -61,13 +71,13 @@ - {% for user in page_obj %} + {% for asset in page_obj %} - {{ user.name }} - {{ user.username }} - {{ user.email }} + {{ asset.hostname }} + {{ asset.ip }} + {{ user.port }} - {% if user.is_expired and user.is_active %} + {% if asset.is_active %} {% else %} @@ -90,7 +100,7 @@
- {% trans 'Add user to asset permission' %} + {% trans 'Add asset to this permission' %}
@@ -98,9 +108,9 @@ @@ -118,7 +128,7 @@
- {% trans 'Add user group to asset permission' %} + {% trans 'Add asset group to this permission' %}
- + {% for asset in asset_remain %} + {% endfor %}
@@ -126,9 +136,9 @@ @@ -140,9 +150,9 @@ - {% for user_group in user_groups %} + {% for asset_group in asset_groups %} - + diff --git a/apps/perms/templates/perms/asset_permission_user_list.html b/apps/perms/templates/perms/asset_permission_user_list.html index c9da9aedc..886127dd0 100644 --- a/apps/perms/templates/perms/asset_permission_user_list.html +++ b/apps/perms/templates/perms/asset_permission_user_list.html @@ -30,7 +30,7 @@
- +
- + {% for asset_group in asset_groups_remain %} + {% endfor %}
{{ user_group.name }}{{ asset_group.name }}