def build_query(self, **kwargs):
     history = models.CandidateHistoryWithFuture
     query = db.session.query(
         history.__table__,
         models.CandidateTotal.__table__
     ).join(
         models.CandidateTotal,
         sa.and_(
             history.candidate_id == models.CandidateTotal.candidate_id,
             history.two_year_period == models.CandidateTotal.cycle,
         )
     ).join(
         models.Candidate,
         history.candidate_id == models.Candidate.candidate_id,
     )
     if kwargs.get('q'):
         query = query.join(
             models.CandidateSearch,
             history.candidate_id == models.CandidateSearch.id,
         )
     query = filters.filter_multi(query, kwargs, self.filter_multi_fields(history, models.CandidateTotal))
     query = filters.filter_range(query, kwargs, self.filter_range_fields(models.CandidateTotal))
     query = filters.filter_fulltext(query, kwargs, self.filter_fulltext_fields)
     query = filters.filter_match(query, kwargs, self.filter_match_fields)
     return query
Ejemplo n.º 2
0
 def build_query(self, **kwargs):
     if kwargs['election_full']:
         history = models.CandidateHistoryLatest
         year_column = history.cand_election_year
     else:
         history = models.CandidateHistory
         year_column = history.two_year_period
     query = db.session.query(
         history.__table__,
         models.CandidateTotal.__table__,
     ).join(
         models.CandidateTotal,
         sa.and_(
             history.candidate_id == models.CandidateTotal.candidate_id,
             year_column == models.CandidateTotal.cycle,
         )).filter(
             models.CandidateTotal.is_election == kwargs['election_full'], )
     if kwargs.get('q'):
         query = query.join(
             models.CandidateSearch,
             history.candidate_id == models.CandidateSearch.id,
         )
     query = filters.filter_multi(
         query, kwargs,
         self.filter_multi_fields(history, models.CandidateTotal))
     query = filters.filter_range(
         query, kwargs, self.filter_range_fields(models.CandidateTotal))
     query = filters.filter_fulltext(query, kwargs,
                                     self.filter_fulltext_fields)
     return query
Ejemplo n.º 3
0
 def build_query(self, *args, _apply_options=True, **kwargs):
     query = self.model.query
     query = filters.filter_match(query, kwargs, self.filter_match_fields)
     query = filters.filter_multi(query, kwargs, self.filter_multi_fields)
     query = filters.filter_range(query, kwargs, self.filter_range_fields)
     query = filters.filter_fulltext(query, kwargs, self.filter_fulltext_fields)
     if _apply_options:
         query = query.options(*self.query_options)
     return query
Ejemplo n.º 4
0
 def test_filter_fulltext_exclude(self):
     query_dates = filters.filter_fulltext(
         models.CalendarDate.query,
         {'summary': ['Report', '-IE']},
         CalendarDatesView.filter_fulltext_fields
     )
     self.assertEqual(
         set(query_dates.all()),
         set(each for each in self.dates if 'Report' in each.summary and 'IE' not in each.summary))
Ejemplo n.º 5
0
 def build_query(self, **kwargs):
     if kwargs['election_full']:
         history = models.CandidateHistoryLatest
         year_column = history.candidate_election_year
     else:
         history = models.CandidateHistory
         year_column = history.two_year_period
     query = db.session.query(
         history.__table__, models.CandidateTotal.__table__,
         models.CandidateFlags.__table__
     ).join(
         models.CandidateTotal,
         sa.and_(
             history.candidate_id == models.CandidateTotal.candidate_id,
             year_column == models.CandidateTotal.cycle,
             history.candidate_election_year == models.CandidateTotal.cycle,
         )).join(
             models.Candidate,
             history.candidate_id == models.Candidate.candidate_id,
         ).join(
             models.CandidateFlags,
             history.candidate_id == models.CandidateFlags.candidate_id,
         ).filter(
             models.CandidateTotal.is_election == kwargs['election_full'], )
     if kwargs.get('q'):
         query = query.join(
             models.CandidateSearch,
             history.candidate_id == models.CandidateSearch.id,
         )
     #The .filter methods may be able to moved to the filters methods, will investigate
     if kwargs.get('has_raised_funds'):
         query = query.filter(
             models.Candidate.flags.has(
                 models.CandidateFlags.has_raised_funds ==
                 kwargs['has_raised_funds']))
     if kwargs.get('federal_funds_flag'):
         query = query.filter(
             models.Candidate.flags.has(
                 models.CandidateFlags.federal_funds_flag ==
                 kwargs['federal_funds_flag']))
     query = filters.filter_multi(
         query, kwargs,
         self.filter_multi_fields(history, models.CandidateTotal))
     query = filters.filter_range(
         query, kwargs, self.filter_range_fields(models.CandidateTotal))
     query = filters.filter_fulltext(query, kwargs,
                                     self.filter_fulltext_fields)
     return query
