|
54 | 54 | ) |
55 | 55 | from .serializers import ( |
56 | 56 | BaselineLivelihoodActivitySerializer, |
| 57 | + BaselineWealthCharacteristicsValueSerializer, |
57 | 58 | BaselineWealthGroupSerializer, |
58 | 59 | ButterProductionSerializer, |
59 | 60 | CommunityCropProductionSerializer, |
@@ -512,6 +513,70 @@ class WealthGroupCharacteristicValueViewSet(BaseModelViewSet): |
512 | 513 | filterset_class = WealthGroupCharacteristicValueFilterSet |
513 | 514 |
|
514 | 515 |
|
| 516 | +class BaselineWealthCharacteristicsFilterSet(filters.FilterSet): |
| 517 | + |
| 518 | + class Meta: |
| 519 | + model = WealthGroupCharacteristicValue |
| 520 | + fields = ["wealth_characteristic", "wealth_group"] |
| 521 | + |
| 522 | + livelihood_zone_baseline = filters.NumberFilter( |
| 523 | + field_name="wealth_group__livelihood_zone_baseline", |
| 524 | + label="Livelihood Zone Baseline ID", |
| 525 | + ) |
| 526 | + |
| 527 | + country = MultiFieldFilter( |
| 528 | + [ |
| 529 | + "wealth_group__livelihood_zone_baseline__livelihood_zone__country__iso3166a2", |
| 530 | + "wealth_group__livelihood_zone_baseline__livelihood_zone__country__iso_en_ro_name", |
| 531 | + "wealth_group__livelihood_zone_baseline__livelihood_zone__country__iso_en_name", |
| 532 | + "wealth_group__livelihood_zone_baseline__livelihood_zone__country__iso_en_ro_proper", |
| 533 | + "wealth_group__livelihood_zone_baseline__livelihood_zone__country__iso_en_proper", |
| 534 | + "wealth_group__livelihood_zone_baseline__livelihood_zone__country__iso_fr_name", |
| 535 | + "wealth_group__livelihood_zone_baseline__livelihood_zone__country__iso_fr_proper", |
| 536 | + "wealth_group__livelihood_zone_baseline__livelihood_zone__country__iso_es_name", |
| 537 | + ], |
| 538 | + lookup_expr="iexact", |
| 539 | + label="Country", |
| 540 | + ) |
| 541 | + |
| 542 | + has_value = filters.BooleanFilter( |
| 543 | + method="filter_has_value", |
| 544 | + label="Has Value", |
| 545 | + ) |
| 546 | + |
| 547 | + def filter_has_value(self, queryset, name, value): |
| 548 | + if value: |
| 549 | + return queryset.exclude(value__isnull=True).exclude(value__exact="") |
| 550 | + else: |
| 551 | + return queryset.filter(Q(value__isnull=True) | Q(value__exact="")) |
| 552 | + |
| 553 | + |
| 554 | +class BaselineWealthCharacteristicsValueViewSet(BaseModelViewSet): |
| 555 | + """ |
| 556 | + API endpoint for baseline wealth characteristics with grouping. |
| 557 | + """ |
| 558 | + |
| 559 | + queryset = ( |
| 560 | + WealthGroupCharacteristicValue.objects.select_related( |
| 561 | + "wealth_characteristic", |
| 562 | + "wealth_group__wealth_group_category", |
| 563 | + "wealth_group__livelihood_zone_baseline", |
| 564 | + "product", |
| 565 | + "unit_of_measure", |
| 566 | + ) |
| 567 | + .filter(wealth_group__community__isnull=True) |
| 568 | + .order_by( |
| 569 | + "wealth_characteristic__characteristic_group", |
| 570 | + "wealth_characteristic__ordering", |
| 571 | + "wealth_characteristic__code", |
| 572 | + "wealth_group__wealth_group_category__ordering", |
| 573 | + ) |
| 574 | + ) |
| 575 | + |
| 576 | + serializer_class = BaselineWealthCharacteristicsValueSerializer |
| 577 | + filterset_class = BaselineWealthCharacteristicsFilterSet |
| 578 | + |
| 579 | + |
515 | 580 | class LivelihoodStrategyFilterSet(filters.FilterSet): |
516 | 581 | class Meta: |
517 | 582 | model = LivelihoodStrategy |
|
0 commit comments