Implement 'investigating' email templates and tigger email send on admin domain application save, status change to investidated.

This commit is contained in:
rachidatecs 2023-06-07 13:19:22 -04:00
parent d4162c5d9c
commit 31295053f9
No known key found for this signature in database
GPG key ID: 3CEBBFA7325E5525
4 changed files with 245 additions and 2 deletions

View file

@ -1,11 +1,14 @@
import logging
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.contenttypes.models import ContentType
from django.http.response import HttpResponseRedirect
from django.urls import reverse
from .utility.email import send_templated_email, EmailSendingError
from . import models
logger = logging.getLogger(__name__)
class AuditedAdmin(admin.ModelAdmin):
@ -50,13 +53,51 @@ class MyHostAdmin(AuditedAdmin):
inlines = [HostIPInline]
class DomainApplicationAdmin(AuditedAdmin):
"""Customize the applications listing view."""
# Trigger action when a fieldset is changed
def save_model(self, request, obj, form, change):
if change: # Check if the application is being edited
# Get the original application from the database
original_obj = models.DomainApplication.objects.get(pk=obj.pk)
if obj.status != original_obj.status and obj.status == "investigating":
if (
original_obj.submitter is None
or original_obj.submitter.email is None
):
logger.warning(
"Cannot send status change (in review) email,"
"no submitter email address."
)
return
try:
print(
f"original_obj.submitter.email {original_obj.submitter.email}"
)
send_templated_email(
"emails/status_change_in_review.txt",
"emails/status_change_in_review_subject.txt",
original_obj.submitter.email,
context={"application": obj},
)
except EmailSendingError:
logger.warning(
"Failed to send status change (in review) email", exc_info=True
)
super().save_model(request, obj, form, change)
admin.site.register(models.User, MyUserAdmin)
admin.site.register(models.UserDomainRole, AuditedAdmin)
admin.site.register(models.Contact, AuditedAdmin)
admin.site.register(models.DomainInvitation, AuditedAdmin)
admin.site.register(models.DomainApplication, AuditedAdmin)
admin.site.register(models.DomainInformation, AuditedAdmin)
admin.site.register(models.Domain, AuditedAdmin)
admin.site.register(models.Host, MyHostAdmin)
admin.site.register(models.Nameserver, MyHostAdmin)
admin.site.register(models.Website, AuditedAdmin)
admin.site.register(models.DomainApplication, DomainApplicationAdmin)