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