예제 #1
0
파일: views.py 프로젝트: mbland/openFEC
 def filter_fulltext(self, query, kwargs):
     if any(kwargs[key] for key, column in self.filter_fulltext_fields):
         query = self.join_fulltext(query)
     for key, column in self.filter_fulltext_fields:
         if kwargs[key]:
             query = utils.search_text(query, column, kwargs[key], order=False)
     return query
예제 #2
0
    def get_candidates(self, kwargs):

        candidates = self.query

        if kwargs.get('q'):
            candidates = utils.search_text(
                candidates.join(
                    models.CandidateSearch,
                    models.Candidate.candidate_id == models.CandidateSearch.id,
                ),
                models.CandidateSearch.fulltxt,
                kwargs['q'],
            ).distinct()

        candidates = filter_query(models.Candidate, candidates, filter_fields,
                                  kwargs)

        if kwargs.get('name'):
            candidates = candidates.filter(
                models.Candidate.name.ilike('%{}%'.format(kwargs['name'])))

        # TODO(jmcarp) Reintroduce year filter pending accurate `load_date` and `expire_date` values
        if kwargs.get('cycle'):
            candidates = candidates.filter(
                models.Candidate.cycles.overlap(kwargs['cycle']))

        return candidates
예제 #3
0
    def build_query(self, **kwargs):
        query = super().build_query(**kwargs)

        if {'receipts', '-receipts'}.intersection(kwargs.get('sort', [])) and 'q' not in kwargs:
            raise exceptions.ApiError(
                'Cannot sort on receipts when parameter "q" is not set',
                status_code=422,
            )

        if kwargs.get('q'):
            query = utils.search_text(
                query.join(
                    models.CandidateSearch,
                    models.Candidate.candidate_id == models.CandidateSearch.id,
                ),
                models.CandidateSearch.fulltxt,
                kwargs['q'],
            ).distinct()

        if kwargs.get('name'):
            query = query.filter(models.Candidate.name.ilike('%{}%'.format(kwargs['name'])))

        # TODO(jmcarp) Reintroduce year filter pending accurate `load_date` and `expire_date` values
        if kwargs.get('cycle'):
            query = query.filter(models.Candidate.cycles.overlap(kwargs['cycle']))

        return query
예제 #4
0
    def get_committees(self, kwargs):

        committees = models.Committee.query

        if kwargs['candidate_id']:
            committees = committees.filter(
                models.Committee.candidate_ids.overlap(kwargs['candidate_id'])
            )

        if kwargs.get('q'):
            committees = utils.search_text(
                committees.join(
                    models.CommitteeSearch,
                    models.Committee.committee_id == models.CommitteeSearch.id,
                ),
                models.CommitteeSearch.fulltxt,
                kwargs['q'],
            )

        if kwargs.get('name'):
            committees = committees.filter(models.Committee.name.ilike('%{}%'.format(kwargs['name'])))

        committees = filter_query(models.Committee, committees, list_filter_fields, kwargs)

        if kwargs['year']:
            committees = filter_year(models.Committee, committees, kwargs['year'])

        if kwargs['cycle']:
            committees = committees.filter(models.Committee.cycles.overlap(kwargs['cycle']))

        return committees
예제 #5
0
    def build_query(self, **kwargs):
        query = super().build_query(**kwargs)

        if {'receipts', '-receipts'}.intersection(kwargs.get(
                'sort', [])) and 'q' not in kwargs:
            raise exceptions.ApiError(
                'Cannot sort on receipts when parameter "q" is not set',
                status_code=422,
            )

        if kwargs.get('q'):
            query = utils.search_text(
                query.join(
                    models.CandidateSearch,
                    models.Candidate.candidate_id == models.CandidateSearch.id,
                ),
                models.CandidateSearch.fulltxt,
                kwargs['q'],
            ).distinct()

        if kwargs.get('name'):
            query = query.filter(
                models.Candidate.name.ilike('%{}%'.format(kwargs['name'])))

        # TODO(jmcarp) Reintroduce year filter pending accurate `load_date` and `expire_date` values
        if kwargs.get('cycle'):
            query = query.filter(
                models.Candidate.cycles.overlap(kwargs['cycle']))

        return query
