mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-17 18:09:25 +02:00
Email logic (needs cleanup)
This commit is contained in:
parent
34f6b03078
commit
a8fa24411e
4 changed files with 27 additions and 16 deletions
|
@ -1703,12 +1703,21 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportModelAdmin):
|
||||||
return super().save_model(request, obj, form, change)
|
return super().save_model(request, obj, form, change)
|
||||||
|
|
||||||
# == Handle non-status changes == #
|
# == Handle non-status changes == #
|
||||||
if obj.action_needed_reason and not obj.action_needed_reason_email:
|
|
||||||
self._handle_action_needed_reason_email(obj)
|
|
||||||
should_save = True
|
|
||||||
|
|
||||||
# Get the original domain request from the database.
|
# Get the original domain request from the database.
|
||||||
original_obj = models.DomainRequest.objects.get(pk=obj.pk)
|
original_obj = models.DomainRequest.objects.get(pk=obj.pk)
|
||||||
|
|
||||||
|
if obj.action_needed_reason:
|
||||||
|
text = self._get_action_needed_reason_default_email_text(obj, obj.action_needed_reason)
|
||||||
|
body_text = text.get("email_body_text")
|
||||||
|
if body_text:
|
||||||
|
body_text.strip().lstrip("\n")
|
||||||
|
is_default_email = body_text == obj.action_needed_reason_email
|
||||||
|
reason_changed = obj.action_needed_reason != original_obj.action_needed_reason
|
||||||
|
if is_default_email and reason_changed:
|
||||||
|
obj.action_needed_reason_email = body_text
|
||||||
|
should_save = True
|
||||||
|
|
||||||
|
|
||||||
if obj.status == original_obj.status:
|
if obj.status == original_obj.status:
|
||||||
# If the status hasn't changed, let the base function take care of it
|
# If the status hasn't changed, let the base function take care of it
|
||||||
return super().save_model(request, obj, form, change)
|
return super().save_model(request, obj, form, change)
|
||||||
|
@ -1721,10 +1730,6 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportModelAdmin):
|
||||||
if should_save:
|
if should_save:
|
||||||
return super().save_model(request, obj, form, change)
|
return super().save_model(request, obj, form, change)
|
||||||
|
|
||||||
def _handle_action_needed_reason_email(self, obj):
|
|
||||||
text = self._get_action_needed_reason_default_email_text(obj, obj.action_needed_reason)
|
|
||||||
obj.action_needed_reason_email = text.get("email_body_text")
|
|
||||||
|
|
||||||
def _handle_status_change(self, request, obj, original_obj):
|
def _handle_status_change(self, request, obj, original_obj):
|
||||||
"""
|
"""
|
||||||
Checks for various conditions when a status change is triggered.
|
Checks for various conditions when a status change is triggered.
|
||||||
|
|
|
@ -619,7 +619,7 @@ class DomainRequest(TimeStampedModel):
|
||||||
# We don't send emails out in state "other"
|
# We don't send emails out in state "other"
|
||||||
if self.action_needed_reason != self.ActionNeededReasons.OTHER:
|
if self.action_needed_reason != self.ActionNeededReasons.OTHER:
|
||||||
_email_content = self.action_needed_reason_email
|
_email_content = self.action_needed_reason_email
|
||||||
self._send_action_needed_reason_email(custom_email_content=_email_content)
|
self._send_action_needed_reason_email(email_content=_email_content)
|
||||||
|
|
||||||
def sync_yes_no_form_fields(self):
|
def sync_yes_no_form_fields(self):
|
||||||
"""Some yes/no forms use a db field to track whether it was checked or not.
|
"""Some yes/no forms use a db field to track whether it was checked or not.
|
||||||
|
@ -857,10 +857,10 @@ class DomainRequest(TimeStampedModel):
|
||||||
|
|
||||||
# Send out an email if an action needed reason exists
|
# Send out an email if an action needed reason exists
|
||||||
if self.action_needed_reason and self.action_needed_reason != self.ActionNeededReasons.OTHER:
|
if self.action_needed_reason and self.action_needed_reason != self.ActionNeededReasons.OTHER:
|
||||||
custom_email_content = self.action_needed_reason_email
|
email_content = self.action_needed_reason_email
|
||||||
self._send_action_needed_reason_email(send_email, custom_email_content)
|
self._send_action_needed_reason_email(send_email, email_content)
|
||||||
|
|
||||||
def _send_action_needed_reason_email(self, send_email=True, custom_email_content=None):
|
def _send_action_needed_reason_email(self, send_email=True, email_content=None):
|
||||||
"""Sends out an automatic email for each valid action needed reason provided"""
|
"""Sends out an automatic email for each valid action needed reason provided"""
|
||||||
|
|
||||||
# Store the filenames of the template and template subject
|
# Store the filenames of the template and template subject
|
||||||
|
@ -871,7 +871,8 @@ class DomainRequest(TimeStampedModel):
|
||||||
# If these hashes differ, then that means that we're sending custom content.
|
# If these hashes differ, then that means that we're sending custom content.
|
||||||
default_email_hash = self._get_action_needed_reason_email_hash()
|
default_email_hash = self._get_action_needed_reason_email_hash()
|
||||||
current_email_hash = convert_string_to_sha256_hash(self.action_needed_reason_email)
|
current_email_hash = convert_string_to_sha256_hash(self.action_needed_reason_email)
|
||||||
if default_email_hash != current_email_hash:
|
if self.action_needed_reason_email and default_email_hash != current_email_hash:
|
||||||
|
print(f"sending custom email for: {current_email_hash}")
|
||||||
email_template_name = "custom_email.txt"
|
email_template_name = "custom_email.txt"
|
||||||
|
|
||||||
# Check for the "type" of action needed reason.
|
# Check for the "type" of action needed reason.
|
||||||
|
@ -902,7 +903,7 @@ class DomainRequest(TimeStampedModel):
|
||||||
email_template_subject=f"emails/action_needed_reasons/{email_template_subject_name}",
|
email_template_subject=f"emails/action_needed_reasons/{email_template_subject_name}",
|
||||||
send_email=send_email,
|
send_email=send_email,
|
||||||
bcc_address=bcc_address,
|
bcc_address=bcc_address,
|
||||||
custom_email_content=custom_email_content,
|
custom_email_content=email_content,
|
||||||
wrap_email=True,
|
wrap_email=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -919,7 +920,8 @@ class DomainRequest(TimeStampedModel):
|
||||||
recipient = self.creator if flag_is_active(None, "profile_feature") else self.submitter
|
recipient = self.creator if flag_is_active(None, "profile_feature") else self.submitter
|
||||||
# Return the content of the rendered views
|
# Return the content of the rendered views
|
||||||
context = {"domain_request": self, "recipient": recipient}
|
context = {"domain_request": self, "recipient": recipient}
|
||||||
body_text = template.render(context=context)
|
body_text = template.render(context=context).strip().lstrip("\n")
|
||||||
|
print(f"body: {body_text}")
|
||||||
return convert_string_to_sha256_hash(body_text)
|
return convert_string_to_sha256_hash(body_text)
|
||||||
|
|
||||||
@transition(
|
@transition(
|
||||||
|
|
|
@ -324,5 +324,7 @@ def convert_queryset_to_dict(queryset, is_model=True, key="id"):
|
||||||
return request_dict
|
return request_dict
|
||||||
|
|
||||||
|
|
||||||
def convert_string_to_sha256_hash(string_to_convert):
|
def convert_string_to_sha256_hash(string_to_convert: str):
|
||||||
|
if not string_to_convert:
|
||||||
|
return None
|
||||||
return hashlib.sha256(string_to_convert.encode('utf-8')).hexdigest()
|
return hashlib.sha256(string_to_convert.encode('utf-8')).hexdigest()
|
|
@ -45,6 +45,8 @@ def send_templated_email(
|
||||||
|
|
||||||
template = get_template(template_name)
|
template = get_template(template_name)
|
||||||
email_body = template.render(context=context)
|
email_body = template.render(context=context)
|
||||||
|
if email_body:
|
||||||
|
email_body.strip().lstrip("\n")
|
||||||
|
|
||||||
subject_template = get_template(subject_template_name)
|
subject_template = get_template(subject_template_name)
|
||||||
subject = subject_template.render(context=context)
|
subject = subject_template.render(context=context)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue