def disaster_filter_function(filters: dict, download_type: str, values: List[str]): aggregation_mapping = { "disaster_recipient": _disaster_recipient_aggregations } def_codes = filters["def_codes"] query = filters.get("query") award_type_codes = filters.get("award_type_codes") award_filters = [ ~Q(total_loan_value=0) | ~Q(total_obligation_by_award=0) | ~Q(total_outlay_by_award=0) ] if query: query_text = query["text"] q = Q() for field in query["fields"]: q |= Q(**{f"{field}__icontains": query_text}) award_filters.append(q) if award_type_codes: award_filters.append(Q(type__in=award_type_codes)) faba_filters = [ filter_by_defc_closed_periods(), Q(disaster_emergency_fund__code__in=def_codes) ] dollar_annotations = { "inner_obligation": Coalesce(Sum("transaction_obligated_amount"), 0), "inner_outlay": Coalesce( Sum( Case( When(filter_by_latest_closed_periods(), then=F("gross_outlay_amount_by_award_cpe")), default=Value(0), )), 0, ), } cte = With( FinancialAccountsByAwards.objects.filter( *faba_filters).values("award_id").annotate( **dollar_annotations).exclude(inner_obligation=0, inner_outlay=0)) return (cte.join(AwardSearchView, award_id=cte.col.award_id).with_cte(cte).annotate( total_obligation_by_award=cte.col.inner_obligation, total_outlay_by_award=cte.col.inner_outlay).filter( *award_filters).values(*values).annotate( **aggregation_mapping[download_type]()))
def _covid_outlay_subquery(award_id_col: Optional[str] = "award_id") -> Q: return Subquery( FinancialAccountsByAwards.objects.filter( filter_by_latest_closed_periods(), award_id=OuterRef(award_id_col), disaster_emergency_fund__group_name="covid_19", submission__reporting_period_start__gte=str( datetime.date(2020, 4, 1)), ).values("award_id").annotate(sum=Coalesce( Sum("gross_outlay_amount_by_award_cpe"), 0 ) + Coalesce( Sum("ussgl487200_down_adj_pri_ppaid_undel_orders_oblig_refund_cpe" ), 0 ) + Coalesce( Sum("ussgl497200_down_adj_pri_paid_deliv_orders_oblig_refund_cpe"), 0)).values("sum"), output_field=DecimalField(), )
def subaward_annotations(): annotation_fields = { "subaward_action_date_fiscal_year": FiscalYear("subaward__action_date"), "prime_award_base_action_date_fiscal_year": FiscalYear("award__date_signed"), "prime_award_period_of_performance_potential_end_date": Cast( F("award__latest_transaction__contract_data__period_of_perf_potential_e"), DateField() ), "prime_award_treasury_accounts_funding_this_award": Subquery( Award.objects.filter(id=OuterRef("award_id")) .annotate(value=StringAgg("financial_set__treasury_account__tas_rendering_label", ";", distinct=True)) .values("value"), output_field=TextField(), ), "prime_award_federal_accounts_funding_this_award": Subquery( Award.objects.filter(id=OuterRef("award_id")) .annotate( value=StringAgg( "financial_set__treasury_account__federal_account__federal_account_code", ";", distinct=True ) ) .values("value"), output_field=TextField(), ), "usaspending_permalink": Concat( Value(AWARD_URL), Func(F("award__generated_unique_award_id"), function="urlencode"), Value("/") ), "prime_award_object_classes_funding_this_award": Subquery( FinancialAccountsByAwards.objects.filter( filter_limit_to_closed_periods(), award_id=OuterRef("award_id"), object_class_id__isnull=False ) .annotate( value=ExpressionWrapper( Concat(F("object_class__object_class"), Value(": "), F("object_class__object_class_name")), output_field=TextField(), ) ) .values("award_id") .annotate(total=StringAgg("value", ";", distinct=True)) .values("total"), output_field=TextField(), ), "prime_award_program_activities_funding_this_award": Subquery( FinancialAccountsByAwards.objects.filter( filter_limit_to_closed_periods(), award_id=OuterRef("award_id"), program_activity_id__isnull=False ) .annotate( value=ExpressionWrapper( Concat( F("program_activity__program_activity_code"), Value(": "), F("program_activity__program_activity_name"), ), output_field=TextField(), ) ) .values("award_id") .annotate(total=StringAgg("value", ";", distinct=True)) .values("total"), output_field=TextField(), ), "prime_award_disaster_emergency_fund_codes": Case( When( broker_subaward__action_date__gte=datetime.date(2020, 4, 1), then=Subquery( FinancialAccountsByAwards.objects.filter( filter_limit_to_closed_periods(), award_id=OuterRef("award_id") ) .annotate( value=ExpressionWrapper( Case( When( disaster_emergency_fund__code__isnull=False, then=Concat( F("disaster_emergency_fund__code"), Value(": "), F("disaster_emergency_fund__public_law"), ), ), default=Value(None, output_field=TextField()), output_field=TextField(), ), output_field=TextField(), ) ) .values("award_id") .annotate(total=StringAgg("value", ";", distinct=True)) .values("total"), output_field=TextField(), ), ) ), "prime_award_outlayed_amount_funded_by_COVID-19_supplementals": Case( When( broker_subaward__action_date__gte=datetime.date(2020, 4, 1), then=Subquery( FinancialAccountsByAwards.objects.filter( filter_by_latest_closed_periods(), award_id=OuterRef("award_id"), disaster_emergency_fund__group_name="covid_19", submission__reporting_period_start__gte=str(datetime.date(2020, 4, 1)), ) .values("award_id") .annotate(sum=Sum("gross_outlay_amount_by_award_cpe")) .values("sum"), output_field=DecimalField(), ), ), ), "prime_award_obligated_amount_funded_by_COVID-19_supplementals": Case( When( broker_subaward__action_date__gte=datetime.date(2020, 4, 1), then=Subquery( FinancialAccountsByAwards.objects.filter( filter_limit_to_closed_periods(), award_id=OuterRef("award_id"), disaster_emergency_fund__group_name="covid_19", submission__reporting_period_start__gte=str(datetime.date(2020, 4, 1)), ) .values("award_id") .annotate(sum=Sum("transaction_obligated_amount")) .values("sum"), output_field=DecimalField(), ), ), ), "prime_award_latest_action_date_fiscal_year": FiscalYear("award__latest_transaction__action_date"), } return annotation_fields