예제 #6
0
 def filter_fulltext(self, query, kwargs):
     for key, column in self.filter_fulltext_fields:
         if kwargs.get(key):
             query = utils.search_text(query,
                                       column,
                                       kwargs[key],
                                       order=False)
     return query
예제 #7
0
파일: committees.py 프로젝트: nbedi/openFEC
    def build_query(self, **kwargs):
        query = super().build_query(**kwargs)

        if {'receipts', '-receipts'}.intersection(kwargs.get('sort', [])) and 'q' not in kwargs:
            raise exceptions.ApiError(
                'Cannot sort on receipts when parameter "q" is not set',
                status_code=422,
            )

        if kwargs.get('candidate_id'):
            query = query.filter(
                models.Committee.candidate_ids.overlap(kwargs['candidate_id'])
            )

        if kwargs.get('q'):
            query = utils.search_text(
                query.join(
                    models.CommitteeSearch,
                    models.Committee.committee_id == models.CommitteeSearch.id,
                ),
                models.CommitteeSearch.fulltxt,
                kwargs['q'],
            ).distinct()

        if kwargs.get('treasurer_name'):
            query = utils.search_text(
                query,
                models.Committee.treasurer_text,
                kwargs['treasurer_name'],
            )

        if kwargs.get('name'):
            query = query.filter(models.Committee.name.ilike('%{}%'.format(kwargs['name'])))

        if kwargs.get('year'):
            query = filter_year(models.Committee, query, kwargs['year'])

        if kwargs.get('cycle'):
            query = query.filter(models.Committee.cycles.overlap(kwargs['cycle']))

        return query
예제 #8
0
    def get_candidates(self, kwargs):

        candidates = self.query

        if kwargs.get("q"):
            candidates = utils.search_text(
                candidates.join(models.CandidateSearch, models.Candidate.candidate_id == models.CandidateSearch.id),
                models.CandidateSearch.fulltxt,
                kwargs["q"],
            ).distinct()

        candidates = filter_query(models.Candidate, candidates, filter_fields, kwargs)

        if kwargs.get("name"):
            candidates = candidates.filter(models.Candidate.name.ilike("%{}%".format(kwargs["name"])))

        # TODO(jmcarp) Reintroduce year filter pending accurate `load_date` and `expire_date` values
        if kwargs.get("cycle"):
            candidates = candidates.filter(models.Candidate.cycles.overlap(kwargs["cycle"]))

        return candidates
예제 #9
0
    def get_candidates(self, kwargs):

        candidates = self.query

        if kwargs.get('q'):
            candidates = utils.search_text(
                candidates.join(
                    models.CandidateSearch,
                    models.Candidate.candidate_id == models.CandidateSearch.id,
                ),
                models.CandidateSearch.fulltxt,
                kwargs['q'],
            )

        candidates = filter_query(models.Candidate, candidates, filter_fields, kwargs)

        if kwargs.get('name'):
            candidates = candidates.filter(models.Candidate.name.ilike('%{}%'.format(kwargs['name'])))

        # TODO(jmcarp) Reintroduce year filter pending accurate `load_date` and `expire_date` values
        if kwargs['cycle']:
            candidates = candidates.filter(models.Candidate.cycles.overlap(kwargs['cycle']))

        return candidates
예제 #10
0
파일: rest.py 프로젝트: gboone/openFEC
def search_typeahead_text(model, text):
    query = utils.search_text(model.query, model.fulltxt, text)
    query = query.limit(20)
    return {'results': query.all()}
예제 #11
0
 def filter_fulltext(self, query, kwargs):
     for key, column in self.filter_fulltext_fields:
         if kwargs.get(key):
             query = utils.search_text(query, column, kwargs[key], order=False)
     return query
예제 #12
0
파일: rest.py 프로젝트: morninj/openFEC
def search_typeahead_text(model, text):
    query = utils.search_text(model.query, model.fulltxt, text)
    query = query.limit(20)
    return {"results": query.all()}
예제 #13
0
파일: search.py 프로젝트: adborden/openFEC
def search_typeahead_text(model, text, order_by):
    query = utils.search_text(model.query, model.fulltxt, text)
    query = query.order_by(order_by)
    query = query.limit(20)
    return {'results': query.all()}