Exemple #1
0
    def get_context_data(self, **kwargs):
        ctx = super(SearchMixin, self).get_context_data(**kwargs)

        query = None
        results_count_context_name = self.results_context_name + "_count"

        filters = self.get_filters()
        q = self.get_keywords()

        # The API wrapper should possibly handle the need for the following ifs
        if q or filters:
            query = Index(name=self.index_name).search(self.document_class)

        if query:
            if q:
                query = query.keywords(q)
            if filters:
                query = query.filter(**filters)

            ctx[self.results_context_name] = query[: self.results_limit]
            ctx[results_count_context_name] = query.count()

        ctx[self.query_param_name] = q
        ctx[self.filters_context_name] = filters
        ctx.setdefault(self.results_context_name, [])
        ctx.setdefault(results_count_context_name, 0)

        return ctx