Пример #1
0
    def object_list(self):
        query = self.get_query()
        query = self.apply_ordering(query)
        
        # create a QueryFilter object with our current query
        query_filter = self.get_query_filter(query)
        
        # process the filters from the request
        filtered_query = query_filter.get_filtered_query()

        try:
            paginate_by = int(request.args.get('limit', self.paginate_by))
        except ValueError:
            paginate_by = self.paginate_by
        else:
            paginate_by = min(paginate_by, self.paginate_by) # restrict
        
        pq = PaginatedQuery(filtered_query, paginate_by)
        meta_data = self.get_request_metadata(pq)
        
        query_dict = self.serialize_query(pq.get_list())
        
        return self.response({
            'meta': meta_data,
            'objects': query_dict,
        })
Пример #2
0
    def ajax_list(self):
        field = request.args.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.args.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()
            ]

        json_data = json.dumps({'prev_page': prev_page, 'next_page': next_page, 'object_list': data})
        return Response(json_data, mimetype='application/json')
Пример #3
0
    def ajax_list(self):
        field_name = request.args.get('field')
        prev_page = 0
        next_page = 0

        try:
            models = path_to_models(self.model, field_name)
        except AttributeError:
            data = []
        else:
            field = self.model._meta.fields[field_name]
            rel_model = models.pop()
            rel_field = rel_model._meta.fields[self.foreign_key_lookups[field_name]]
            query = rel_model.select().order_by(rel_field)
            query_string = request.args.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 = []

            # if the field is nullable, include the "None" option at the top of the list
            if field.null:
                data.append({'id': '__None', 'repr': 'None'})

            data.extend([{'id': obj.get_id(), 'repr': unicode(obj)} for obj in pq.get_list()])

        json_data = json.dumps({'prev_page': prev_page, 'next_page': next_page, 'object_list': data})
        return Response(json_data, mimetype='application/json')
Пример #4
0
    def ajax_list(self):
        field = request.args.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 = self.foreign_key_lookups[field]

            query = (
                rel_model.select()
                .where(**{"%s__icontains" % rel_field: request.args.get("query", "")})
                .order_by(rel_field)
            )

            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_pk(), "repr": unicode(obj)} for obj in pq.get_list()]

        json_data = json.dumps({"prev_page": prev_page, "next_page": next_page, "object_list": data})
        return Response(json_data, mimetype="application/json")
Пример #5
0
    def ajax_list(self):
        field = request.args.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 = self.foreign_key_lookups[field]

            query = rel_model.select().where(**{
                '%s__icontains'% rel_field: request.args.get('query', ''),
            }).order_by(rel_field)

            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_pk(), 'repr': unicode(obj)} \
                    for obj in pq.get_list()
            ]

        json_data = json.dumps({'prev_page': prev_page, 'next_page': next_page, 'object_list': data})
        return Response(json_data, mimetype='application/json')
Пример #6
0
    def paginated_object_list(self, filtered_query):
        paginate_by = self.get_paginate_by()
        pq = PaginatedQuery(filtered_query, paginate_by)
        meta_data = self.get_request_metadata(pq)

        query_dict = self.serialize_query(pq.get_list())
        meta_data['data'] = query_dict
        return self.response(meta_data)
Пример #7
0
    def paginated_object_list(self, filtered_query):
        paginate_by = self.get_paginate_by()
        pq = PaginatedQuery(filtered_query, paginate_by)
        meta_data = self.get_request_metadata(pq)

        query_dict = self.serialize_query(pq.get_list())

        return self.response({
            'meta': meta_data,
            'objects': query_dict,
        })
Пример #8
0
def details(id, page=20):
    actor = Schedule.select().where(Schedule.id == id).get()
    actor_requests = Request.select().where(Request.url_id == id).order_by(Request.insert_date.desc())
    pages = PaginatedQuery(actor_requests, page)
    content = pages.get_list()

    stats = {}
    stats['site_changes'] = actor_requests.select(Request.content_len).distinct().count()
    stats['total_hits'] = actor_requests.count()
    stats['ok_hits'] = actor_requests.select(Request.id).where(Request.status_code == '200').count()
    stats['avg_response_time'] = (sum([row.response_time for row in actor_requests])/stats['total_hits'])

    return render_template('details.html', actor=actor, actor_requests=content, pages=pages, stats=stats)
Пример #9
0
    def paginated_object_list(self, filtered_query):
        try:
            paginate_by = int(request.args.get("limit", self.paginate_by))
        except ValueError:
            paginate_by = self.paginate_by
        else:
            if self.paginate_by:
                paginate_by = min(paginate_by, self.paginate_by)  # restrict

        pq = PaginatedQuery(filtered_query, paginate_by)
        meta_data = self.get_request_metadata(pq)

        query_dict = self.serialize_query(pq.get_list())

        return self.response({"meta": meta_data, "objects": query_dict})
Пример #10
0
    def ajax_list(self):
        field_name = request.args.get('field')
        prev_page = 0
        next_page = 0

        try:
            models = path_to_models(self.model, field_name)
        except AttributeError:
            data = []
        else:
            field = self.model._meta.fields[field_name]
            rel_model = models.pop()
            rel_field = rel_model._meta.fields[
                self.foreign_key_lookups[field_name]]
            query = rel_model.select().order_by(rel_field)
            query_string = request.args.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 = []

            # if the field is nullable, include the "None" option at the top of the list
            if field.null:
                data.append({'id': '__None', 'repr': 'None'})

            data.extend([{
                'id': obj._pk,
                'repr': str(obj)
            } for obj in pq.get_list()])

        json_data = json.dumps(
            {
                'prev_page': prev_page,
                'next_page': next_page,
                'object_list': data
            },
            cls=StringifyingEncoder)
        return Response(json_data, mimetype='application/json')
Пример #11
0
    def paginated_object_list(self, filtered_query):
        try:
            paginate_by = int(request.args.get('limit', self.paginate_by))
        except ValueError:
            paginate_by = self.paginate_by
        else:
            if self.paginate_by:
                paginate_by = min(paginate_by, self.paginate_by)  # restrict

        pq = PaginatedQuery(filtered_query, paginate_by)
        meta_data = self.get_request_metadata(pq)

        query_dict = self.serialize_query(pq.get_list())

        return self.response({
            'meta': meta_data,
            'objects': query_dict,
        })