summaryrefslogtreecommitdiffstats
path: root/keystone/db
diff options
context:
space:
mode:
authorRamana Juvvadi <rjuvvadi@hcl.com>2011-05-07 13:08:13 -0500
committerRamana Juvvadi <rjuvvadi@hcl.com>2011-05-07 13:08:13 -0500
commit6eacad3fb064fd2ebfc99e1efafbc108a1b91090 (patch)
tree52c81a254b5506f15433339465265fac3b3259f2 /keystone/db
parent2e1b2f77383f3214f5cb287682e4e864b3ee44aa (diff)
Added some more functions through Routes and mapper
Diffstat (limited to 'keystone/db')
-rw-r--r--keystone/db/sqlalchemy/api.py286
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)
+