Guest User

Untitled

a guest
Mar 11th, 2018
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. @transaction.commit_manually
  2. def checkout_start(request):
  3. '''
  4. Creating an order
  5. '''
  6. from account.models import Customer
  7. from django.contrib.auth import authenticate
  8. from django.contrib.auth import login as django_login
  9.  
  10. cart = Cart.objects.from_request(request)
  11.  
  12. if cart is None:
  13. redirect('shop.views.frontdoor')
  14.  
  15. if request.method == 'POST':
  16. form = OrderForm(request.POST)
  17. if form.is_valid():
  18. try:
  19. try:
  20. customer = Customer.objects.get(user__email=form.cleaned_data['email'])
  21. except:
  22. customer = None
  23.  
  24. if customer is not None:
  25. # If we have a customer with this email
  26. if not cart.customer:
  27. cart.customer = customer
  28. cart.discount_card = customer.discount_card
  29. cart.save()
  30. else:
  31. # Let's create a user
  32. customer, user, password = Customer.objects.create_customer(form.cleaned_data)
  33.  
  34. if customer and cart.discount_card:
  35. customer.discount_card = cart.discount_card
  36. customer.save()
  37.  
  38. cart.customer = customer
  39. cart.save()
  40.  
  41. user = authenticate(username=user.username, password=password)
  42. django_login(request, user)
  43.  
  44. # Send Welcome email
  45. data = {'user': user, 'password': password}
  46. subject = u'Добро пожаловать в интернет-магазин Гудмар'
  47. to = user.email
  48. from_email = 'contact@goodmar.ru'
  49. send_email('welcome', data, subject, to, from_email)
  50.  
  51. order = Order.objects.create_order(cart, form.cleaned_data)
  52.  
  53. # Send emails
  54. subject = u'Ваш заказ #%d в интернет-магазине Гудмар' % order.number
  55. to = order.email
  56. from_email = 'order@goodmar.ru'
  57. send_email('order_customer', order, subject, to, from_email)
  58.  
  59. subject = u'Поступил новый заказ #%d' % order.number
  60. to = 'order@goodmar.ru'
  61. from_email = 'no-reply@goodmar.ru'
  62. send_email('order_shop', order, subject, to, from_email)
  63. except:
  64. transaction.rollback()
  65. raise
  66. else:
  67. transaction.commit()
  68. redirect_to = reverse('shop.views.checkout_complete')
  69. return json_response(dict(success=True, redirect_to=redirect_to))
  70. else:
  71. return json_response(form.errors)
  72.  
  73. redirect('shop.views.cart_display')
Add Comment
Please, Sign In to add comment