diff options
Diffstat (limited to 'keystone-moon/keystone/contrib/moon/backends/sql.py')
-rw-r--r-- | keystone-moon/keystone/contrib/moon/backends/sql.py | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/keystone-moon/keystone/contrib/moon/backends/sql.py b/keystone-moon/keystone/contrib/moon/backends/sql.py index 9f4beb6b..43bd3078 100644 --- a/keystone-moon/keystone/contrib/moon/backends/sql.py +++ b/keystone-moon/keystone/contrib/moon/backends/sql.py @@ -323,8 +323,21 @@ __all_objects__ = ( Rule, ) + class TenantConnector(TenantDriver): + @staticmethod + def __update_dict(base, update): + """Update a dict only if values are not None + + :param base: dict to update + :param update: updates for the base dict + :return: None + """ + for key in update: + if type(update[key]) is not None: + base[key] = update[key] + def get_tenants_dict(self): with sql.transaction() as session: query = session.query(Tenant) @@ -354,13 +367,10 @@ class TenantConnector(TenantDriver): query = session.query(Tenant) query = query.filter_by(id=tenant_id) ref = query.first() - tenant_ref = ref.to_dict() - tenant_ref.update(tenant_dict) - new_tenant = Tenant(id=tenant_id, tenant=tenant_ref) - for attr in Tenant.attributes: - if attr != 'id': - setattr(ref, attr, getattr(new_tenant, attr)) - return {ref.id: ref.tenant} + tenant_dict_orig = dict(ref.tenant) + self.__update_dict(tenant_dict_orig, tenant_dict) + setattr(ref, "tenant", tenant_dict_orig) + return {ref.id: tenant_dict_orig} class IntraExtensionConnector(IntraExtensionDriver): |