From c8b6d693413d703a8a4bb60465ba8daa84183657 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 13 Jan 2021 14:10:51 -0500 Subject: [PATCH] Implement emit_setting_changed_event in terms of emit_settings_changed_event --- common/djangoapps/util/model_utils.py | 32 ++++++++++--------- .../core/djangoapps/user_api/accounts/api.py | 7 +--- openedx/core/djangoapps/user_api/models.py | 11 ------- 3 files changed, 18 insertions(+), 32 deletions(-) diff --git a/common/djangoapps/util/model_utils.py b/common/djangoapps/util/model_utils.py index 815503097c..f97d4f1242 100644 --- a/common/djangoapps/util/model_utils.py +++ b/common/djangoapps/util/model_utils.py @@ -96,7 +96,6 @@ def emit_field_changed_events(instance, user, db_table, excluded_fields=None, hi old_value = clean_field(field_name, changed_fields[field_name]) new_value = clean_field(field_name, getattr(instance, field_name)) clean_changed_fields[field_name] = (old_value, new_value) - emit_setting_changed_event(user, db_table, field_name, old_value, new_value) emit_settings_changed_event(user, db_table, clean_changed_fields) # Remove the now inaccurate _changed_fields attribute. if hasattr(instance, '_changed_fields'): @@ -145,20 +144,7 @@ def emit_setting_changed_event(user, db_table, setting_name, old_value, new_valu Returns: None """ - truncated_fields = truncate_fields(old_value, new_value) - - truncated_fields['setting'] = setting_name - truncated_fields['user_id'] = user.id - truncated_fields['table'] = db_table - - tracker.emit( - USER_SETTINGS_CHANGED_EVENT_NAME, - truncated_fields - ) - - # Announce field change - USER_FIELD_CHANGED.send(sender=None, user=user, table=db_table, setting=setting_name, - old_value=old_value, new_value=new_value) + emit_settings_changed_event(user, db_table, {setting_name: (old_value, new_value)}) def emit_settings_changed_event(user, db_table, changed_fields: Dict[str, Tuple[Any, Any]]): @@ -172,6 +158,22 @@ def emit_settings_changed_event(user, db_table, changed_fields: Dict[str, Tuple[ Returns: None """ + for (setting_name, (old_value, new_value)) in changed_fields.items(): + truncated_fields = truncate_fields(old_value, new_value) + + truncated_fields['setting'] = setting_name + truncated_fields['user_id'] = user.id + truncated_fields['table'] = db_table + + tracker.emit( + USER_SETTINGS_CHANGED_EVENT_NAME, + truncated_fields + ) + + # Announce field change + USER_FIELD_CHANGED.send(sender=None, user=user, table=db_table, setting=setting_name, + old_value=old_value, new_value=new_value) + # Announce field change USER_FIELDS_CHANGED.send(sender=None, user=user, table=db_table, changed_fields=changed_fields) diff --git a/openedx/core/djangoapps/user_api/accounts/api.py b/openedx/core/djangoapps/user_api/accounts/api.py index fd71021b3e..276f16e4f2 100644 --- a/openedx/core/djangoapps/user_api/accounts/api.py +++ b/openedx/core/djangoapps/user_api/accounts/api.py @@ -23,7 +23,7 @@ from common.djangoapps.student.models import ( email_exists_or_retired, username_exists_or_retired ) -from common.djangoapps.util.model_utils import emit_setting_changed_event, emit_settings_changed_event +from common.djangoapps.util.model_utils import emit_setting_changed_event from common.djangoapps.util.password_policy_validators import validate_password from openedx.core.djangoapps.user_api import accounts, errors, helpers @@ -277,11 +277,6 @@ def _notify_language_proficiencies_update_if_needed(data, user, user_profile, ol old_value=old_language_proficiencies, new_value=new_language_proficiencies, ) - emit_settings_changed_event( - user=user, - db_table=user_profile.language_proficiencies.model._meta.db_table, - changed_fields={"language_proficiencies": (old_language_proficiencies, new_language_proficiencies)}, - ) def _update_extended_profile_if_needed(data, user_profile): diff --git a/openedx/core/djangoapps/user_api/models.py b/openedx/core/djangoapps/user_api/models.py index a3347bf2c3..6b2564e6de 100644 --- a/openedx/core/djangoapps/user_api/models.py +++ b/openedx/core/djangoapps/user_api/models.py @@ -32,7 +32,6 @@ from common.djangoapps.student.models import ( from common.djangoapps.util.model_utils import ( emit_setting_changed_event, get_changed_fields_dict, - emit_settings_changed_event, ) @@ -126,11 +125,6 @@ def post_save_callback(sender, **kwargs): user_preference.user, sender._meta.db_table, user_preference.key, user_preference._old_value, user_preference.value # pylint: disable=protected-access ) - emit_settings_changed_event( - user_preference.user, - sender._meta.db_table, - {user_preference.key: (user_preference._old_value, user_preference.value)} # pylint: disable=protected-access - ) user_preference._old_value = None # pylint: disable=protected-access @@ -143,11 +137,6 @@ def post_delete_callback(sender, **kwargs): emit_setting_changed_event( user_preference.user, sender._meta.db_table, user_preference.key, user_preference.value, None ) - emit_settings_changed_event( - user_preference.user, - sender._meta.db_table, - {user_preference.key: (user_preference.value, None)} - ) class UserCourseTag(models.Model):