diff options
| author | Ramana Juvvadi <rjuvvadi@hcl.com> | 2011-05-07 13:08:13 -0500 |
|---|---|---|
| committer | Ramana Juvvadi <rjuvvadi@hcl.com> | 2011-05-07 13:08:13 -0500 |
| commit | 6eacad3fb064fd2ebfc99e1efafbc108a1b91090 (patch) | |
| tree | 52c81a254b5506f15433339465265fac3b3259f2 /keystone/db | |
| parent | 2e1b2f77383f3214f5cb287682e4e864b3ee44aa (diff) | |
Added some more functions through Routes and mapper
Diffstat (limited to 'keystone/db')
| -rw-r--r-- | keystone/db/sqlalchemy/api.py | 286 |
1 files changed, 240 insertions, 46 deletions
diff --git a/keystone/db/sqlalchemy/api.py b/keystone/db/sqlalchemy/api.py index 47768c17..751721f5 100644 --- a/keystone/db/sqlalchemy/api.py +++ b/keystone/db/sqlalchemy/api.py @@ -17,7 +17,7 @@ from session import get_session -from sqlalchemy.orm import joinedload +from sqlalchemy.orm import joinedload,aliased import models @@ -44,7 +44,7 @@ def tenant_get_all(session=None): def tenant_get_page(marker,limit,session=None): if not session: session = get_session() - + if marker: return session.query(models.Tenant).filter("id>:marker").params(\ marker = '%s' % marker).order_by\ @@ -53,8 +53,8 @@ def tenant_get_page(marker,limit,session=None): return session.query(models.Tenant).order_by(\ models.Tenant.id.desc()).limit(limit).all() #return session.query(models.Tenant).all() - - + + def tenant_get_page_markers(marker,limit,session=None): if not session: session = get_session() @@ -120,7 +120,7 @@ def tenant_group_is_empty( id, session=None): group_id=id).first() if a_user != None: return False - + return True def tenant_delete(id, session=None): @@ -142,13 +142,13 @@ def tenant_group_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 tenant_group_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(\ @@ -158,8 +158,8 @@ def tenant_group_get_page(tenantId, marker,limit,session=None): return session.query(models.Group).filter_by(tenant_id=tenantId)\ .order_by(models.Group.id.desc()).limit(limit).all() #return session.query(models.Tenant).all() - - + + def tenant_group_get_page_markers(tenantId, marker,limit,session=None): if not session: session = get_session() @@ -213,6 +213,13 @@ def tenant_group_delete(id,tenant_id, session=None): tenantgroup_ref = tenant_group_get(id,tenant_id, session) session.delete(tenantgroup_ref) +def user_get_by_group(user_id, group_id, session=None): + if not session: + session = get_session() + result = session.query(models.UserGroupAssociation).filter_by( + group_id=group_id, user_id=user_id).first() + return result + def user_create(values): user_ref = models.User() @@ -229,14 +236,6 @@ def user_get(id, session=None): return result -def user_get_by_tenant(tenant_id, session=None): - if not session: - session = get_session() - result = session.query(models.UserTenantAssociation).filter_by( - tenant_id=tenant_id) - return result - - def user_groups(id, session=None): if not session: session = get_session() @@ -254,14 +253,6 @@ def user_update(id, values, session=None): user_ref.save(session=session) -def user_delete(id, session=None): - if not session: - session = get_session() - with session.begin(): - user_ref = user_get(id, session) - session.delete(user_ref) - - def group_get(id, session=None): if not session: session = get_session() @@ -272,43 +263,43 @@ def group_get(id, session=None): def group_users(id, session=None): if not session: session = get_session() - result = session.query(models.Users).filter_by( + result = session.query(models.User).filter_by( group_id=id) return result def users_tenant_group_get_page(group_id, marker,limit,session=None): if not session: session = get_session() - + if marker: - return session.query(models.Users).filter_by(\ + return session.query(models.User).filter_by(\ group_id=group_id).filter("id>:marker").params(\ marker = '%s' % marker).order_by\ - (models.Users.id.desc()).limit(limit).all() + (models.User.id.desc()).limit(limit).all() else: - return session.query(models.Users).filter_by(\ + return session.query(models.User).filter_by(\ group_id=group_id).order_by(\ - models.Users.id.desc()).limit(limit).all() - - - + models.User.id.desc()).limit(limit).all() + + + def users_tenant_group_get_page_markers(group_id, marker,limit,session=None): if not session: session = get_session() - first = session.query(models.Users).order_by(\ - models.Users.id).first() - last = session.query(models.Users).order_by(\ - models.Users.id.desc()).first() + first = session.query(models.User).order_by(\ + models.User.id).first() + last = session.query(models.User).order_by(\ + models.User.id.desc()).first() if marker is None: marker=first.id - next=session.query(models.Users).filter_by(\ + next=session.query(models.User).filter_by(\ group_id=group_id).filter("id > :marker").params(\ marker = '%s' % marker).order_by(\ - models.Users.id).limit(limit).all() - prev=session.query(models.Users).filter_by(\ + models.User.id).limit(limit).all() + prev=session.query(models.User).filter_by(\ group_id=group_id).filter("id < :marker").params(\ marker = '%s' % marker).order_by(\ - models.Users.id.desc()).limit(int(limit)).all() + models.User.id.desc()).limit(int(limit)).all() if len(next) == 0: next=last else: @@ -339,7 +330,7 @@ def group_get_all(session=None): def group_get_page(marker,limit,session=None): if not session: session = get_session() - + if marker: return session.query(models.Group).filter("id>:marker").params(\ marker = '%s' % marker).order_by\ @@ -347,9 +338,9 @@ def group_get_page(marker,limit,session=None): else: return session.query(models.Group).order_by(\ models.Group.id.desc()).limit(limit).all() - - - + + + def group_get_page_markers(marker,limit,session=None): if not session: session = get_session() @@ -422,3 +413,206 @@ def token_for_user(user_id, session=None): result = session.query(models.Token).filter_by( user_id=user_id).order_by("expires desc").first() return result + +def user_tenant_create(values): + user_tenant_ref = models.UserTenantAssociation() + user_tenant_ref.update(values) + user_tenant_ref.save() + return user_tenant_ref + +def user_get_update(id, session=None): + if not session: + session = get_session() + result = session.query(models.User).filter_by(id=id).first() + return result + +def user_get_email(email, session=None): + if not session: + session = get_session() + result = session.query(models.User).filter_by(email=email).first() + return result + +def users_get_by_tenant_get_page(tenant_id, marker, limit, session=None): + if not session: + session = get_session() + uta = aliased(models.UserTenantAssociation) + user = aliased(models.User) + if marker: + return session.query(user, uta).join( + (uta, uta.user_id == user.id)).\ + filter(uta.tenant_id == tenant_id).\ + filter("id>=:marker").params( + marker='%s' % marker).order_by( + user.id).limit(limit).all() + else: + return session.query(user, uta).\ + join((uta, uta.user_id == user.id)).\ + filter(uta.tenant_id == tenant_id).order_by( + user.id).limit(limit).all() + +def users_get_by_tenant_get_page_markers(tenant_id, marker, limit, session=None): + if not session: + session = get_session() + uta = aliased(models.UserTenantAssociation) + user = aliased(models.User) + first, firstassoc = session.query(user, uta).\ + join((uta, uta.user_id == user.id)).\ + filter(uta.tenant_id == tenant_id).\ + order_by(user.id).first() + last, lastassoc = session.query(user, uta).\ + join((uta, uta.user_id == user.id)).\ + filter(uta.tenant_id == tenant_id).\ + order_by(user.id.desc()).first() + if marker is None: + marker = first.id + next = session.query(user, uta).join((uta, uta.user_id == user.id)).\ + filter(uta.tenant_id == tenant_id).\ + filter("id >= :marker").params( + marker='%s' % marker).order_by( + user.id).limit(int(limit) + 1).all() + prev = session.query(user, uta).join((uta, uta.user_id == user.id)).\ + filter(uta.tenant_id == tenant_id).\ + filter("id < :marker").params( + marker='%s' % marker).order_by( + user.id.desc()).limit(int(limit)).all() + next_len = len(next) + prev_len = len(prev) + print next_len, prev_len + 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 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 groups_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 groups_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 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) + print next_len, prev_len + 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 user_delete(id, session=None): + if not session: + session = get_session() + with session.begin(): + user_ref = user_get(id, session) + session.delete(user_ref) + +def user_get_by_tenant(id, tenant_id, session=None): + if not session: + session = get_session() + user_tenant = session.query(models.UserTenantAssociation).filter_by( + tenant_id=tenant_id, user_id=id).first() + + return user_tenant + +def user_delete_tenant(id, tenantId, session=None): + if not session: + session = get_session() + with session.begin(): + user_ref = user_get_by_tenant(id, tenantId, session) + session.delete(user_ref) + user_ref = user_get(id, session) + session.delete(user_ref) + +def user_tenant_group(values): + user_ref = models.UserGroupAssociation() + user_ref.update(values) + user_ref.save() + return user_ref + + +def user_tenant_group_delete(id, group_id, session=None): + if not session: + session = get_session() + with session.begin(): + usertenantgroup_ref = user_get_by_group(id, group_id, session) + session.delete(usertenantgroup_ref) + |
