mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-17 10:07:04 +02:00
Remove endpoint for email content
We don't really need this. We can just store the email content on the DOM. There is no real performance impact -- its not a lot of content in the grand scheme of things and we'd just be doing a lot of api calls anyway
This commit is contained in:
parent
5ae8df2bdb
commit
abc9fb78bc
7 changed files with 36 additions and 44 deletions
|
@ -1845,6 +1845,7 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportModelAdmin):
|
|||
# Initialize extra_context and add filtered entries
|
||||
extra_context = extra_context or {}
|
||||
extra_context["filtered_audit_log_entries"] = filtered_audit_log_entries
|
||||
extra_context["action_needed_reason_emails"] = obj.get_all_action_needed_reason_emails_as_json()
|
||||
|
||||
# Call the superclass method with updated extra_context
|
||||
return super().change_view(request, object_id, form_url, extra_context)
|
||||
|
|
|
@ -571,22 +571,21 @@ function initializeWidgetOnList(list, parentId) {
|
|||
showNoEmailMessage(actionNeededEmail);
|
||||
return;
|
||||
}
|
||||
|
||||
fetch(`/get-domain-requests-json/${pk}/action-needed-email/${reason}`)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.error) {
|
||||
console.log('Error in AJAX call: ' + data.error);
|
||||
return;
|
||||
}
|
||||
|
||||
if(data && data.email_body_text) {
|
||||
actionNeededEmail.value = data.email_body_text
|
||||
|
||||
let actionNeededEmails = JSON.parse(document.getElementById('action-needed-emails-data').textContent)
|
||||
let emailData = actionNeededEmails[reason];
|
||||
if (emailData) {
|
||||
let emailBody = emailData.email_body_text
|
||||
if (emailBody) {
|
||||
actionNeededEmail.value = emailBody
|
||||
showActionNeededEmail(actionNeededEmail);
|
||||
}else {
|
||||
showNoEmailMessage(actionNeededEmail);
|
||||
}
|
||||
});
|
||||
}else {
|
||||
showNoEmailMessage(actionNeededEmail);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ from registrar.views.admin_views import (
|
|||
)
|
||||
|
||||
from registrar.views.domain_request import Step
|
||||
from registrar.views.domain_requests_json import get_domain_requests_json, get_action_needed_email
|
||||
from registrar.views.domain_requests_json import get_domain_requests_json
|
||||
from registrar.views.domains_json import get_domains_json
|
||||
from registrar.views.utility import always_404
|
||||
from api.views import available, get_current_federal, get_current_full
|
||||
|
@ -213,11 +213,6 @@ urlpatterns = [
|
|||
),
|
||||
path("get-domains-json/", get_domains_json, name="get_domains_json"),
|
||||
path("get-domain-requests-json/", get_domain_requests_json, name="get_domain_requests_json"),
|
||||
path(
|
||||
"get-domain-requests-json/<int:pk>/action-needed-email/<str:reason>",
|
||||
get_action_needed_email,
|
||||
name="get_action_needed_email",
|
||||
),
|
||||
]
|
||||
|
||||
# Djangooidc strips out context data from that context, so we define a custom error
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from __future__ import annotations
|
||||
from typing import Union
|
||||
import logging
|
||||
import json
|
||||
|
||||
from django.apps import apps
|
||||
from django.conf import settings
|
||||
|
@ -1220,6 +1221,15 @@ class DomainRequest(TimeStampedModel):
|
|||
|
||||
return True
|
||||
|
||||
def get_all_action_needed_reason_emails_as_json(self):
|
||||
"""Returns a json dictionary of every action needed reason and its associated email
|
||||
for this particular domain request."""
|
||||
emails = {}
|
||||
for action_needed_reason in self.ActionNeededReasons:
|
||||
enum_value = action_needed_reason.value
|
||||
emails[enum_value] = self.get_action_needed_reason_default_email_text(enum_value)
|
||||
return json.dumps(emails)
|
||||
|
||||
def get_action_needed_reason_default_email_text(self, action_needed_reason: str):
|
||||
"""Returns the default email associated with the given action needed reason"""
|
||||
if action_needed_reason is None or action_needed_reason == self.ActionNeededReasons.OTHER:
|
||||
|
|
|
@ -109,6 +109,19 @@ This is using a custom implementation fieldset.html (see admin/fieldset.html)
|
|||
{% else %}
|
||||
<p>No changelog to display.</p>
|
||||
{% endif %}
|
||||
|
||||
{% comment %}
|
||||
Store the action needed reason emails in a json-based dictionary.
|
||||
This allows us to change the action_needed_reason_email field dynamically, depending on value.
|
||||
The alternative to this is an API endpoint.
|
||||
|
||||
Given that we have a limited number of emails, doing it this way makes sense.
|
||||
{% endcomment %}
|
||||
{% if action_needed_reason_emails %}
|
||||
<script id="action-needed-emails-data" type="application/json">
|
||||
{{ action_needed_reason_emails|safe }}
|
||||
</script>
|
||||
{% endif %}
|
||||
<div id="action_needed_reason_email_readonly" class="dja-readonly-textarea-container padding-1 margin-top-2 thin-border display-none">
|
||||
<label class="max-full" for="action_needed_reason_email_view_more">
|
||||
<strong>Auto-generated email (sent to submitter)</strong>
|
||||
|
|
|
@ -24,7 +24,6 @@ SAMPLE_KWARGS = {
|
|||
"object_id": "3",
|
||||
"domain": "whitehouse.gov",
|
||||
"user_pk": "1",
|
||||
"reason": "bad_name",
|
||||
}
|
||||
|
||||
# Our test suite will ignore some namespaces.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import logging
|
||||
from django.http import JsonResponse
|
||||
from django.core.paginator import Paginator
|
||||
from registrar.models import DomainRequest
|
||||
|
@ -6,10 +5,6 @@ from django.utils.dateformat import format
|
|||
from django.contrib.auth.decorators import login_required
|
||||
from django.urls import reverse
|
||||
from django.db.models import Q
|
||||
from django.core.exceptions import PermissionDenied
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@login_required
|
||||
|
@ -102,23 +97,3 @@ def get_domain_requests_json(request):
|
|||
"unfiltered_total": unfiltered_total,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def get_action_needed_email(request, pk, reason):
|
||||
"""
|
||||
Given the primary key of a DomainRequest and the action_needed reason,
|
||||
this will return the email that would be generated for the given user.
|
||||
"""
|
||||
# Q: Do we need both checks? I'd think we can just check on the group, right?
|
||||
staff_or_superuser = request.user.is_staff or request.user.is_superuser
|
||||
has_access = request.user.has_perm("registrar.full_access_permission") or request.user.has_perm(
|
||||
"registrar.analyst_access_permission"
|
||||
)
|
||||
if staff_or_superuser and not has_access:
|
||||
raise PermissionDenied("You do not have permission to access this resource.")
|
||||
|
||||
domain_request = DomainRequest.objects.filter(id=pk).first()
|
||||
reason_dict = domain_request.get_action_needed_reason_default_email_text(reason)
|
||||
|
||||
return JsonResponse(reason_dict)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue