diff --git a/docs/developer/README.md b/docs/developer/README.md index 31a94e6e7..dca899074 100644 --- a/docs/developer/README.md +++ b/docs/developer/README.md @@ -405,3 +405,11 @@ 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 switch) +Feature switches are booleans that behave like environment variables that you can toggle through the DB. +This switch globally disables our email sending feature. Using it is as simple as checking a box. +1. On the app, navigate to `\admin`. +2. Under models, click `Waffle switches`. +3. Click the `disable_email_sending` record. This should exist by default, if not - create one with that name. +4. (Important) Enable the checkbox for the field `Active`. This field overrides all other settings \ No newline at end of file diff --git a/src/registrar/migrations/0097_create_groups_v13.py b/src/registrar/migrations/0097_create_groups_v13.py new file mode 100644 index 000000000..90d1cb02e --- /dev/null +++ b/src/registrar/migrations/0097_create_groups_v13.py @@ -0,0 +1,37 @@ +# This migration creates the create_full_access_group and create_cisa_analyst_group groups +# It is dependent on 0079 (which populates federal agencies) +# If permissions on the groups need changing, edit CISA_ANALYST_GROUP_PERMISSIONS +# in the user_group model then: +# [NOT RECOMMENDED] +# step 1: docker-compose exec app ./manage.py migrate --fake registrar 0035_contenttypes_permissions +# step 2: docker-compose exec app ./manage.py migrate registrar 0036_create_groups +# step 3: fake run the latest migration in the migrations list +# [RECOMMENDED] +# Alternatively: +# step 1: duplicate the migration that loads data +# step 2: docker-compose exec app ./manage.py migrate + +from django.db import migrations +from registrar.models import UserGroup +from typing import Any + + +# For linting: RunPython expects a function reference, +# so let's give it one +def create_groups(apps, schema_editor) -> Any: + UserGroup.create_cisa_analyst_group(apps, schema_editor) + UserGroup.create_full_access_group(apps, schema_editor) + + +class Migration(migrations.Migration): + dependencies = [ + ("registrar", "0096_waffleswitch"), + ] + + operations = [ + migrations.RunPython( + create_groups, + reverse_code=migrations.RunPython.noop, + atomic=True, + ), + ] diff --git a/src/registrar/utility/email.py b/src/registrar/utility/email.py index f73130e9f..18f64da86 100644 --- a/src/registrar/utility/email.py +++ b/src/registrar/utility/email.py @@ -9,6 +9,7 @@ from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from waffle import switch_is_active +from django.conf import settings logger = logging.getLogger(__name__) @@ -34,7 +35,7 @@ def send_templated_email( context as Django's HTML templates. context gives additional information that the template may use. """ - if switch_is_active("disable_email_sending"): + if switch_is_active("disable_email_sending") and not settings.IS_PRODUCTION: raise EmailSendingError("Could not send email. Email sending is disabled due to switch 'disable_email_sending'.") logger.info(f"An email was sent! Template name: {template_name} to {to_address}")