Exemple #1
0
    def filter_queryset(self, request, queryset, view):
        form = view.form_class(request.GET)
        if not form.is_valid():
            raise form_errors(form)
        self.form_data = form.cleaned_data

        data = {}
        for k, v in self.form_data.items():
            data[self.FORM_TO_FIELD_MAP.get(k, k)] = v

        # Must filters.
        must = []
        for field in self.VALID_FILTERS:
            value = data.get(field)
            if value is not None:
                if type(value) == list:
                    filter_type = "terms"
                else:
                    filter_type = "term"
                must.append(F(filter_type, **{field: value}))

        if must:
            return queryset.filter(Bool(must=must))

        return queryset
Exemple #2
0
    def filter_queryset(self, request, queryset, view):
        form = view.form_class(request.GET)
        if not form.is_valid():
            raise form_errors(form)
        self.form_data = form.cleaned_data

        data = {}
        for k, v in self.form_data.items():
            data[self.FORM_TO_FIELD_MAP.get(k, k)] = v

        # Must filters.
        must = []
        for field in self.VALID_FILTERS:
            value = data.get(field)
            if value is not None:
                if type(value) == list:
                    filter_type = 'terms'
                else:
                    filter_type = 'term'
                must.append(F(filter_type, **{field: value}))

        if must:
            return queryset.filter(Bool(must=must))

        return queryset
Exemple #3
0
    def search(self, request):
        # Parse form.
        form = self.form_class(request.GET if request else None)
        if not form.is_valid():
            raise form_errors(form)
        form_data = form.cleaned_data

        # Status filter.
        data = search_form_to_es_fields(form_data)
        if form_data.get('status') != 'any':
            data.update(status=form_data.get('status'))

        # Do filter.
        sq = apply_reviewer_filters(request, WebappIndexer.search(),
                                    data=form_data)
        sq = WebappIndexer.get_app_filter(request, data, sq=sq, no_filter=True)

        page = self.paginate_queryset(sq)
        return self.get_pagination_serializer(page), request.GET.get('q', '')
Exemple #4
0
    def search(self, request):
        # Parse form.
        form = self.form_class(request.GET if request else None)
        if not form.is_valid():
            raise form_errors(form)
        form_data = form.cleaned_data

        # Status filter.
        data = search_form_to_es_fields(form_data)
        if form_data.get('status') != 'any':
            data.update(status=form_data.get('status'))

        # Do filter.
        sq = apply_reviewer_filters(request, WebappIndexer.search(),
                                    data=form_data)
        sq = WebappIndexer.get_app_filter(request, data, sq=sq, no_filter=True)

        page = self.paginate_queryset(sq)
        return self.get_pagination_serializer(page), request.GET.get('q', '')
Exemple #5
0
    def search(self, request):
        """
        Takes a request (expecting request.GET.q), and returns the serializer
        and search query.
        """
        # Parse form.
        form = self.form_class(request.GET if request else None)
        if not form.is_valid():
            raise form_errors(form)
        form_data = form.cleaned_data

        # Query and filter.
        sq = WebappIndexer.get_app_filter(request,
                                          search_form_to_es_fields(form_data))

        # Sort.
        sq = _sort_search(request, sq, form_data)

        # Done.
        page = self.paginate_queryset(sq)
        return self.get_pagination_serializer(page), form_data.get('q', '')
Exemple #6
0
    def search(self, request):
        """
        Takes a request (expecting request.GET.q), and returns the serializer
        and search query.
        """
        # Parse form.
        form = self.form_class(request.GET if request else None)
        if not form.is_valid():
            raise form_errors(form)
        form_data = form.cleaned_data

        # Query and filter.
        no_filter = (request.GET.get('filtering', '1') == '0'
                     and acl.action_allowed(request, 'Feed', 'Curate'))
        sq = WebappIndexer.get_app_filter(request,
                                          search_form_to_es_fields(form_data),
                                          no_filter=no_filter)

        # Sort.
        sq = _sort_search(request, sq, form_data)

        # Done.
        page = self.paginate_queryset(sq)
        return self.get_pagination_serializer(page), form_data.get('q', '')
Exemple #7
0
 def get_search_data(self, request):
     form = self.form_class(request.GET if request else None)
     if not form.is_valid():
         raise form_errors(form)
     return form.cleaned_data
Exemple #8
0
 def get_search_data(self, request):
     form = self.form_class(request.GET if request else None)
     if not form.is_valid():
         raise form_errors(form)
     return form.cleaned_data