From 066c7afc7fd389a1e6e496bfb5a8babd5bf57e15 Mon Sep 17 00:00:00 2001 From: Alejandro MG Date: Mon, 8 Apr 2024 13:57:22 +0200 Subject: [PATCH] Reduces size of the actionable canteens list endpoint --- api/serializers/__init__.py | 1 + api/serializers/canteen.py | 14 ++++++++++++++ api/tests/test_canteens.py | 2 +- api/views/canteen.py | 7 +++---- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/api/serializers/__init__.py b/api/serializers/__init__.py index 9ac43ebbdd..e8fe50c8f4 100644 --- a/api/serializers/__init__.py +++ b/api/serializers/__init__.py @@ -6,6 +6,7 @@ ManagingTeamSerializer, CanteenPreviewSerializer, SatelliteCanteenSerializer, + CanteenActionsListSerializer, CanteenActionsSerializer, CanteenStatusSerializer, CanteenTeledeclarationSerializer, diff --git a/api/serializers/canteen.py b/api/serializers/canteen.py index 7a7d91e00f..a57a9aa7f2 100644 --- a/api/serializers/canteen.py +++ b/api/serializers/canteen.py @@ -357,6 +357,20 @@ class Meta: fields = ("id", "managers", "manager_invitations") +class CanteenActionsListSerializer(serializers.ModelSerializer): + action = serializers.CharField(allow_null=True) + + class Meta: + model = Canteen + fields = ( + "id", + "name", + "action", + "production_type", + ) + read_only_fields = fields + + class CanteenActionsSerializer(serializers.ModelSerializer): # TODO: is it worth moving the job of fetching the specific diag required to the front? diagnostics = FullDiagnosticSerializer(many=True, read_only=True, source="diagnostic_set") diff --git a/api/tests/test_canteens.py b/api/tests/test_canteens.py index 7e140322c7..53eef1efad 100644 --- a/api/tests/test_canteens.py +++ b/api/tests/test_canteens.py @@ -889,7 +889,7 @@ def test_get_canteen_actions(self): for index, (canteen, action) in zip(range(len(expected_actions)), expected_actions): self.assertEqual(returned_canteens[index]["id"], canteen.id) self.assertEqual(returned_canteens[index]["action"], action) - self.assertIn("sectors", returned_canteens[index]) + self.assertIn("productionType", returned_canteens[index]) self.assertTrue(body["hasPendingActions"]) @override_settings(ENABLE_TELEDECLARATION=True) diff --git a/api/views/canteen.py b/api/views/canteen.py index 10476b075d..58f3985a64 100644 --- a/api/views/canteen.py +++ b/api/views/canteen.py @@ -31,6 +31,7 @@ CanteenPreviewSerializer, ManagingTeamSerializer, SatelliteCanteenSerializer, + CanteenActionsListSerializer, CanteenActionsSerializer, CanteenStatusSerializer, ElectedCanteenSerializer, @@ -1189,7 +1190,7 @@ def post(self, request, canteen_pk, satellite_pk): class ActionableCanteensListView(ListAPIView): permission_classes = [IsAuthenticated] model = Canteen - serializer_class = CanteenActionsSerializer + serializer_class = CanteenActionsListSerializer pagination_class = CanteenActionsPagination filter_backends = [ django_filters.DjangoFilterBackend, @@ -1250,9 +1251,7 @@ def annotate_actions(queryset, year): ) # prep complete diag action - complete_diagnostics = Diagnostic.objects.filter( - pk=OuterRef("diagnostic_for_year"), value_total_ht__gt=0, diagnostic_type__isnull=False - ) + complete_diagnostics = Diagnostic.objects.filter(pk=OuterRef("diagnostic_for_year"), value_total_ht__gt=0) user_canteens = user_canteens.annotate(has_complete_diag=Exists(Subquery(complete_diagnostics))) # prep TD action tds = Teledeclaration.objects.filter(