Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/docs/partners-courts/email-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ submission_notifications:
enabled: false # stay disabled until delivery, copy and sender signoff
format: html # choose plain_text for the current SMTP transport
templates:
from_email: "noreply@example.com
email_confirmation_subject: "Your filing was submitted"
email_confirmation_contents: |-
The e-filing system received a filing in your submission.
Expand Down
12 changes: 9 additions & 3 deletions efile_app/efile/services/submission_notifications.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from efile.services.filings import court_contact
from efile.services.waiver_documents import has_waiver_document

PROXY_EMAIL_FIELDS = (
PROXY_EMAIL_FIELDS_REQUIRED = (
"email_confirmation_subject",
"email_confirmation_contents",
"acceptance_subject",
Expand All @@ -21,6 +21,8 @@
"neutral_contents",
)

PROXY_EMAIL_FIELDS = PROXY_EMAIL_FIELDS_REQUIRED + ("from_email",)


def strip_client_email_fields(efile_data):
"""Remove every supported notification field supplied by the browser."""
Expand All @@ -37,7 +39,7 @@ def submission_email_fields(request, draft, jurisdiction, config=None):

templates = notification_config.get("templates") or {}
if not isinstance(templates, dict) or not all(
isinstance(templates.get(field), str) and templates[field].strip() for field in PROXY_EMAIL_FIELDS
isinstance(templates.get(field), str) and templates[field].strip() for field in PROXY_EMAIL_FIELDS_REQUIRED
):
return {}

Expand All @@ -50,7 +52,11 @@ def submission_email_fields(request, draft, jurisdiction, config=None):
"waiver_line": _waiver_line(draft, waiver_url),
}
values.update(_conditional_text(notification_config, draft))
fields = {field: Template(templates[field]).safe_substitute(values).strip() for field in PROXY_EMAIL_FIELDS}
fields = {
field: Template(templates[field]).safe_substitute(values).strip() for field in PROXY_EMAIL_FIELDS_REQUIRED
}
if "from_email" in templates:
fields["from_email"] = Template(templates["from_email"]).safe_substitute(values).strip()
if notification_config.get("format") == "html":
from efile.services.filing_timing import court_filing_timing
from efile.services.notification_email_html import render_notification_email
Expand Down
5 changes: 5 additions & 0 deletions efile_app/efile/tests/test_submission_notifications.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,14 @@ def test_plain_text_fallback_links_to_tracker_and_waiver_source():
config = deepcopy(config_loader.load_jurisdiction_config("illinois"))
config["submission_notifications"]["enabled"] = True
config["submission_notifications"]["format"] = "plain_text"
config["submission_notifications"]["templates"]["from_email"] = "noreply@example.com"
config["fee_waiver"]["source_url"] = "https://example.test/waiver"

fields = submission_email_fields(request, draft, "illinois", config)
tracker_url = request.build_absolute_uri(reverse("submission_tracker", kwargs={"public_id": PUBLIC_ID}))

assert set(fields) == set(PROXY_EMAIL_FIELDS)
assert "noreply@example.com" in fields["from_email"]
assert tracker_url in fields["email_confirmation_contents"]
assert "https://example.test/waiver" in fields["email_confirmation_contents"]
assert "If you requested a fee waiver, check the court’s decision" in fields["email_confirmation_contents"]
Expand Down Expand Up @@ -155,6 +157,7 @@ def test_default_templates_are_available_for_another_enabled_jurisdiction():
draft = fake_draft(selected_payment_account_type="CC", court_code="unknown")
config = deepcopy(config_loader.load_jurisdiction_config("massachusetts"))
config["submission_notifications"]["enabled"] = True
config["submission_notifications"]["templates"]["from_email"] = "noreply@example.com"

fields = submission_email_fields(request, draft, "massachusetts", config)

Expand Down Expand Up @@ -205,6 +208,7 @@ def test_forwarded_payload_strips_client_templates_and_preserves_lead_contact(en
}
config = deepcopy(config_loader.load_jurisdiction_config("illinois"))
config["submission_notifications"]["enabled"] = enabled
config["submission_notifications"]["templates"]["from_email"] = "noreply@example.com"
api_response = SimpleNamespace(status_code=201, json=lambda: {"envelopeId": "env-1"})

with (
Expand Down Expand Up @@ -259,6 +263,7 @@ def test_notification_config_error_does_not_block_or_retry_filing():
def test_missing_optional_contacts_and_waiver_url_leave_no_empty_labels():
config = deepcopy(config_loader.load_jurisdiction_config("massachusetts"))
config["submission_notifications"]["enabled"] = True
config["submission_notifications"]["templates"]["from_email"] = "noreply@example.com"
config.pop("fee_waiver", None)
request = RequestFactory().get("/", HTTP_HOST="testserver")
draft = fake_draft(selected_payment_account_type="WV", court_code="unknown")
Expand Down
Loading