Skip to content

Commit

Permalink
Added shortcut for id=NULL queries (bug 916386)
Browse files Browse the repository at this point in the history
Change-Id: I9d7ae05f860d4a8f56bb9b7ab77221e201478393
  • Loading branch information
dolph committed Jan 26, 2012
1 parent 2abbc77 commit d2e6f63
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 22 deletions.
6 changes: 4 additions & 2 deletions keystone/backends/sqlalchemy/api/credentials.py
Expand Up @@ -99,8 +99,10 @@ def get(self, id, session=None):

@staticmethod
def _get(id, session=None):
if not session:
session = get_session()
if id is None:
return None

session = session or get_session()

return session.query(models.Credentials).filter_by(id=id).first()

Expand Down
6 changes: 4 additions & 2 deletions keystone/backends/sqlalchemy/api/endpoint_template.py
Expand Up @@ -61,8 +61,10 @@ def delete(self, id, session=None):
session.delete(endpoint_template)

def get(self, id, session=None):
if not session:
session = get_session()
if id is None:
return None

session = session or get_session()

return session.query(models.EndpointTemplates).\
filter_by(id=id).first()
Expand Down
6 changes: 4 additions & 2 deletions keystone/backends/sqlalchemy/api/role.py
Expand Up @@ -89,8 +89,10 @@ def update(id, values, session=None):
ref.save(session=session)

def get(self, id, session=None):
if not session:
session = get_session()
if id is None:
return None

session = session or get_session()
return RoleAPI.to_model(
session.query(models.Role).filter_by(id=id).first())

Expand Down
6 changes: 4 additions & 2 deletions keystone/backends/sqlalchemy/api/service.py
Expand Up @@ -102,8 +102,10 @@ def update(id, values, session=None):
service_ref.save(session=session)

def get(self, id, session=None):
if not session:
session = get_session()
if id is None:
return None

session = session or get_session()
return ServiceAPI.to_model(session.query(models.Service).
filter_by(id=id).first())

Expand Down
12 changes: 12 additions & 0 deletions keystone/backends/sqlalchemy/api/tenant.py
Expand Up @@ -81,6 +81,9 @@ def get(self, id, session=None):
For PK lookups from within the sqlalchemy backend,
use ``_get_by_id()`` instead.
"""
if id is None:
return None

session = session or get_session()

result = session.query(models.Tenant).filter_by(uid=id).first()
Expand All @@ -97,18 +100,27 @@ def _get_by_id(id, session=None):
This is **only** for use within the sqlalchemy backend.
"""
if id is None:
return None

session = session or get_session()

return session.query(models.Tenant).filter_by(id=id).first()

@staticmethod
def id_to_uid(id, session=None):
if id is None:
return None

session = session or get_session()
tenant = session.query(models.Tenant).filter_by(id=id).first()
return tenant.uid if tenant else None

@staticmethod
def uid_to_id(uid, session=None):
if uid is None:
return None

session = session or get_session()
tenant = session.query(models.Tenant).filter_by(uid=uid).first()
return tenant.id if tenant else None
Expand Down
6 changes: 4 additions & 2 deletions keystone/backends/sqlalchemy/api/token.py
Expand Up @@ -78,8 +78,10 @@ def get(self, id, session=None):

@staticmethod
def _get(id, session=None):
if not session:
session = get_session()
if id is None:
return None

session = session or get_session()

result = session.query(models.Token).filter_by(id=id).first()

Expand Down
31 changes: 19 additions & 12 deletions keystone/backends/sqlalchemy/api/user.py
Expand Up @@ -80,11 +80,12 @@ def create(self, values):
return UserAPI.to_model(user_ref)

def get(self, id, session=None):
if not session:
session = get_session()
if id is None:
return None

id = str(id) if id is not None else None
result = session.query(models.User).filter_by(uid=id).first()
session = session or get_session()

result = session.query(models.User).filter_by(uid=str(id)).first()

return UserAPI.to_model(result)

Expand All @@ -95,24 +96,30 @@ def _get_by_id(id, session=None):
- Queries by PK ID
- Doesn't wrap result with domain layer models
"""
if not session:
session = get_session()
if id is None:
return None

session = session or get_session()

id = str(id) if id is not None else None
return session.query(models.User).filter_by(id=id).first()
# TODO(dolph): user ID's are NOT strings... why is this is being cast?
return session.query(models.User).filter_by(id=str(id)).first()

@staticmethod
def id_to_uid(id, session=None):
if id is None:
return None

session = session or get_session()
id = str(id) if id is not None else None
user = session.query(models.User).filter_by(id=id).first()
user = session.query(models.User).filter_by(id=str(id)).first()
return user.uid if user else None

@staticmethod
def uid_to_id(uid, session=None):
if uid is None:
return None

session = session or get_session()
uid = str(uid) if uid is not None else None
user = session.query(models.User).filter_by(uid=uid).first()
user = session.query(models.User).filter_by(uid=str(uid)).first()
return user.id if user else None

def get_by_name(self, name, session=None):
Expand Down

0 comments on commit d2e6f63

Please sign in to comment.