Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @transaction.commit_manually
- def checkout_start(request):
- '''
- Creating an order
- '''
- from account.models import Customer
- from django.contrib.auth import authenticate
- from django.contrib.auth import login as django_login
- cart = Cart.objects.from_request(request)
- if cart is None:
- redirect('shop.views.frontdoor')
- if request.method == 'POST':
- form = OrderForm(request.POST)
- if form.is_valid():
- try:
- try:
- customer = Customer.objects.get(user__email=form.cleaned_data['email'])
- except:
- customer = None
- if customer is not None:
- # If we have a customer with this email
- if not cart.customer:
- cart.customer = customer
- cart.discount_card = customer.discount_card
- cart.save()
- else:
- # Let's create a user
- customer, user, password = Customer.objects.create_customer(form.cleaned_data)
- if customer and cart.discount_card:
- customer.discount_card = cart.discount_card
- customer.save()
- cart.customer = customer
- cart.save()
- user = authenticate(username=user.username, password=password)
- django_login(request, user)
- # Send Welcome email
- data = {'user': user, 'password': password}
- subject = u'Добро пожаловать в интернет-магазин Гудмар'
- to = user.email
- from_email = 'contact@goodmar.ru'
- send_email('welcome', data, subject, to, from_email)
- order = Order.objects.create_order(cart, form.cleaned_data)
- # Send emails
- subject = u'Ваш заказ #%d в интернет-магазине Гудмар' % order.number
- to = order.email
- from_email = 'order@goodmar.ru'
- send_email('order_customer', order, subject, to, from_email)
- subject = u'Поступил новый заказ #%d' % order.number
- to = 'order@goodmar.ru'
- from_email = 'no-reply@goodmar.ru'
- send_email('order_shop', order, subject, to, from_email)
- except:
- transaction.rollback()
- raise
- else:
- transaction.commit()
- redirect_to = reverse('shop.views.checkout_complete')
- return json_response(dict(success=True, redirect_to=redirect_to))
- else:
- return json_response(form.errors)
- redirect('shop.views.cart_display')
Add Comment
Please, Sign In to add comment