diff --git a/cmdb-api/api/lib/cmdb/ci_type.py b/cmdb-api/api/lib/cmdb/ci_type.py index fe73a7f..0381624 100644 --- a/cmdb-api/api/lib/cmdb/ci_type.py +++ b/cmdb-api/api/lib/cmdb/ci_type.py @@ -699,6 +699,10 @@ class CITypeAttributeManager(object): to_group = CITypeAttributeGroup.get_by(type_id=type_id, name=to_group_name, first=True, to_dict=False) to_group_id = to_group and to_group.id + if not to_group_id and CITypeInheritance.get_by(child_id=type_id, to_dict=False): + to_group = CITypeAttributeGroup.create(type_id=type_id, name=to_group_name) + to_group_id = to_group and to_group.id + if from_group_id != to_group_id: if from_group_id is not None: CITypeAttributeGroupManager.delete_item(from_group_id, attr_id) diff --git a/cmdb-api/api/lib/cmdb/search/ci_relation/search.py b/cmdb-api/api/lib/cmdb/search/ci_relation/search.py index 769a4f3..5c890a1 100644 --- a/cmdb-api/api/lib/cmdb/search/ci_relation/search.py +++ b/cmdb-api/api/lib/cmdb/search/ci_relation/search.py @@ -66,7 +66,7 @@ class Search(object): self.has_m2m = True self.type2filter_perms = None - + self.is_app_admin = is_app_admin('cmdb') or current_user.username == "worker" def _get_ids(self, ids): @@ -320,7 +320,8 @@ class Search(object): else: __tmp = [] - _tmp[idx] = [j for i in __tmp for j in i] + if __tmp: + _tmp[idx] = [j for i in __tmp for j in i] else: _tmp[idx] = [] level2ids[lv].append([]) diff --git a/cmdb-api/api/views/acl/login.py b/cmdb-api/api/views/acl/login.py index ed459de..f2fd246 100644 --- a/cmdb-api/api/views/acl/login.py +++ b/cmdb-api/api/views/acl/login.py @@ -38,8 +38,9 @@ class LoginView(APIView): username = request.values.get("username") or request.values.get("email") password = request.values.get("password") _role = None + auth_with_ldap = request.values.get('auth_with_ldap', True) config = AuthenticateDataCRUD(AuthenticateType.LDAP).get() - if config.get('enabled') or config.get('enable'): + if (config.get('enabled') or config.get('enable')) and auth_with_ldap: from api.lib.perm.authentication.ldap import authenticate_with_ldap user, authenticated = authenticate_with_ldap(username, password) else: