views.py 文件源码

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

项目:pyconjp-website 作者: pyconjp 项目源码 文件源码
def tutorial_email(request, pk, pks):
    presentation = get_object_or_404(Presentation, pk=pk)

    if not request.user.is_staff:
        if not is_attendee_or_speaker(request.user, presentation):
            return HttpResponseForbidden(_(u"Not authorized for this page"))

    pks = pks.split(",")
    user_model = get_user_model()
    recipients = user_model.objects.filter(pk__in=pks)
    emails = recipients.values_list('email', flat=True)

    from_speaker = False
    if hasattr(request.user, 'speaker_profile'):
        from_speaker = request.user.speaker_profile in presentation.speakers()

    form = BulkEmailForm()
    if request.method == 'POST':
        form = BulkEmailForm(request.POST)
        if form.is_valid():
            subject = form.cleaned_data['subject']
            body = form.cleaned_data['body']
            context = email_context(
                request,
                presentation.proposal,
                body,
                subject=subject)
            try:
                # Send Email to each recipient separately,
                send_email_message("direct_email",
                                   from_=settings.DEFAULT_FROM_EMAIL,
                                   to=[],
                                   bcc=emails,
                                   context=context,
                                   headers={'Reply-To': request.user.email})
            except SMTPException:
                log.exception("ERROR sending Tutorial emails")
                messages.add_message(request, messages.ERROR,
                                     _(u"There was some error sending emails, "
                                       u"not all of them might have made it"))
            else:
                messages.add_message(request, messages.INFO,
                                     _(u"Email(s) sent"))
            url = reverse(
                'schedule_presentation_detail',
                args=[presentation.pk]
            )
            return redirect(url)

    ctx = {
        'presentation': presentation,
        'form': form,
        'users': recipients,
        'from_speaker': from_speaker
    }

    return render(request, "tutorials/email.html", ctx)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号