From 82b7d387734a24e49ca6677a654a868ea45a788e Mon Sep 17 00:00:00 2001 From: Syed Muhammad Dawoud Sheraz Ali <40599381+DawoudSheraz@users.noreply.github.com> Date: Thu, 14 Mar 2024 11:10:11 +0500 Subject: [PATCH] temp: add function_trace on various serializers for additional tracing (#4287) * temp: add function_trace on various serializers for additional tracing * chore: rename * chore: update trace --- course_discovery/apps/api/serializers.py | 7 +++++++ course_discovery/apps/api/v1/views/pathways.py | 2 -- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/course_discovery/apps/api/serializers.py b/course_discovery/apps/api/serializers.py index 5dd36bb10a..4972a670ca 100644 --- a/course_discovery/apps/api/serializers.py +++ b/course_discovery/apps/api/serializers.py @@ -17,6 +17,7 @@ from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ from django_countries.serializer_fields import CountryField +from edx_django_utils.monitoring import function_trace from localflavor.us.us_states import CONTIGUOUS_STATES from opaque_keys.edx.locator import CourseLocator from rest_flex_fields.serializers import FlexFieldsSerializerMixin @@ -431,6 +432,7 @@ def get_banner_image_url(self, obj): return None @classmethod + @function_trace('organization_serializer_prefetch') def prefetch_queryset(cls, partner): return Organization.objects.filter(partner=partner).select_related('partner').prefetch_related('tags') @@ -776,6 +778,7 @@ class SeatSerializer(BaseModelSerializer): bulk_sku = serializers.CharField() @classmethod + @function_trace('seat_serializer_fetch') def prefetch_queryset(cls): return Seat.everything.all().select_related('currency', 'type') @@ -924,6 +927,7 @@ class MinimalCourseRunSerializer(FlexFieldsSerializerMixin, TimestampModelSerial variant_id = serializers.UUIDField(allow_null=True, required=False) @classmethod + @function_trace('minimal_course_run_serializer_prefetch') def prefetch_queryset(cls, queryset=None): # Explicitly check for None to avoid returning all CourseRuns when the # queryset passed in happens to be empty. @@ -1179,6 +1183,7 @@ class MinimalCourseSerializer(FlexFieldsSerializerMixin, TimestampModelSerialize course_run_statuses = serializers.ReadOnlyField() @classmethod + @function_trace('minimal_course_serializer_prefetch') def prefetch_queryset(cls, queryset=None, course_runs=None): # Explicitly check for None to avoid returning all Courses when the # queryset passed in happens to be empty. @@ -1989,6 +1994,7 @@ def get_organization_logo_override_url(self, obj): return None @classmethod + @function_trace('minimal_program_prefetch_trace') def prefetch_queryset(cls, partner, queryset=None): # Explicitly check if the queryset is None before selecting related queryset = queryset if queryset is not None else Program.objects.filter(partner=partner) @@ -2295,6 +2301,7 @@ class PathwaySerializer(BaseModelSerializer): course_run_statuses = serializers.ReadOnlyField() @classmethod + @function_trace('pathways_program_prefetch') def prefetch_queryset(cls, partner): queryset = Pathway.objects.filter(partner=partner) diff --git a/course_discovery/apps/api/v1/views/pathways.py b/course_discovery/apps/api/v1/views/pathways.py index 0607ee0ebe..c428a0074c 100644 --- a/course_discovery/apps/api/v1/views/pathways.py +++ b/course_discovery/apps/api/v1/views/pathways.py @@ -1,5 +1,4 @@ """ Views for accessing Pathway data """ -from edx_django_utils.monitoring import function_trace from rest_framework import viewsets from course_discovery.apps.api import serializers @@ -11,7 +10,6 @@ class PathwayViewSet(CompressedCacheResponseMixin, viewsets.ReadOnlyModelViewSet permission_classes = (ReadOnlyByPublisherUser,) serializer_class = serializers.PathwaySerializer - @function_trace('pathways_api_queryset') def get_queryset(self): queryset = self.get_serializer_class().prefetch_queryset(partner=self.request.site.partner) return queryset.order_by('created')