如何向有关该产品下订单的Django Oscar注册合作伙伴发送电子邮件?

问题描述 投票:1回答:1

我想通过电子邮件通知Django Oscar合作伙伴,声明那里的产品已收到客户的订单。在这里,客户可以从多个合作伙伴处订购多个产品。如何发送特定合作伙伴的订单清单并发送电子邮件。

django django-oscar
1个回答
0
投票

Order app末尾在Django Oscar utils.py中添加此代码,请参考Django Oscar github。在OrderCreator class

我的代码不正确/根据要求自定义。

        if settings.SEND_ORDER_MAILS_ADMIN:
        # Send an email to partner based on order placed

        order_line_obj = Line.objects.filter(order=order)

        partner_obj_list = []
        for x in order_line_obj:
            if x.partner not in partner_obj_list:
                partner_obj_list.append(x.partner)

        for partner_id in partner_obj_list:
            order_line = Line.objects.filter(order=order,partner=partner_id)

            ctx = {'order': order, 'user': order.user, 'order_line': order_line }
            commtype_code = 'PARTNER_ORDER_MAIL' # Add it in CommunicationEventType Model
            try:
                event_type = CommunicationEventType.objects.get(code=commtype_code)

            except Exception as e:
                messages = CommunicationEventType.objects.get_and_render(code=commtype_code, context=ctx)
                # print(e)
            else:
                messages = event_type.get_messages(ctx)
            send_mail(
                subject="You have an Order # %s"%(order.number),
                message='Your Message here',
                html_message=messages['html'],
                from_email=(settings.EMAIL_HOST_USER, u'Sender Name'),
                recipient_list=[x.email for x in partner_id.users.all()],
                fail_silently=False,
            )
    return order # Return
© www.soinside.com 2019 - 2024. All rights reserved.