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
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
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
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))
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
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
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
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()}
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()}
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()}
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()}