From 54f59bc3b47374c577cfc151cf31459c6f449111 Mon Sep 17 00:00:00 2001 From: Saleem Latif Date: Thu, 19 Nov 2020 11:25:16 +0500 Subject: [PATCH] Revert migration update as it creates more issues than it fixes. --- common/djangoapps/student/helpers.py | 15 +++++++++++++-- .../0001_data__add_ecommerce_service_user.py | 1 - lms/djangoapps/email_marketing/signals.py | 3 ++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/common/djangoapps/student/helpers.py b/common/djangoapps/student/helpers.py index 741e9358f9..3f3a2ab865 100644 --- a/common/djangoapps/student/helpers.py +++ b/common/djangoapps/student/helpers.py @@ -15,9 +15,9 @@ from completion.utilities import get_key_to_last_completed_block from django.conf import settings from django.contrib.auth import load_backend from django.contrib.auth.models import User -from django.core.exceptions import PermissionDenied +from django.core.exceptions import PermissionDenied, ObjectDoesNotExist from django.core.validators import ValidationError -from django.db import IntegrityError, transaction +from django.db import IntegrityError, transaction, ProgrammingError from django.urls import NoReverseMatch, reverse from django.utils.translation import ugettext as _ from pytz import UTC @@ -726,3 +726,14 @@ def get_resume_urls_for_enrollments(user, enrollments): url_to_block = '' resume_course_urls[enrollment.course_id] = url_to_block return resume_course_urls + + +def does_user_profile_exist(user): + """ + Check if user has an associated profile. + Ignore errors and return False in case of errors. + """ + try: + return hasattr(user, 'profile') + except (ProgrammingError, ObjectDoesNotExist): + return False diff --git a/lms/djangoapps/commerce/migrations/0001_data__add_ecommerce_service_user.py b/lms/djangoapps/commerce/migrations/0001_data__add_ecommerce_service_user.py index 30d50ee8cf..0ebf5b6fe0 100644 --- a/lms/djangoapps/commerce/migrations/0001_data__add_ecommerce_service_user.py +++ b/lms/djangoapps/commerce/migrations/0001_data__add_ecommerce_service_user.py @@ -26,7 +26,6 @@ class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('user_api', '0002_retirementstate_userretirementstatus'), - ('student', '0033_userprofile_state'), ] operations = [ diff --git a/lms/djangoapps/email_marketing/signals.py b/lms/djangoapps/email_marketing/signals.py index 6def2d32bf..5f69dcc921 100644 --- a/lms/djangoapps/email_marketing/signals.py +++ b/lms/djangoapps/email_marketing/signals.py @@ -26,6 +26,7 @@ from lms.djangoapps.email_marketing.tasks import ( from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY from openedx.core.djangoapps.user_authn.cookies import CREATE_LOGON_COOKIE from openedx.core.djangoapps.user_authn.views.register import REGISTER_USER +from common.djangoapps.student.helpers import does_user_profile_exist from common.djangoapps.student.signals import SAILTHRU_AUDIT_PURCHASE from common.djangoapps.util.model_utils import USER_FIELD_CHANGED @@ -174,7 +175,7 @@ def email_marketing_user_field_changed(sender, user=None, table=None, setting=No return # Ignore users that do not yet have a profile - if not hasattr(user, 'profile'): + if not does_user_profile_exist(user): return # ignore anything but User, Profile or UserPreference tables