diff --git a/dmutils/__init__.py b/dmutils/__init__.py index fbe22cdd..06c8d864 100644 --- a/dmutils/__init__.py +++ b/dmutils/__init__.py @@ -2,4 +2,4 @@ from .flask_init import init_app -__version__ = '60.7.1' +__version__ = '60.8.0' diff --git a/dmutils/email/dm_mailchimp.py b/dmutils/email/dm_mailchimp.py index d7c924a5..04fca07a 100644 --- a/dmutils/email/dm_mailchimp.py +++ b/dmutils/email/dm_mailchimp.py @@ -229,8 +229,10 @@ def permanently_remove_email_from_list(self, email_address: str, list_id: str) - ) return True except (RequestException, MailChimpError) as e: - self.logger.error( + if get_response_from_exception(e).get('status') == 404: + self.logger.info(f"User ({hashed_email}) not found in list ({list_id})") + return True + self.logger.exception( f"Mailchimp failed to permanently remove user ({hashed_email}) from list ({list_id})", - extra={"error": str(e), "mailchimp_response": get_response_from_exception(e)}, ) return False diff --git a/tests/email/test_dm_mailchimp.py b/tests/email/test_dm_mailchimp.py index 72a4393d..b3b687f8 100644 --- a/tests/email/test_dm_mailchimp.py +++ b/tests/email/test_dm_mailchimp.py @@ -603,3 +603,27 @@ def test_permanently_remove_email_from_list_failure(self, exception): subscriber_hash="ee5ae5f54bdf3394d48ea4e79e6d0e39", ), ] + + def test_permanently_remove_email_from_list_already_removed(self): + dm_mailchimp_client = DMMailChimpClient('username', DUMMY_MAILCHIMP_API_KEY, logging.getLogger('mailchimp')) + with mock.patch.object( + dm_mailchimp_client._client.lists.members, + 'delete_permanent', + autospec=True, + ) as del_perm: + del_perm.side_effect = MailChimpError({"status": 404}) + + with assert_external_service_log_entry(successful_call=False, extra_modules=['mailchimp'], count=1): + result = dm_mailchimp_client.permanently_remove_email_from_list( + "trousers.potato@purse.net", + "modern_society", + ) + + assert result is True + + assert del_perm.call_args_list == [ + mock.call( + list_id="modern_society", + subscriber_hash="ee5ae5f54bdf3394d48ea4e79e6d0e39", + ), + ]