Merge "Allow Teams to be filtered by project_id"

This commit is contained in:
Zuul 2019-06-05 21:07:49 +00:00 committed by Gerrit Code Review
commit fe8909e473
2 changed files with 34 additions and 13 deletions

View File

@ -197,9 +197,10 @@ class TeamsController(rest.RestController):
@decorators.db_exceptions @decorators.db_exceptions
@secure(checks.guest) @secure(checks.guest)
@wsme_pecan.wsexpose([wmodels.Team], int, int, int, wtypes.text, @wsme_pecan.wsexpose([wmodels.Team], int, int, int, wtypes.text,
wtypes.text, wtypes.text, wtypes.text) wtypes.text, int, wtypes.text, wtypes.text)
def get(self, marker=None, offset=None, limit=None, name=None, def get(self, marker=None, offset=None, limit=None, name=None,
description=None, sort_field='id', sort_dir='asc'): description=None, project_id=None, sort_field='id',
sort_dir='asc'):
"""Retrieve a list of teams. """Retrieve a list of teams.
Example:: Example::
@ -211,6 +212,7 @@ class TeamsController(rest.RestController):
:param limit: The number of teams to retrieve. :param limit: The number of teams to retrieve.
:param name: A string to filter the name by. :param name: A string to filter the name by.
:param description: A string to filter the description by. :param description: A string to filter the description by.
:param project_id: The ID of a project to filter by.
:param sort_field: The name of the field to sort on. :param sort_field: The name of the field to sort on.
:param sort_dir: Sort direction for results (asc, desc). :param sort_dir: Sort direction for results (asc, desc).
""" """
@ -226,11 +228,13 @@ class TeamsController(rest.RestController):
limit=limit, limit=limit,
name=name, name=name,
description=description, description=description,
project_id=project_id,
sort_field=sort_field, sort_field=sort_field,
sort_dir=sort_dir) sort_dir=sort_dir)
team_count = teams_api.team_get_count(name=name, team_count = teams_api.team_get_count(name=name,
description=description) description=description,
project_id=project_id)
# Apply the query response headers. # Apply the query response headers.
if limit: if limit:

View File

@ -38,19 +38,36 @@ def team_get(team_id):
return _entity_get(team_id) return _entity_get(team_id)
def _team_build_query(project_id=None, **kwargs):
query = api_base.model_query(models.Team)
if project_id:
query = query.join(models.Team.projects)
query = query.filter(models.Project.id == project_id)
query = api_base.apply_query_filters(query=query,
model=models.Team,
**kwargs)
return query
def team_get_all(marker=None, offset=None, limit=None, sort_field=None, def team_get_all(marker=None, offset=None, limit=None, sort_field=None,
sort_dir=None, **kwargs): sort_dir=None, project_id=None, **kwargs):
return api_base.entity_get_all(models.Team, query = _team_build_query(project_id, **kwargs)
offset=offset, query = api_base.paginate_query(query=query,
marker=marker, model=models.Team,
limit=limit, limit=limit,
sort_field=sort_field, sort_key=sort_field,
sort_dir=sort_dir, marker=marker,
**kwargs) offset=offset,
sort_dir=sort_dir)
return query.all()
def team_get_count(**kwargs): def team_get_count(project_id=None, **kwargs):
return api_base.entity_get_count(models.Team, **kwargs) query = _team_build_query(project_id, **kwargs)
return query.count()
def team_create(values): def team_create(values):