diff --git a/apps/common/README.md b/apps/common/README.md index 6aac065890cf6b9c4fd7af8a0dcc3fb5e5bc8793..400f19fc8bc1859b4a3685ded35c0045ba7aa830 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 0d2a4284c34c8c5d7c2a190cac9c05276a1f6baa..d2437537bda965e02da2dc3c89b2f6c85559dc46 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 6b3b88b3fc503cc8fa9dbf1dcb21a6ae8d28d0d1..60e150672704e6bb67d4f47c104f991c55a583db 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 c60ea49a82d91ed8306a63f20e002952d2c28c26..baad101d1f193be95119706afb82264d2255f753 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 c9da9aedcc6096bf4af983d850f227d55018522d..886127dd010112c65ff5110a167dca8bf9b9716e 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 }}