Skip to content

Commit 4eb27b5

Browse files
fix: redact pending primary email before retirement deletion
1 parent 5e6a070 commit 4eb27b5

2 files changed

Lines changed: 4 additions & 5 deletions

File tree

common/djangoapps/student/models/user.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -916,8 +916,11 @@ class PendingEmailChange(DeletableByUserValue, models.Model): # noqa: DJ008
916916
def redact_pending_email_by_user_value(cls, value, field):
917917
"""
918918
Redact pending email change fields for records matching ``field=value``.
919+
919920
This method is intended for retirement flows where downstream systems
920921
may keep soft-deleted snapshots of these rows.
922+
923+
Returns True if redacted, and False if no matching records found.
921924
"""
922925
filter_kwargs = {field: value}
923926
records_matching_user_value = cls.objects.filter(**filter_kwargs)

common/djangoapps/student/tests/test_models.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -612,13 +612,9 @@ def test_redact_by_user_redacts_pending_email_change_fields(self):
612612
assert self.email_change.activation_key == original_activation_key
613613

614614
def test_redact_by_user_no_effect_for_user_with_no_email_change(self):
615-
original_new_email = self.email_change.new_email
616-
original_activation_key = self.email_change.activation_key
615+
"""Verify that redacting a user with no pending email change returns False."""
617616
record_was_redacted = PendingEmailChange.redact_pending_email_by_user_value(self.user2, field='user')
618617
assert not record_was_redacted
619-
self.email_change.refresh_from_db()
620-
assert self.email_change.new_email == original_new_email
621-
assert self.email_change.activation_key == original_activation_key
622618

623619

624620
class TestCourseEnrollmentAllowed(ModuleStoreTestCase): # lint-amnesty, pylint: disable=missing-class-docstring

0 commit comments

Comments
 (0)