Example #1
0
 def _filter(self, req, filters, **kwargs):
     form = ApiSearchForm(filters)
     if form.is_valid():
         qs = Webapp.from_search(self.req, **kwargs)
         return _filter_search(
             self.req, qs, form.cleaned_data)._build_query()
     else:
         return form.errors.copy()
Example #2
0
 def _filter(self, req, filters, sorting=None):
     form = ApiSearchForm(filters)
     if form.is_valid():
         qs = Webapp.from_search().facet('category')
         return _filter_search(self.req, qs, form.cleaned_data,
                               sorting)._build_query()
     else:
         return form.errors.copy()
Example #3
0
    def get_list(self, request=None, **kwargs):
        form = ApiSearchForm(request.GET if request else None)
        if not form.is_valid():
            raise self.form_errors(form)

        # Search specific processing of the results.
        qs = _get_query(request, form, form.cleaned_data)
        qs = _filter_search(qs, form.cleaned_data)
        res = amo.utils.paginate(request, qs)

        # Rehydrate the results as per tastypie.
        bundles = [
            self.build_bundle(obj=obj, request=request)
            for obj in res.object_list
        ]
        objs = [self.full_dehydrate(bundle) for bundle in bundles]
        # This isn't as quite a full as a full TastyPie meta object,
        # but at least it's namespaced that way and ready to expand.
        return self.create_response(request, {'objects': objs, 'meta': {}})
Example #4
0
def _get_search_form(request):
    form = ApiSearchForm()
    fields = [f.name for f in form.visible_fields() + form.hidden_fields()]
    get = dict((k, v) for k, v in request.GET.items() if k in fields)
    return ApiSearchForm(get or None)
Example #5
0
 def get_search_data(self, request):
     form = ApiSearchForm(request.GET if request else None)
     if not form.is_valid():
         raise self.form_errors(form)
     return form.cleaned_data