Add migration and documentation

This commit is contained in:
zandercymatics 2024-05-24 11:14:40 -06:00
parent 6ad2546a40
commit cbf1a24b4e
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7
3 changed files with 47 additions and 1 deletions

View file

@ -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

View file

@ -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,
),
]

View file

@ -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}")