コード例 #1
0
ファイル: views.py プロジェクト: genxstylez/Empor-Fashion
def success(request):
    from order.utils import generate_order_pdf
    from django.template.loader import render_to_string
    from django.core import mail
    from django.core.mail import EmailMultiAlternatives, EmailMessage
    from django.contrib.auth.models import Group
    try:
        order = request.session['order']
    except KeyError:
        raise Http404
    if order.user != request.user:
        raise Http404

    cart = get_cart(request)
    cart = archive_cart(cart)
    order.cart = cart.id
    order.save()
    del request.session['cart']
    voucher = request.session['voucher'] if 'voucher' in request.session else None

    items = ArchivedCartItem.objects.filter(archived_cart=cart)
    for item in items:
        order_item = OrderItem()
        order_item.order = order
        order_item.product = item.product
        order_item.quantity = item.quantity
        order_item.discount_total = item.discount_total
        order_item.gross_total = item.gross_total
        order_item.net_total = item.net_total
        order_item.save()
        #Update sold figure
        item.product.sold += item.quantity
        item.product.save()

    order.status = 1
    order.save()

    pdf = generate_order_pdf(request.get_host(), order, voucher)

    subject = _('EMPOR Order Confirmation')
    html_content = render_to_string('order/email.html', {
        'order': order, 
        'items': items,
        'voucher': voucher,
        'STATIC_URL': settings.STATIC_URL, 
        'host': request.get_host()
    })
    text_content = render_to_string('order/email.txt', {
        'order': order,
        'voucher': voucher,
        'items': items,
        'host': request.get_host()
    })

    connection = mail.get_connection()
    connection.open()

    message = EmailMultiAlternatives(subject, text_content, settings.DEFAULT_FROM_EMAIL, [order.user.email])
    message.attach_alternative(html_content, 'text/html')
    filename = order.order_id
    message.attach(filename.encode('utf-8'), pdf, 'application/pdf')

    group = Group.objects.get(name='Service').user_set.only('email')
    subject = 'EMPOR - 新訂單 %s' % order.order_id
    group_email = [ user.email for user in group ]
    notification = EmailMessage(subject, html_content, settings.DEFAULT_FROM_EMAIL, group_email)
    notification.content_subtype = 'html'
    
    connection.send_messages([message, notification])
    connection.close()

    if 'voucher' in request.session:
        del request.session['voucher']
    return redirect('order-thankyou')
コード例 #2
0
ファイル: models.py プロジェクト: genxstylez/Empor-Fashion
def confirm_payment(sender, **kwargs):
    user = User.objects.get(id=sender.custom)
    cart = archive_cart(user.cart)
    order = Order.objects.get(id=sender.invoice)
    order.cart = cart.id
    order.save()

    items = ArchivedCartItem.objects.filter(archived_cart=cart)
    for item in items:
        order_item = OrderItem()
        order_item.order = order
        order_item.product = item.product
        order_item.quantity = item.quantity
        order_item.discount_total = item.discount_total
        order_item.gross_total = item.gross_total
        order_item.net_total = item.net_total
        order_item.save()
        # Update sold figure
        item.product.sold += item.quantity
        item.product.save()

    order.status = 1
    order.save()
    try:
        voucher = Voucher.objects.get(code=order.voucher_code)
    except Voucher.DoesNotExist:
        voucher = None

    pdf = generate_order_pdf("empor.com.tw", order, voucher)

    subject = _("EMPOR Order Confirmation")
    html_content = render_to_string(
        "order/email.html",
        {
            "order": order,
            "items": items,
            "voucher": voucher,
            "STATIC_URL": settings.STATIC_URL,
            "host": "http://empor.com.tw/",
        },
    )
    text_content = render_to_string(
        "order/email.txt", {"order": order, "voucher": voucher, "items": items, "host": "http://empor.com.tw/"}
    )

    connection = mail.get_connection()
    connection.open()

    message = EmailMultiAlternatives(subject, text_content, settings.DEFAULT_FROM_EMAIL, [order.user.email])
    message.attach_alternative(html_content, "text/html")
    filename = order.order_id
    message.attach(filename.encode("utf-8"), pdf, "application/pdf")

    group = Group.objects.get(name="Service").user_set.only("email")
    subject = "EMPOR - 新訂單".decode("utf-8") + " " + order.order_id
    group_email = [user.email for user in group]
    notification = EmailMessage(subject, html_content, settings.DEFAULT_FROM_EMAIL, group_email)
    notification.content_subtype = "html"

    connection.send_messages([message, notification])
    connection.close()