def post(self, request): self.original_filters = request.data.get("filters") self.json_request = self.validate_api_request(request.data) self.filters = self.json_request.get("filters", None) if self.filters is None: raise InvalidParameterException( "Missing request parameters: filters") queryset, values = self.database_data_layer() results = bolster_missing_time_periods( filter_time_periods=self.filters["time_period"], queryset=queryset, date_range_type=values[-1], columns={"new_award_count_in_period": "count"}, ) response = { "group": self.groupings[self.json_request["group"]], "results": results, "messages": get_generic_filters_message(self.original_filters.keys(), {"time_period", "recipient_id"}), } return Response(response)
def post(self, request): json_request = self.validate_request_data(request.data) self.group = json_request["group"] self.subawards = json_request["subawards"] self.filters = json_request["filters"] db_results, values = self.database_data_layer() # time_period is optional so we're setting a default window from API_SEARCH_MIN_DATE to end of the current FY. # Otherwise, users will see blank results for years current_fy = generate_fiscal_year(datetime.now(timezone.utc)) if self.groupings[self.group] == "fiscal_year": end_date = "{}-09-30".format(current_fy) else: end_date = "{}-{}-30".format(current_fy, datetime.now(timezone.utc).month) default_time_period = { "start_date": settings.API_SEARCH_MIN_DATE, "end_date": end_date } time_periods = self.filters.get("time_period", [default_time_period]) results = bolster_missing_time_periods( filter_time_periods=time_periods, queryset=db_results, date_range_type=values[-1], columns={"aggregated_amount": "aggregated_amount"}, ) return Response({ "group": self.groupings[self.group], "results": results })
def post(self, request): json_request = self.validate_request_data(request.data) self.group = json_request["group"] self.subawards = json_request["subawards"] self.filters = json_request["filters"] db_results, values = self.database_data_layer() # time_period is optional so we're setting a default window from API_SEARCH_MIN_DATE to end of the current FY. # Otherwise, users will see blank results for years current_fy = generate_fiscal_year(datetime.now(timezone.utc)) if self.groupings[self.group] == "fiscal_year": end_date = "{}-09-30".format(current_fy) else: end_date = "{}-{}-30".format(current_fy, datetime.now(timezone.utc).month) default_time_period = {"start_date": settings.API_SEARCH_MIN_DATE, "end_date": end_date} time_periods = self.filters.get("time_period", [default_time_period]) results = bolster_missing_time_periods( filter_time_periods=time_periods, queryset=db_results, date_range_type=values[-1], columns={"aggregated_amount": "aggregated_amount"}, ) return Response({"group": self.groupings[self.group], "results": results})
def post(self, request: Request) -> Response: self.original_filters = request.data.get("filters") json_request = self.validate_request_data(request.data) self.group = GROUPING_LOOKUP[json_request["group"]] self.subawards = json_request["subawards"] self.filters = json_request["filters"] self.elasticsearch = is_experimental_elasticsearch_api(request) if not self.elasticsearch: mirror_request_to_elasticsearch(request) # time_period is optional so we're setting a default window from API_SEARCH_MIN_DATE to end of the current FY. # Otherwise, users will see blank results for years current_fy = generate_fiscal_year(datetime.now(timezone.utc)) if self.group == "fiscal_year": end_date = "{}-09-30".format(current_fy) else: current_fiscal_month = generate_fiscal_month( datetime.now(timezone.utc)) days_in_month = monthrange(current_fy, current_fiscal_month)[1] end_date = f"{current_fy}-{current_fiscal_month}-{days_in_month}" default_time_period = { "start_date": settings.API_SEARCH_MIN_DATE, "end_date": end_date } time_periods = self.filters.get("time_period", [default_time_period]) if self.elasticsearch and not self.subawards: logger.info( "Using experimental Elasticsearch functionality for 'spending_over_time'" ) results = self.query_elasticsearch(time_periods) else: db_results, values = self.database_data_layer() results = bolster_missing_time_periods( filter_time_periods=time_periods, queryset=db_results, date_range_type=values[-1], columns={"aggregated_amount": "aggregated_amount"}, ) return Response( OrderedDict([ ("group", self.group), ("results", results), ( "messages", get_generic_filters_message( self.original_filters.keys(), [elem["name"] for elem in AWARD_FILTER]), ), ]))
def post(self, request): self.json_request = self.validate_api_request(request.data) self.filters = self.json_request.get('filters', None) if self.filters is None: raise InvalidParameterException('Missing request parameters: filters') queryset, values = self.database_data_layer() results = bolster_missing_time_periods( filter_time_periods=self.filters['time_period'], queryset=queryset, date_range_type=values[-1], columns={'new_award_count_in_period': 'count'}) return Response({'group': self.groupings[self.json_request['group']], 'results': results})
def post(self, request): self.json_request = self.validate_api_request(request.data) self.filters = self.json_request.get("filters", None) if self.filters is None: raise InvalidParameterException("Missing request parameters: filters") queryset, values = self.database_data_layer() results = bolster_missing_time_periods( filter_time_periods=self.filters["time_period"], queryset=queryset, date_range_type=values[-1], columns={"new_award_count_in_period": "count"}, ) return Response({"group": self.groupings[self.json_request["group"]], "results": results})
def post(self, request): self.json_request = self.validate_api_request(request.data) self.filters = self.json_request.get('filters', None) if self.filters is None: raise InvalidParameterException( 'Missing request parameters: filters') queryset, values = self.database_data_layer() results = bolster_missing_time_periods( filter_time_periods=self.filters['time_period'], queryset=queryset, date_range_type=values[-1], columns={'new_award_count_in_period': 'count'}) return Response({ 'group': self.groupings[self.json_request['group']], 'results': results })