Exemplo n.º 1
0
    def ajax_list(self):
        field = request.params.get('field')
        prev_page = 0
        next_page = 0

        try:
            models = path_to_models(self.model, field)
        except AttributeError:
            data = []
        else:
            rel_model = models.pop()
            rel_field = rel_model._meta.fields[self.foreign_key_lookups[field]]
            query = rel_model.select().order_by(rel_field)
            query_string = request.params.get('query')
            if query_string:
                query = query.where(rel_field ** ('%%%s%%' % query_string))

            pq = PaginatedQuery(query, self.filter_paginate_by)
            current_page = pq.get_page()
            if current_page > 1:
                prev_page = current_page - 1
            if current_page < pq.get_pages():
                next_page = current_page + 1

            data = [
                {'id': obj.get_id(), 'repr': unicode(obj)} \
                    for obj in pq.get_list()
            ]
        Response.headers['mimetype'] = 'application/json'
        return {'prev_page': prev_page, 'next_page': next_page, 'object_list': data}