diff --git a/openedx/core/djangoapps/appsembler/sites/serializers.py b/openedx/core/djangoapps/appsembler/sites/serializers.py index 5621dca76d5c..6273ee0c05e8 100644 --- a/openedx/core/djangoapps/appsembler/sites/serializers.py +++ b/openedx/core/djangoapps/appsembler/sites/serializers.py @@ -1,3 +1,4 @@ +import beeline from django.conf import settings from django.contrib.sites.models import Site from django.db import transaction @@ -31,7 +32,9 @@ class Meta: model = SiteConfiguration fields = ('id', 'values', 'sassVariables', 'pageElements') + @beeline.traced(name="SiteConfigurationSerializer.update") def update(self, instance, validated_data): + beeline.add_context_field("validated_data", validated_data) object = super(SiteConfigurationSerializer, self).update(instance, validated_data) return object @@ -48,13 +51,17 @@ class Meta: model = AlternativeDomain fields = ('id', 'site', 'domain') + @beeline.traced(name="AlternativeDomainSerializer.create") def create(self, validated_data): """ Allow only one alternative domain per Site model. """ + beeline.add_context_field("validated_data", validated_data) domain, created = AlternativeDomain.objects.get_or_create( site=validated_data.get('site', None), defaults={'domain': validated_data.get('domain', None)}) + beeline.add_context_field("domain", domain) + beeline.add_context_field("created", created) if not created: domain.domain = validated_data.get('domain', None) domain.save() @@ -70,11 +77,14 @@ class Meta: model = Site fields = ('id', 'name', 'domain', 'configuration', 'alternativeDomain', 'customDomainStatus') + @beeline.traced(name="SiteSerializer.create") def create(self, validated_data): + beeline.add_context_field("validated_data", validated_data) site = super(SiteSerializer, self).create(validated_data) organization, site, user = bootstrap_site(site) return site + @beeline.traced(name="SiteSerializer.custom_domain_status") def custom_domain_status(self, obj): if not hasattr(obj, 'alternative_domain'): return 'inactive' @@ -86,7 +96,9 @@ class Meta: model = Organization fields = ('id', 'name', 'short_name', 'edx_uuid') + @beeline.traced(name="OrganizationSerializer.create") def create(self, validated_data): + beeline.add_context_field("validated_data", validated_data) return organizations_api.add_organization(**validated_data) @@ -98,7 +110,9 @@ class RegistrationSerializer(serializers.Serializer): password = serializers.CharField(required=False) initial_values = serializers.DictField(required=False) + @beeline.traced(name="RegistrationSerializer.create") def create(self, validated_data): + beeline.add_context_field(validated_data, validated_data) site_data = validated_data.pop('site') site = Site.objects.create(**site_data) organization_data = validated_data.pop('organization') @@ -140,6 +154,8 @@ def create(self, validated_data): # clone course if settings.FEATURES.get("APPSEMBLER_IMPORT_DEFAULT_COURSE_ON_SITE_CREATION", False): + beeline.add_context_field("default_course_on_site_creation_flag", True) + def import_task_on_commit(): """ Run the import task after the commit to avoid Organization.DoesNotExist error on the Celery. diff --git a/openedx/core/djangoapps/appsembler/sites/utils.py b/openedx/core/djangoapps/appsembler/sites/utils.py index 86386024931d..cdc1bb36807b 100644 --- a/openedx/core/djangoapps/appsembler/sites/utils.py +++ b/openedx/core/djangoapps/appsembler/sites/utils.py @@ -438,10 +438,13 @@ def json_to_sass(json_input): def bootstrap_site(site, org_data=None, username=None): from openedx.core.djangoapps.site_configuration.models import SiteConfiguration organization_slug = org_data.get('name') + beeline.add_context_field("org_data", org_data) + beeline.add_context_field("username", username) # don't use create because we need to call save() to set some values automatically site_config = SiteConfiguration(site=site, enabled=True) site_config.save() site.configuration_id = site_config.id + beeline.add_context_field("site_config_id", site_config.id) # temp workarounds while old staging is still up and running if organization_slug: organization_data = org_api.add_organization({