'Return a standardized pagination parser, to be used for any endpoint that has pagination.
:param RequestParser parser: Can extend a given parser or create a new one
:param tuple sort_choices: A tuple of strings, to be used as server side attribute searches
:param str default: The default sort string, used `sort_choices[0]` if not given
:param bool add_sort: Add sort order choices without adding specific sort choices
:return: An api.parser() instance with pagination and sorting arguments.'

def pagination_parser(self, parser=None, sort_choices=None, default=None, add_sort=None):

    pagination = (parser.copy() if parser else self.parser())
    pagination.add_argument(u'page', type=int, default=1, help=u'Page    number')
    pagination.add_argument(u'per_page', type=int, default=50, help=u'Results    per    page')
    if (sort_choices or add_sort):
        pagination.add_argument(u'order', choices=(u'desc', u'asc'), default=u'desc', help=u'Sorting    order')
    if sort_choices:
        pagination.add_argument(u'sort_by', choices=sort_choices, default=(default or sort_choices[0]), help=u'Sort    by    attribute')
    return pagination
