From 6d51428e4a5511f4422cb3b91f7e754bf9358c41 Mon Sep 17 00:00:00 2001 From: Kira Date: Mon, 14 Mar 2022 17:06:52 -0400 Subject: [PATCH] fix: duplicate entry fixes --- .../tests/test_samlproviderconfig.py | 3 ++- lms/djangoapps/program_enrollments/signals.py | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/common/djangoapps/third_party_auth/samlproviderconfig/tests/test_samlproviderconfig.py b/common/djangoapps/third_party_auth/samlproviderconfig/tests/test_samlproviderconfig.py index 49e169b62c..e53de1b124 100644 --- a/common/djangoapps/third_party_auth/samlproviderconfig/tests/test_samlproviderconfig.py +++ b/common/djangoapps/third_party_auth/samlproviderconfig/tests/test_samlproviderconfig.py @@ -2,6 +2,7 @@ Tests for SAMLProviderConfig endpoints """ import copy +import re from uuid import uuid4 from django.urls import reverse from django.contrib.sites.models import Site @@ -96,7 +97,7 @@ class SAMLProviderConfigTests(APITestCase): assert results[0]['entity_id'] == SINGLE_PROVIDER_CONFIG['entity_id'] assert results[0]['metadata_source'] == SINGLE_PROVIDER_CONFIG['metadata_source'] assert response.data['results'][0]['country'] == SINGLE_PROVIDER_CONFIG['country'] - assert results[0]['display_name'] == "saml-test-ep-1" + assert re.match(r"saml-test-slug-\d{4}", results[0]['display_name']) assert SAMLProviderConfig.objects.count() == 1 def test_get_one_config_by_enterprise_uuid_invalid_uuid(self): diff --git a/lms/djangoapps/program_enrollments/signals.py b/lms/djangoapps/program_enrollments/signals.py index 8d7b910207..78e23326a8 100644 --- a/lms/djangoapps/program_enrollments/signals.py +++ b/lms/djangoapps/program_enrollments/signals.py @@ -4,8 +4,9 @@ Signal handlers for program enrollments import logging +import datetime -from django.db.models.signals import post_save +from django.db.models.signals import pre_save, post_save from django.dispatch import receiver from social_django.models import UserSocialAuth @@ -48,11 +49,12 @@ def generate_default_display_name(self): """ Returns a default display name for SamlProviderConfig. """ - return f'{self.prefix}-{self.slug}-{self.id}' + t = datetime.datetime.now() + return f'{self.prefix}-{self.slug}-{t.minute}{t.second}' -@receiver(post_save, sender=SAMLProviderConfig) -def save_default_display_name(sender, instance, created, **kwargs): # lint-amnesty, pylint: disable=unused-argument +@receiver(pre_save, sender=SAMLProviderConfig) +def save_default_display_name(sender, instance, **kwargs): # lint-amnesty, pylint: disable=unused-argument """ Post-save signal that sets default display name if one is not provided """ @@ -60,7 +62,6 @@ def save_default_display_name(sender, instance, created, **kwargs): # lint-amne # check if display_name is None, empty, or just spaces if not (this_display_name and this_display_name.strip()): instance.display_name = generate_default_display_name(instance) - instance.save() def matriculate_learner(user, uid):