def get(self, **kwargs): """Get itemized resources. If multiple values are passed for `committee_id`, create a subquery for each and combine with `UNION ALL`. This is necessary to avoid slow queries when one or more relevant committees has many records. """ if kwargs.get("last_index"): if all( kwargs.get("last_{}".format(option)) is None for option in self.sort_options ) and not kwargs.get("sort_null_only"): raise exceptions.ApiError( "When paginating through results, both values from the \ previous page's `last_indexes` object are needed. For more information, \ see https://api.open.fec.gov/developers/. Please add one of the following \ filters to your query: `sort_null_only`=True, {}".format( ", ".join("`last_" + option + "`" for option in self.sort_options) ), status_code=422, ) committee_ids = kwargs.get('committee_id', []) if len(committee_ids) > 10: raise exceptions.ApiError( 'Can only specify up to ten values for "committee_id".', status_code=422, ) if len(committee_ids) > 1: query, count = self.join_committee_queries(kwargs) return utils.fetch_seek_page(query, kwargs, self.index_column, count=count) query = self.build_query(**kwargs) count, _ = counts.get_count(query, models.db.session) return utils.fetch_seek_page(query, kwargs, self.index_column, count=count, cap=self.cap)
def get(self, **kwargs): """Get itemized resources. If multiple values are passed for `committee_id`, create a subquery for each and combine with `UNION ALL`. This is necessary to avoid slow queries when one or more relevant committees has many records. """ committee_ids = kwargs.get('committee_id', []) if len(committee_ids) > 10: raise exceptions.ApiError( 'Can only specify up to ten values for "committee_id".', status_code=422, ) if len(committee_ids) > 1: query, count = self.join_committee_queries(kwargs) return utils.fetch_seek_page(query, kwargs, self.index_column, count=count) query = self.build_query(**kwargs) count, _ = counts.get_count(query, models.db.session) return utils.fetch_seek_page(query, kwargs, self.index_column, count=count, cap=self.cap)
def build_committee_query(self, kwargs, committee_id): query = self.build_query(utils.extend(kwargs, {'committee_id': [committee_id]}), join=False) sort, hide_null, nulls_large = kwargs['sort'], kwargs['sort_hide_null'], kwargs['sort_nulls_large'] query, _ = sorting.sort(query, sort, model=models.ScheduleA, hide_null=hide_null, nulls_large=nulls_large) page_query = utils.fetch_seek_page(query, kwargs, self.index_column, count=-1, eager=False).results count = counts.count_estimate(query, models.db.session, threshold=5000) return page_query, count
def get(self, **kwargs): query = self.build_query(kwargs) count = counts.count_estimate(query, models.db.session, threshold=5000) return utils.fetch_seek_page(query, kwargs, self.index_column, count=count)
def build_committee_query(self, kwargs, committee_id): """Build a subquery by committee. """ query = self.build_query(_apply_options=False, **utils.extend(kwargs, {'committee_id': [committee_id]})) sort, hide_null = kwargs['sort'], kwargs['sort_hide_null'] query, _ = sorting.sort(query, sort, model=self.model, hide_null=hide_null) page_query = utils.fetch_seek_page(query, kwargs, self.index_column, count=-1, eager=False).results count = counts.count_estimate(query, models.db.session) return page_query, count
def build_committee_query(self, kwargs, committee_id): """Build a subquery by committee. """ query = self.build_query(_apply_options=False, **utils.extend(kwargs, {'committee_id': [committee_id]})) sort, hide_null, nulls_large = kwargs['sort'], kwargs['sort_hide_null'], kwargs['sort_nulls_large'] query, _ = sorting.sort(query, sort, model=self.model, hide_null=hide_null, nulls_large=nulls_large) page_query = utils.fetch_seek_page(query, kwargs, self.index_column, count=-1, eager=False).results count = counts.count_estimate(query, models.db.session, threshold=5000) return page_query, count
def get(self, **kwargs): """Get itemized resources. If multiple values are passed for `committee_id`, create a subquery for each and combine with `UNION ALL`. This is necessary to avoid slow queries when one or more relevant committees has many records. """ committee_ids = kwargs.get('committee_id', []) if len(committee_ids) > 5: raise exceptions.ApiError( 'Can only specify up to five values for "committee_id".', status_code=422, ) if len(committee_ids) > 1: query, count = self.join_committee_queries(kwargs) return utils.fetch_seek_page(query, kwargs, self.index_column, count=count) query = self.build_query(**kwargs) count = counts.count_estimate(query, models.db.session, threshold=5000) return utils.fetch_seek_page(query, kwargs, self.index_column, count=count)
def get(self, **kwargs): if len(kwargs['committee_id']) > 5: raise exceptions.ApiError( 'Can only specify up to five values for "committee_id".', status_code=422, ) if len(kwargs['committee_id']) > 1: query, count = self.join_committee_queries(kwargs) return utils.fetch_seek_page(query, kwargs, self.index_column, count=count) return super(ScheduleAView, self).get(**kwargs)
def build_committee_query(self, kwargs, committee_id): query = self.build_query(utils.extend( kwargs, {'committee_id': [committee_id]}), join=False) sort, hide_null, nulls_large = kwargs['sort'], kwargs[ 'sort_hide_null'], kwargs['sort_nulls_large'] query, _ = sorting.sort(query, sort, model=models.ScheduleA, hide_null=hide_null, nulls_large=nulls_large) page_query = utils.fetch_seek_page(query, kwargs, self.index_column, count=-1, eager=False).results count = counts.count_estimate(query, models.db.session, threshold=5000) return page_query, count
def get(self, **kwargs): query = self.build_query(**kwargs) count = counts.count_estimate(query, models.db.session, threshold=5000) return utils.fetch_seek_page(query, kwargs, self.index_column, count=count)