def email_flowcell_created(user, flowcell, request=None):
"""Send email on flow cell creation"""
if not settings.FLOWCELLS_SEND_EMAILS:
return
# Gather groups to send emails to
TO_GROUPS = (rules.DEMUX_ADMIN, rules.DEMUX_OPERATOR)
# Build queries and perform the actual sending of emails
queries = [Q(groups__name=group_name) for group_name in TO_GROUPS]
queries.append(Q(is_superuser=True))
queries.append(Q(pk=user.pk))
if flowcell.demux_operator:
queries.append(Q(pk=flowcell.demux_operator.pk))
if flowcell.owner:
queries.append(Q(pk=flowcell.owner.pk))
users = User.objects.filter(_or_queries(queries))
users = users.exclude(email__isnull=True).exclude(email__exact='')
# Prepare values to push into email
absolute_url = flowcell.get_absolute_url()
if request:
absolute_url = request.build_absolute_uri(absolute_url)
vals = {
'EMAIL_SUBJECT_PREFIX': settings.EMAIL_SUBJECT_PREFIX,
'full_name': flowcell.get_full_name(),
'flowcell_url': absolute_url,
'user': user,
}
# Create email data tuple generator
TEMPLATE_SUBJECT = (
'{EMAIL_SUBJECT_PREFIX}{user} created new flow cell {full_name}')
emails = (
(
TEMPLATE_SUBJECT.format(**vals),
TEMPLATE_FLOWCELL_CREATED.format(recipient=u, **vals),
settings.EMAIL_SENDER,
[u.email]
) for u in users)
# Actually send the emails
send_mass_mail(emails, fail_silently=not settings.DEBUG)
评论列表
文章目录