emails.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:flowcelltool 作者: bihealth 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号