Changeset - 3cccc3bdd90e
[Not reviewed]
0 4 1
Ben Sturmfels (bsturmfels) - 8 months ago 2024-01-26 06:49:03
ben@sturm.com.au
Email announcement about new UTS candidate
5 files changed with 81 insertions and 10 deletions:
0 comments (0 inline, 0 general)
conservancy/usethesource/admin.py
Show inline comments
 
from django.contrib import admin
 

	
 
from .emails import make_candidate_email
 
from .models import Candidate, Comment
 

	
...
 
@@ -26,2 +27,10 @@ class CandidateAdmin(admin.ModelAdmin):
 
    inlines = [CommentInline]
 
    prepopulated_fields = {'slug': ['name']}
 

	
 
    def save_model(self, request, obj, form, change):
 
        send_email = obj.id is None
 
        super().save_model(request, obj, form, change)
 
        if send_email:
 
            # Announce the new candidate
 
            email = make_candidate_email(obj, request.user)
 
            email.send()
conservancy/usethesource/emails.py
Show inline comments
 
from django.core.mail import EmailMessage
 
from django.shortcuts import reverse
 

	
 
SENDER = 'compliance@sfconservancy.org'
 
LIST_RECIPIENT = 'nutbush@lists.sfconservancy.org'
 

	
 

	
 
def make_candidate_email(candidate, user):
 
    """The initial email announcing the new candidate."""
 
    subject = candidate.name
 
    signature = user.get_full_name() or user.username
 
    sender = f'{signature} <{SENDER}>'
 
    to = [LIST_RECIPIENT]
 
    body = f'''\
 
We've just published the following new candidate:
 

	
 
{candidate.name}
 
Vendor: {candidate.vendor}
 
Device: {candidate.device}
 
Released: {candidate.release_date}
 

	
 
{candidate.description}
 

	
 
To download this candidate's source and binary image, visit:
 
https://sfconservancy.org{reverse('usethesource:candidate', kwargs={'slug': candidate.slug})}
 

	
 
--
 
{signature}
 
'''
 
    headers = {'Message-ID': candidate.email_message_id}
 
    return EmailMessage(subject, body, sender, to, headers=headers)
 

	
 

	
 
def make_comment_email(comment):
 
    """Email when a comment is added to a candidate."""
 
    subject = f'Re: {comment.candidate.name}'
 
    signature = comment.user.get_full_name() or comment.user.username
 
    sender = f'{signature} <compliance@sfconservancy.org>'
 
    to = ['nutbush@lists.sfconservancy.org']
 
    sender = f'{signature} <{SENDER}>'
 
    to = [LIST_RECIPIENT]
 
    body = f'{comment.message}\n\n--\n{signature}'
 
    headers = {'Message-ID': comment.email_message_id}
conservancy/usethesource/migrations/0005_candidate_email_message_id.py
Show inline comments
 
new file 100644