From 97c2f2515a09e5a19c368f6e39baab56fa90d47a Mon Sep 17 00:00:00 2001 From: Sravan Reddy Date: Thu, 17 Oct 2024 22:58:00 +0530 Subject: [PATCH] move to nested fields --- .../opportunity/api/serializers.py | 26 ++++++------------- .../opportunity/tests/test_api_views.py | 9 ++++--- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/commcare_connect/opportunity/api/serializers.py b/commcare_connect/opportunity/api/serializers.py index cbeafe7d..d293d5ab 100644 --- a/commcare_connect/opportunity/api/serializers.py +++ b/commcare_connect/opportunity/api/serializers.py @@ -1,5 +1,3 @@ -from functools import lru_cache - from django.conf import settings from django.db.models import Sum from rest_framework import serializers @@ -94,6 +92,12 @@ class Meta: fields = ["id", "name", "latitude", "longitude", "radius", "active"] +class OpportunityVerificationFlagsSerializer(serializers.ModelSerializer): + class Meta: + model = OpportunityVerificationFlags + fields = ["form_submission_start", "form_submission_end"] + + class OpportunitySerializer(serializers.ModelSerializer): organization = serializers.SlugRelatedField(read_only=True, slug_field="slug") learn_app = CommCareAppSerializer() @@ -108,8 +112,7 @@ class OpportunitySerializer(serializers.ModelSerializer): payment_units = serializers.SerializerMethodField() is_user_suspended = serializers.SerializerMethodField() catchment_areas = serializers.SerializerMethodField() - start_time_threshold = serializers.SerializerMethodField() - end_time_threshold = serializers.SerializerMethodField() + verification_flags = OpportunityVerificationFlagsSerializer(source="opportunityverificationflags", read_only=True) class Meta: model = Opportunity @@ -138,8 +141,7 @@ class Meta: "payment_units", "is_user_suspended", "catchment_areas", - "start_time_threshold", - "end_time_threshold", + "verification_flags", ] def get_claim(self, obj): @@ -185,18 +187,6 @@ def get_catchment_areas(self, obj): catchments = CatchmentArea.objects.filter(opportunity_access=opp_access) return CatchmentAreaSerializer(catchments, many=True).data - @lru_cache - def _get_flags(self, obj): - return OpportunityVerificationFlags.objects.filter(opportunity=obj).first() - - def get_start_time_threshold(self, obj): - flags = self._get_flags(obj) - return flags.form_submission_start - - def get_end_time_threshold(self, obj): - flags = self._get_flags(obj) - return flags.form_submission_end - @quickcache(vary_on=["user.pk", "opportunity.pk"], timeout=60 * 60) def _get_opp_access(user, opportunity): diff --git a/commcare_connect/opportunity/tests/test_api_views.py b/commcare_connect/opportunity/tests/test_api_views.py index c574c934..9afb6c37 100644 --- a/commcare_connect/opportunity/tests/test_api_views.py +++ b/commcare_connect/opportunity/tests/test_api_views.py @@ -15,7 +15,6 @@ OpportunityAccess, OpportunityClaim, OpportunityClaimLimit, - OpportunityVerificationFlags, Payment, VisitValidationStatus, ) @@ -161,9 +160,11 @@ def test_opportunity_list_endpoint( assert response.data[0]["budget_per_visit"] == max([pu.amount for pu in payment_units]) claim_limits = OpportunityClaimLimit.objects.filter(opportunity_claim__opportunity_access__opportunity=opportunity) assert response.data[0]["claim"]["max_payments"] == sum([cl.max_visits for cl in claim_limits]) - verification_flags = OpportunityVerificationFlags.objects.get(opportunity=opportunity) - assert response.data[0]["start_time_threshold"] == verification_flags.form_submission_start - assert response.data[0]["end_time_threshold"] == verification_flags.form_submission_end + verification_flags = opportunity.opportunityverificationflags + assert response.data[0]["verification_flags"]["form_submission_start"] == str( + verification_flags.form_submission_start + ) + assert response.data[0]["verification_flags"]["form_submission_end"] == str(verification_flags.form_submission_end) def test_delivery_progress_endpoint(