From ffd23970d416e1e8eab3dbe6daecd80ed81c2be1 Mon Sep 17 00:00:00 2001 From: Ziad Sawalha Date: Tue, 14 Jun 2011 23:33:57 -0500 Subject: Support for GET /v2.0/users and add cdn back to sampledata for v1.0 support --- keystone/db/sqlalchemy/api.py | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'keystone/db') diff --git a/keystone/db/sqlalchemy/api.py b/keystone/db/sqlalchemy/api.py index df1d4d4e..9341954b 100755 --- a/keystone/db/sqlalchemy/api.py +++ b/keystone/db/sqlalchemy/api.py @@ -488,6 +488,57 @@ def user_get(id, session=None): return result +def user_get_page(marker, limit, session=None): + if not session: + session = get_session() + + if marker: + return session.query(models.User).filter("id>:marker").params(\ + marker='%s' % marker).order_by(\ + models.User.id.desc()).limit(limit).all() + else: + return session.query(models.User).order_by(\ + models.User.id.desc()).limit(limit).all() + + +def user_get_page_markers(marker, limit, session=None): + if not session: + session = get_session() + 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(models.User).filter("id > :marker").params(\ + marker='%s' % marker).order_by(\ + models.User.id).limit(limit).all() + prev = session.query(models.User).filter("id < :marker").params(\ + marker='%s' % marker).order_by(\ + models.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 user_get_email(email, session=None): if not session: session = get_session() -- cgit