Ejemplo n.º 6
0
    def build_query(self, **kwargs):
        if kwargs['election_full']:
            history = models.CandidateHistoryLatest
            year_column = history.cand_election_year
        else:
            history = models.CandidateHistory
            year_column = history.two_year_period
        query = db.session.query(
            history.__table__,
            models.CandidateTotal.__table__,
            models.CandidateFlags.__table__
        ).join(
            models.CandidateTotal,
            sa.and_(
                history.candidate_id == models.CandidateTotal.candidate_id,
                year_column == models.CandidateTotal.cycle,
            )
        ).join(
            models.Candidate,
            history.candidate_id == models.Candidate.candidate_id,
        ).join(
            models.CandidateFlags,
            history.candidate_id == models.CandidateFlags.candidate_id,
        ).filter(
            models.CandidateTotal.is_election == kwargs['election_full'],
        )
        if kwargs.get('q'):
            query = query.join(
                models.CandidateSearch,
                history.candidate_id == models.CandidateSearch.id,
            )
        #The .filter methods may be able to moved to the filters methods, will investigate

        if kwargs.get('has_raised_funds'):
            query = query.filter(
                models.Candidate.flags.has(models.CandidateFlags.has_raised_funds == kwargs['has_raised_funds'])
            )
        if kwargs.get('federal_funds_flag'):
            query = query.filter(
                models.Candidate.flags.has(models.CandidateFlags.federal_funds_flag == kwargs['federal_funds_flag'])
            )
        query = filters.filter_multi(query, kwargs, self.filter_multi_fields(history, models.CandidateTotal))
        query = filters.filter_range(query, kwargs, self.filter_range_fields(models.CandidateTotal))
        query = filters.filter_fulltext(query, kwargs, self.filter_fulltext_fields)
        return query
Ejemplo n.º 7
0
    def build_query(self, **kwargs):
        history = models.CandidateHistoryWithFuture
        query = db.session.query(
            history.__table__, models.CandidateTotal.__table__).join(
                models.CandidateTotal,
                sa.and_(
                    history.candidate_id == models.CandidateTotal.candidate_id,
                    history.two_year_period == models.CandidateTotal.cycle,
                )).join(
                    models.Candidate,
                    history.candidate_id == models.Candidate.candidate_id,
                )
        if kwargs.get('q'):
            query = query.join(
                models.CandidateSearch,
                history.candidate_id == models.CandidateSearch.id,
            )

        if 'is_active_candidate' in kwargs and kwargs.get(
                'is_active_candidate'):  # load active candidates only if True
            query = query.filter(history.candidate_inactive == False  # noqa
                                 )
        elif 'is_active_candidate' in kwargs and not kwargs.get(
                'is_active_candidate'
        ):  # load inactive candidates only if False
            query = query.filter(history.candidate_inactive == True  # noqa
                                 )
        else:  # load all candidates
            pass

        query = filters.filter_multi(
            query, kwargs,
            self.filter_multi_fields(history, models.CandidateTotal))
        query = filters.filter_range(
            query, kwargs, self.filter_range_fields(models.CandidateTotal))
        query = filters.filter_fulltext(query, kwargs,
                                        self.filter_fulltext_fields)
        query = filters.filter_match(query, kwargs, self.filter_match_fields)
        return query
Ejemplo n.º 8
0
 def get(self, **kwargs):
     query = filters.filter_fulltext(models.CommitteeSearch.query, kwargs,
                                     self.filter_fulltext_fields)
     query = query.order_by(sa.desc(
         models.CommitteeSearch.total_activity)).limit(20)
     return {'results': query.all()}
Ejemplo n.º 9
0
 def get(self, **kwargs):
     query = filters.filter_fulltext(models.AuditCandidateSearch.query,
                                     kwargs, self.filter_fulltext_fields)
     query = query.order_by(sa.desc(
         models.AuditCandidateSearch.id)).limit(20)
     return {'results': query.all()}
Ejemplo n.º 10
0
Archivo: audit.py Proyecto: 18F/openFEC
 def get(self, **kwargs):
     query = filters.filter_fulltext(models.AuditCommitteeSearch.query, kwargs, self.filter_fulltext_fields)
     query = query.order_by(
         sa.desc(models.AuditCommitteeSearch.id)
     ).limit(20)
     return {'results': query.all()}
Ejemplo n.º 11
0
 def get(self, **kwargs):
     query = filters.filter_fulltext(models.CandidateSearch.query, kwargs, self.filter_fulltext_fields)
     query = query.order_by(
         sa.desc(models.CandidateSearch.receipts)
     ).limit(20)
     return {'results': query.all()}