Skip to content

Commit 39d6c4d

Browse files
committed
Add order_by to the viewsets to remove the warning - UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list see HEA-996
1 parent 3226735 commit 39d6c4d

1 file changed

Lines changed: 40 additions & 23 deletions

File tree

apps/baseline/viewsets.py

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,19 @@ class LivelihoodStrategyViewSet(BaseModelViewSet):
880880
]
881881

882882

883+
LIVELIHOOD_ACTIVITY_ORDER_BY = [
884+
"livelihood_zone_baseline__livelihood_zone__code",
885+
"livelihood_zone_baseline__reference_year_end_date",
886+
"wealth_group__wealth_group_category__code",
887+
"strategy_type",
888+
"livelihood_strategy__season__name_en",
889+
"livelihood_strategy__product_id",
890+
"livelihood_strategy__additional_identifier",
891+
"wealth_group__community__full_name",
892+
"scenario",
893+
]
894+
895+
883896
class LivelihoodActivityFilterSet(filters.FilterSet):
884897
livelihood_strategy = django_filters.ModelChoiceFilter(
885898
queryset=LivelihoodStrategy.objects.select_related(
@@ -959,7 +972,7 @@ class LivelihoodActivityViewSet(BaseModelViewSet):
959972
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
960973
"wealth_group__community__livelihood_zone_baseline__source_organization",
961974
"wealth_group__wealth_group_category",
962-
)
975+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
963976
serializer_class = LivelihoodActivitySerializer
964977
filterset_class = LivelihoodActivityFilterSet
965978
search_fields = [
@@ -1037,7 +1050,7 @@ class BaselineLivelihoodActivityViewSet(BaseModelViewSet):
10371050
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
10381051
"wealth_group__community__livelihood_zone_baseline__source_organization",
10391052
"wealth_group__wealth_group_category",
1040-
)
1053+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
10411054
serializer_class = BaselineLivelihoodActivitySerializer
10421055
filterset_class = BaselineLivelihoodActivityFilterSet
10431056
search_fields = [
@@ -1115,7 +1128,7 @@ class ResponseLivelihoodActivityViewSet(BaseModelViewSet):
11151128
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
11161129
"wealth_group__community__livelihood_zone_baseline__source_organization",
11171130
"wealth_group__wealth_group_category",
1118-
)
1131+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
11191132
serializer_class = ResponseLivelihoodActivitySerializer
11201133
filterset_class = ResponseLivelihoodActivityFilterSet
11211134
search_fields = [
@@ -1182,7 +1195,7 @@ class MilkProductionViewSet(BaseModelViewSet):
11821195
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
11831196
"wealth_group__community__livelihood_zone_baseline__source_organization",
11841197
"wealth_group__wealth_group_category",
1185-
)
1198+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
11861199
serializer_class = MilkProductionSerializer
11871200
filterset_class = MilkProductionFilterSet
11881201
search_fields = [
@@ -1246,7 +1259,7 @@ class ButterProductionViewSet(BaseModelViewSet):
12461259
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
12471260
"wealth_group__community__livelihood_zone_baseline__source_organization",
12481261
"wealth_group__wealth_group_category",
1249-
)
1262+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
12501263
serializer_class = ButterProductionSerializer
12511264
filterset_class = ButterProductionFilterSet
12521265
search_fields = [
@@ -1311,7 +1324,7 @@ class MeatProductionViewSet(BaseModelViewSet):
13111324
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
13121325
"wealth_group__community__livelihood_zone_baseline__source_organization",
13131326
"wealth_group__wealth_group_category",
1314-
)
1327+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
13151328
serializer_class = MeatProductionSerializer
13161329
filterset_class = MeatProductionFilterSet
13171330
search_fields = [
@@ -1374,7 +1387,7 @@ class LivestockSaleViewSet(BaseModelViewSet):
13741387
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
13751388
"wealth_group__community__livelihood_zone_baseline__source_organization",
13761389
"wealth_group__wealth_group_category",
1377-
)
1390+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
13781391
serializer_class = LivestockSaleSerializer
13791392
filterset_class = LivestockSaleFilterSet
13801393
search_fields = [
@@ -1437,7 +1450,7 @@ class CropProductionViewSet(BaseModelViewSet):
14371450
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
14381451
"wealth_group__community__livelihood_zone_baseline__source_organization",
14391452
"wealth_group__wealth_group_category",
1440-
)
1453+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
14411454
serializer_class = CropProductionSerializer
14421455
filterset_class = CropProductionFilterSet
14431456
search_fields = [
@@ -1503,7 +1516,7 @@ class FoodPurchaseViewSet(BaseModelViewSet):
15031516
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
15041517
"wealth_group__community__livelihood_zone_baseline__source_organization",
15051518
"wealth_group__wealth_group_category",
1506-
)
1519+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
15071520
serializer_class = FoodPurchaseSerializer
15081521
filterset_class = FoodPurchaseFilterSet
15091522
search_fields = [
@@ -1570,7 +1583,7 @@ class PaymentInKindViewSet(BaseModelViewSet):
15701583
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
15711584
"wealth_group__community__livelihood_zone_baseline__source_organization",
15721585
"wealth_group__wealth_group_category",
1573-
)
1586+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
15741587
serializer_class = PaymentInKindSerializer
15751588
filterset_class = PaymentInKindFilterSet
15761589
search_fields = [
@@ -1635,7 +1648,7 @@ class ReliefGiftOtherViewSet(BaseModelViewSet):
16351648
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
16361649
"wealth_group__community__livelihood_zone_baseline__source_organization",
16371650
"wealth_group__wealth_group_category",
1638-
)
1651+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
16391652
serializer_class = ReliefGiftOtherSerializer
16401653
filterset_class = ReliefGiftOtherFilterSet
16411654
search_fields = [
@@ -1740,7 +1753,7 @@ class HuntingViewSet(BaseModelViewSet):
17401753
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
17411754
"wealth_group__community__livelihood_zone_baseline__source_organization",
17421755
"wealth_group__wealth_group_category",
1743-
)
1756+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
17441757
serializer_class = HuntingSerializer
17451758
filterset_class = HuntingFilterSet
17461759
search_fields = [
@@ -1761,7 +1774,7 @@ class FishingViewSet(BaseModelViewSet):
17611774
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
17621775
"wealth_group__community__livelihood_zone_baseline__source_organization",
17631776
"wealth_group__wealth_group_category",
1764-
)
1777+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
17651778
serializer_class = FishingSerializer
17661779
filterset_class = FishingFilterSet
17671780
search_fields = [
@@ -1824,7 +1837,7 @@ class WildFoodGatheringViewSet(BaseModelViewSet):
18241837
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
18251838
"wealth_group__community__livelihood_zone_baseline__source_organization",
18261839
"wealth_group__wealth_group_category",
1827-
)
1840+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
18281841
serializer_class = WildFoodGatheringSerializer
18291842
filterset_class = WildFoodGatheringFilterSet
18301843
search_fields = [
@@ -1892,7 +1905,7 @@ class OtherCashIncomeViewSet(BaseModelViewSet):
18921905
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
18931906
"wealth_group__community__livelihood_zone_baseline__source_organization",
18941907
"wealth_group__wealth_group_category",
1895-
)
1908+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
18961909
serializer_class = OtherCashIncomeSerializer
18971910
filterset_class = OtherCashIncomeFilterSet
18981911
search_fields = [
@@ -1958,7 +1971,7 @@ class OtherPurchaseViewSet(BaseModelViewSet):
19581971
"wealth_group__community__livelihood_zone_baseline__livelihood_zone__country",
19591972
"wealth_group__community__livelihood_zone_baseline__source_organization",
19601973
"wealth_group__wealth_group_category",
1961-
)
1974+
).order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
19621975
serializer_class = OtherPurchaseSerializer
19631976
filterset_class = OtherPurchaseFilterSet
19641977
search_fields = [
@@ -2383,13 +2396,17 @@ class LivelihoodActivitySummaryViewSet(AggregatingViewSet):
23832396
23842397
"""
23852398

2386-
queryset = LivelihoodActivity.objects.filter(wealth_group__community__isnull=True).select_related(
2387-
"livelihood_zone_baseline__livelihood_zone__country",
2388-
"livelihood_zone_baseline__source_organization",
2389-
"livelihood_zone_baseline__main_livelihood_category",
2390-
"wealth_group__wealth_group_category",
2391-
"livelihood_strategy__product",
2392-
"livelihood_strategy__season",
2399+
queryset = (
2400+
LivelihoodActivity.objects.filter(wealth_group__community__isnull=True)
2401+
.select_related(
2402+
"livelihood_zone_baseline__livelihood_zone__country",
2403+
"livelihood_zone_baseline__source_organization",
2404+
"livelihood_zone_baseline__main_livelihood_category",
2405+
"wealth_group__wealth_group_category",
2406+
"livelihood_strategy__product",
2407+
"livelihood_strategy__season",
2408+
)
2409+
.order_by(*LIVELIHOOD_ACTIVITY_ORDER_BY)
23932410
)
23942411
serializer_class = LivelihoodActivitySummarySerializer
23952412
filterset_class = LivelihoodActivityFilterSet

0 commit comments

Comments
 (0)