Merge "Allow tags to be filtered by name"

This commit is contained in:
Jenkins 2016-06-21 12:53:31 +00:00 committed by Gerrit Code Review
commit fc51eefce7
2 changed files with 16 additions and 6 deletions

View File

@ -49,17 +49,25 @@ class TagsController(rest.RestController):
raise exc.NotFound(_("Tag %s not found") % tag_id)
@secure(checks.guest)
@wsme_pecan.wsexpose([wmodels.Tag], int, int, int)
def get_all(self, story_id=None, marker=None, limit=None):
@wsme_pecan.wsexpose([wmodels.Tag], int, wtypes.text, int, int, int)
def get_all(self, story_id=None, name=None, marker=None, limit=None,
offset=None):
"""Retrieve all tags for a given Story. If no story_id is provided
all tags will be returned.
all tags will be returned, optionally filtered by name.
:param story_id: Filter tags by story ID.
:param name: Filter tags by name.
:param marker: ID of the tag to start results from.
:param limit: Maximum number of results per page.
:param offset: Number of results to offset page by.
"""
if not story_id:
marker_tag = tags_api.tag_get_by_id(marker)
tags = tags_api.tag_get_all(marker_tag, limit)
tags = tags_api.tag_get_all(name=name,
marker=marker_tag,
limit=limit,
offset=offset)
return [wmodels.Tag.from_db_model(t) for t in tags]

View File

@ -39,10 +39,12 @@ def tag_get_by_name(name, session=None):
return query.first()
def tag_get_all(marker=None, limit=None):
def tag_get_all(name=None, marker=None, limit=None, offset=None):
return api_base.entity_get_all(models.StoryTag,
name=name,
marker=marker,
limit=limit)
limit=limit,
offset=offset)
def tag_get_count(**kwargs):