def update(id, values, session=None): if not session: session = get_session() with session.begin(): user_ref = get(id, session) user_ref.update(values) user_ref.save(session=session)
def get(id, tenant, session=None): if not session: session = get_session() result = session.query(models.Group).filter_by(id=id, \ tenant_id=tenant).first() return result
def update(id, tenant_id, values, session=None): if not session: session = get_session() with session.begin(): tenant_ref = get(id, tenant_id, session) tenant_ref.update(values) tenant_ref.save(session=session)
def get(id, session=None): if not session: session = get_session() #TODO(Ziad): finish cleaning up model # result = session.query(models.User).options(joinedload('groups')).\ # options(joinedload('tenants')).filter_by(id=id).first() result = session.query(models.User).filter_by(id=id).first() return result
def get_all_baseurls(tenant_id, session=None): if not session: session = get_session() tba = aliased(models.TenantBaseURLAssociation) baseUrls = aliased(models.BaseUrls) return session.query(baseUrls).join((tba, tba.baseURLs_id == baseUrls.id)).\ filter(tba.tenant_id == tenant_id).all()
def is_empty(id, session=None): if not session: session = get_session() a_user = session.query(models.UserGroupAssociation).filter_by( group_id=id).first() if a_user != None: return False return True
def user_groups_get_all(user_id, session=None): if not session: session = get_session() uga = aliased(models.UserGroupAssociation) group = aliased(models.Group) return session.query(group, uga).\ join((uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).order_by( group.id).all()
def save(self, session=None): """Save this object.""" if not session: from keystone.db.sqlalchemy import get_session session = get_session() session.add(self) try: session.flush() except IntegrityError: raise
def get_page(marker, limit, session=None): if not session: session = get_session() if marker: return session.query(models.BaseUrls).filter("id>:marker").params(\ marker='%s' % marker).order_by(\ models.BaseUrls.id.desc()).limit(limit).all() else: return session.query(models.BaseUrls).order_by(\ models.BaseUrls.id.desc()).limit(limit).all()
def users_get_page(marker, limit, session=None): if not session: session = get_session() user = aliased(models.User) if marker: return session.query(user).\ filter("id>=:marker").params( marker='%s' % marker).order_by( "id").limit(limit).all() else: return session.query(user).\ order_by("id").limit(limit).all()
def get_page(tenantId, marker, limit, session=None): if not session: session = get_session() if marker: return session.query(models.Group).filter("id>:marker").params(\ marker='%s' % marker).filter_by(\ tenant_id=tenantId).order_by(\ models.Group.id.desc()).limit(limit).all() else: return session.query(models.Group).filter_by(tenant_id=tenantId)\ .order_by(models.Group.id.desc()).limit(limit).all()
def get_by_user_get_page_markers(user_id, marker, limit, session=None): if not session: session = get_session() uga = aliased(models.UserGroupAssociation) group = aliased(models.Group) first, _firstassoc = session.query(group, uga).\ join((uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).\ order_by(group.id).first() last, _lastassoc = session.query(group, uga).\ join((uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).\ order_by(group.id.desc()).first() if first is None: return (None, None) if marker is None: marker = first.id next = session.query(group, uga).join( (uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).\ filter("id>=:marker").params( marker='%s' % marker).order_by( group.id).limit(int(limit)).all() prev = session.query(group, uga).join( (uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).\ filter("id < :marker").params( marker='%s' % marker).order_by( group.id).limit(int(limit) + 1).all() next_len = len(next) prev_len = len(prev) if next_len == 0: next = last else: for t, _a in next: next = t if prev_len == 0: prev = first else: for t, _a in prev: prev = t if first.id == marker: prev = None else: prev = prev.id if marker == last.id: next = None else: next = next.id return (prev, next)
def ref_get_page(marker, limit, user_id, session=None): if not session: session = get_session() if marker: return session.query(models.UserRoleAssociation).\ filter("id>:marker").params(\ marker='%s' % marker).filter_by(user_id=user_id).order_by(\ models.UserRoleAssociation.id.desc()).limit(limit).all() else: return session.query(models.UserRoleAssociation).\ filter_by(user_id=user_id).order_by(\ models.UserRoleAssociation.id.desc()).limit(limit).all()
def ref_get_by_tenant_get_page(tenant_id, marker, limit, session=None): if not session: session = get_session() if marker: return session.query(models.TenantBaseURLAssociation).\ filter(models.TenantBaseURLAssociation.tenant_id == tenant_id).\ filter("id >= :marker").params( marker='%s' % marker).order_by( models.TenantBaseURLAssociation.id).limit(limit).all() else: return session.query(models.TenantBaseURLAssociation).\ filter(models.TenantBaseURLAssociation.tenant_id == tenant_id).\ order_by(models.TenantBaseURLAssociation.id).limit(limit).all()
def is_empty(id, session=None): if not session: session = get_session() a_user = session.query(models.UserRoleAssociation).filter_by(\ tenant_id=id).first() if a_user != None: return False a_group = session.query(models.Group).filter_by(tenant_id=id).first() if a_group != None: return False a_user = session.query(models.User).filter_by(tenant_id=id).first() if a_user != None: return False return True
def tenants_for_user_get_page(user, marker, limit, session=None): if not session: session = get_session() ura = aliased(models.UserRoleAssociation) tenant = aliased(models.Tenant) q1 = session.query(tenant).join((ura, ura.tenant_id == tenant.id)).\ filter(ura.user_id == user.id) q2 = session.query(tenant).filter(tenant.id == user.tenant_id) q3 = q1.union(q2) if marker: return q3.filter("tenant.id>:marker").params(\ marker='%s' % marker).order_by(\ tenant.id.desc()).limit(limit).all() else: return q3.order_by(tenant.id.desc()).limit(limit).all()
def ref_get_by_tenant_get_page_markers(tenant_id, marker, limit, session=None): if not session: session = get_session() tba = aliased(models.TenantBaseURLAssociation) first = session.query(tba).\ filter(tba.tenant_id == tenant_id).\ order_by(tba.id).first() last = session.query(tba).\ filter(tba.tenant_id == tenant_id).\ order_by(tba.id.desc()).first() if first is None: return (None, None) if marker is None: marker = first.id next = session.query(tba).\ filter(tba.tenant_id == tenant_id).\ filter("id>=:marker").params( marker='%s' % marker).order_by( tba.id).limit(int(limit)).all() prev = session.query(tba).\ filter(tba.tenant_id == tenant_id).\ filter("id < :marker").params( marker='%s' % marker).order_by( tba.id).limit(int(limit) + 1).all() next_len = len(next) prev_len = len(prev) if next_len == 0: next = last else: for t in next: next = t if prev_len == 0: prev = first else: for t in prev: prev = t if first.id == marker: prev = None else: prev = prev.id if marker == last.id: next = None else: next = next.id return (prev, next)
def get_by_tenant(id, tenant_id, session=None): if not session: session = get_session() # Most common use case: user lives in tenant user = session.query(models.User).\ filter_by(id=id, tenant_id=tenant_id).first() if user: return user # Find user through grants to this tenant user_tenant = session.query(models.UserRoleAssociation).filter_by(\ tenant_id=tenant_id, user_id=id).first() if user_tenant: return get(id, session) else: return None
def get_by_user_get_page(user_id, marker, limit, session=None): if not session: session = get_session() uga = aliased(models.UserGroupAssociation) group = aliased(models.Group) if marker: return session.query(group, uga).join(\ (uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).\ filter("id>=:marker").params( marker='%s' % marker).order_by( group.id).limit(limit).all() else: return session.query(group, uga).\ join((uga, uga.group_id == group.id)).\ filter(uga.user_id == user_id).order_by( group.id).limit(limit).all()
def delete_tenant_user(id, tenant_id, session=None): if not session: session = get_session() with session.begin(): users_tenant_ref = users_get_by_tenant(id, tenant_id, session) if users_tenant_ref is not None: for user_tenant_ref in users_tenant_ref: session.delete(user_tenant_ref) user_group_ref = get_group_by_tenant(tenant_id, session) if user_group_ref is not None: for user_group in user_group_ref: get_users = session.query(models.UserGroupAssociation)\ .filter_by(user_id=id, group_id=user_group.id).all() for group_user in get_users: session.delete(group_user)
def users_tenant_group_get_page_markers(group_id, marker, limit, session=None): if not session: session = get_session() uga = aliased(models.UserGroupAssociation) user = aliased(models.User) first = session.query(models.User).order_by(\ models.User.id).first() last = session.query(models.User).order_by(\ models.User.id.desc()).first() if first is None: return (None, None) if marker is None: marker = first.id next = session.query(user).join( (uga, uga.user_id == user.id)).\ filter(uga.group_id == group_id).\ filter("id > :marker").params(\ marker='%s' % marker).order_by(\ user.id).limit(limit).all() prev = session.query(user).join(\ (uga, uga.user_id == user.id)).\ filter(uga.group_id == group_id).\ filter("id < :marker").params(\ marker='%s' % marker).order_by(\ user.id.desc()).limit(int(limit)).all() if len(next) == 0: next = last else: for t in next: next = t if len(prev) == 0: prev = first else: for t in prev: prev = t if prev.id == marker: prev = None else: prev = prev.id if next.id == last.id: next = None else: next = next.id return (prev, next)
def users_get_page_markers(marker, limit, \ session=None): if not session: session = get_session() user = aliased(models.User) first = session.query(user).\ order_by(user.id).first() last = session.query(user).\ order_by(user.id.desc()).first() if first is None: return (None, None) if marker is None: marker = first.id next = session.query(user).\ filter("id > :marker").params(\ marker='%s' % marker).order_by(user.id).\ limit(int(limit)).all() prev = session.query(user).\ filter("id < :marker").params( marker='%s' % marker).order_by( user.id.desc()).limit(int(limit)).all() next_len = len(next) prev_len = len(prev) if next_len == 0: next = last else: for t in next: next = t if prev_len == 0: prev = first else: for t in prev: prev = t if first.id == marker: prev = None else: prev = prev.id if marker == last.id: next = None else: next = next.id return (prev, next)
def tenants_for_user_get_page_markers(user, marker, limit, session=None): if not session: session = get_session() ura = aliased(models.UserRoleAssociation) tenant = aliased(models.Tenant) q1 = session.query(tenant).join((ura, ura.tenant_id == tenant.id)).\ filter(ura.user_id == user.id) q2 = session.query(tenant).filter(tenant.id == user.tenant_id) q3 = q1.union(q2) first = q3.order_by(\ tenant.id).first() last = q3.order_by(\ tenant.id.desc()).first() if first is None: return (None, None) if marker is None: marker = first.id next = q3.filter(tenant.id > marker).order_by(\ tenant.id).limit(limit).all() prev = q3.filter(tenant.id > marker).order_by(\ tenant.id.desc()).limit(int(limit)).all() if len(next) == 0: next = last else: for t in next: next = t if len(prev) == 0: prev = first else: for t in prev: prev = t if prev.id == marker: prev = None else: prev = prev.id if next.id == last.id: next = None else: next = next.id return (prev, next)
def get_page_markers(tenantId, marker, limit, session=None): if not session: session = get_session() first = session.query(models.Group).filter_by(\ tenant_id=tenantId).order_by(\ models.Group.id).first() last = session.query(models.Group).filter_by(\ tenant_id=tenantId).order_by(\ models.Group.id.desc()).first() if first is None: return (None, None) if marker is None: marker = first.id next = session.query(models.Group).filter("id > :marker").params(\ marker='%s' % marker).filter_by(\ tenant_id=tenantId).order_by(\ models.Group.id).limit(limit).all() prev = session.query(models.Group).filter("id < :marker").params(\ marker='%s' % marker).filter_by(\ tenant_id=tenantId).order_by(\ models.Group.id.desc()).limit(int(limit)).all() if len(next) == 0: next = last else: for t in next: next = t if len(prev) == 0: prev = first else: for t in prev: prev = t if prev.id == marker: prev = None else: prev = prev.id if next.id == last.id: next = None else: next = next.id return (prev, next)
def get_all(session=None): if not session: session = get_session() return session.query(models.BaseUrls).all()
def get(id, session=None): if not session: session = get_session() result = session.query(models.BaseUrls).filter_by(id=id).first() return result
def ref_delete(id, session=None): if not session: session = get_session() with session.begin(): baseurls_ref = ref_get(id, session) session.delete(baseurls_ref)
def ref_get_by_tenant(tenant_id, session=None): if not session: session = get_session() result = session.query(models.TenantBaseURLAssociation).\ filter_by(tenant_id=tenant_id).first() return result
def get_all(session=None): if not session: session = get_session() return session.query(models.Token).all()
def get_for_user_by_tenant(user_id, tenant_id, session=None): if not session: session = get_session() result = session.query(models.Token).filter_by( user_id=user_id, tenant_id=tenant_id).order_by("expires desc").first() return result