mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-19 10:59:21 +02:00
Merge pull request #2219 from cisagov/za/2154-enable-disable-email-sending
Ticket #2154: enable/disable email sending
This commit is contained in:
commit
16b4c54770
5 changed files with 38 additions and 4 deletions
|
@ -405,3 +405,9 @@ This function is triggered by the post_save event on the User model, designed to
|
|||
1. For New Users: Upon the creation of a new user, it checks for an existing `Contact` by email. If no matching contact is found, it creates a new Contact using the user's details from Login.gov. If a matching contact is found, it associates this contact with the user. In cases where multiple contacts with the same email exist, it logs a warning and associates the first contact found.
|
||||
|
||||
2. For Existing Users: For users logging in subsequent times, the function ensures that any updates from Login.gov are applied to the associated User record. However, it does not alter any existing Contact records.
|
||||
|
||||
## Disable email sending (toggling the disable_email_sending flag)
|
||||
1. On the app, navigate to `\admin`.
|
||||
2. Under models, click `Waffle flags`.
|
||||
3. Click the `disable_email_sending` record. This should exist by default, if not - create one with that name.
|
||||
4. (Important) Set the field `everyone` to `Yes`. This field overrides all other settings
|
|
@ -2305,6 +2305,8 @@ class UserGroupAdmin(AuditedAdmin):
|
|||
|
||||
|
||||
class WaffleFlagAdmin(FlagAdmin):
|
||||
"""Custom admin implementation of django-waffle's Flag class"""
|
||||
|
||||
class Meta:
|
||||
"""Contains meta information about this class"""
|
||||
|
||||
|
@ -2338,6 +2340,6 @@ admin.site.register(models.VerifiedByStaff, VerifiedByStaffAdmin)
|
|||
# Register our custom waffle implementations
|
||||
admin.site.register(models.WaffleFlag, WaffleFlagAdmin)
|
||||
|
||||
# Unregister Sample and Switch from the waffle library
|
||||
admin.site.unregister(Sample)
|
||||
# Unregister Switch and Sample from the waffle library
|
||||
admin.site.unregister(Switch)
|
||||
admin.site.unregister(Sample)
|
||||
|
|
|
@ -326,7 +326,7 @@ SERVER_EMAIL = "root@get.gov"
|
|||
# endregion
|
||||
|
||||
# region: Waffle feature flags-----------------------------------------------------------###
|
||||
# If Waffle encounters a reference to a flag that is not in the database, should Waffle create the flag?
|
||||
# If Waffle encounters a reference to a flag that is not in the database, create the flag automagically.
|
||||
WAFFLE_CREATE_MISSING_FLAGS = True
|
||||
|
||||
# The model that will be used to keep track of flags. Extends AbstractUserFlag.
|
||||
|
|
|
@ -3,10 +3,12 @@
|
|||
from unittest.mock import MagicMock
|
||||
|
||||
from django.test import TestCase
|
||||
from waffle.testutils import override_flag
|
||||
from registrar.utility import email
|
||||
from registrar.utility.email import send_templated_email
|
||||
from .common import completed_domain_request, less_console_noise
|
||||
|
||||
from datetime import datetime
|
||||
from registrar.utility import email
|
||||
import boto3_mocking # type: ignore
|
||||
|
||||
|
||||
|
@ -15,6 +17,24 @@ class TestEmails(TestCase):
|
|||
self.mock_client_class = MagicMock()
|
||||
self.mock_client = self.mock_client_class.return_value
|
||||
|
||||
@boto3_mocking.patching
|
||||
@override_flag("disable_email_sending", active=True)
|
||||
def test_disable_email_flag(self):
|
||||
"""Test if the 'disable_email_sending' stops emails from being sent"""
|
||||
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
|
||||
expected_message = "Email sending is disabled due to"
|
||||
with self.assertRaisesRegex(email.EmailSendingError, expected_message):
|
||||
send_templated_email(
|
||||
"test content",
|
||||
"test subject",
|
||||
"doesnotexist@igorville.com",
|
||||
context={"domain_request": self},
|
||||
bcc_address=None,
|
||||
)
|
||||
|
||||
# Assert that an email wasn't sent
|
||||
self.assertFalse(self.mock_client.send_email.called)
|
||||
|
||||
@boto3_mocking.patching
|
||||
def test_submission_confirmation(self):
|
||||
"""Submission confirmation email works."""
|
||||
|
|
|
@ -8,6 +8,7 @@ from django.template.loader import get_template
|
|||
from email.mime.application import MIMEApplication
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
from waffle import flag_is_active
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -35,6 +36,11 @@ def send_templated_email(
|
|||
|
||||
Raises EmailSendingError if SES client could not be accessed
|
||||
"""
|
||||
|
||||
if flag_is_active(None, "disable_email_sending") and not settings.IS_PRODUCTION: # type: ignore
|
||||
message = "Could not send email. Email sending is disabled due to flag 'disable_email_sending'."
|
||||
raise EmailSendingError(message)
|
||||
|
||||
template = get_template(template_name)
|
||||
email_body = template.render(context=context)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue