def post(self, request, **kwargs): action = request.POST.get('_action', None) cart = get_cart(request) if action == 'remove_all': cart.empty() else: form = ProductForm(request.POST) if form.is_valid(): product = form.cleaned_data.get('product') quantity = form.cleaned_data.get('quantity', 1) if action == 'add': cart.append(product, int(product.price), quantity) elif action == 'remove': cart.remove(product, quantity) elif action == 'remove_product': cart.remove(product) else: raise Http404 cart.save() if request.is_ajax(): return HttpResponse(json.dumps({'cart': cart.serialize()}), content_type='application/json', **kwargs) else: return redirect('plugshop-cart')
def notify_managers(self, order): cart = get_cart(self.request) msg = render_to_string('plugshop/email/order_admin.html', { 'cart': cart, 'order': order, 'total': cart.price_total(), }) mail_managers(self.get_admin_mail_title(order), '', html_message=msg)
def get_initial(self, *args, **kwargs): cart = get_cart(self.request) user = self.request.user initial = {} if user.is_authenticated(): initial.update({ 'name': "%s %s" % (user.first_name, user.last_name), 'email': user.email }) return initial
def notify_customer(self, order): cart = get_cart(self.request) msg = render_to_string('plugshop/email/order_user.html', { 'cart': cart, 'order': order, 'total': cart.price_total(), }) mail = EmailMessage(self.get_customer_mail_title(order), msg, django_settings.SERVER_EMAIL, [order.user.email]) mail.content_subtype = 'html' mail.send()
def get(self, request, **kwargs): cart = get_cart(request) context = {} if request.is_ajax(): context['cart'] = cart.serialize() context = self.extend_context_ajax(context) return HttpResponse(json.dumps(context), content_type='application/json', **kwargs) else: context['form'] = ORDER_FORM_CLASS() context = self.extend_context(context) if len(cart) == 0: return redirect('plugshop') else: return self.render_to_response(context)
def form_valid(self, form): from plugshop.signals import order_create cart = get_cart(self.request) if len(cart) == 0: raise Http404 order = form.save(cart=cart) self.notify_managers(order) self.notify_customer(order) messages.info(self.request, settings.MESSAGE_SUCCESS) cart.empty() self.request.session['order'] = order order_create.send(sender=self, order=order, request=self.request) return redirect(order.get_absolute_url())
def get(self, request, **kwargs): cart = get_cart(request) if len(cart) == 0: return redirect('plugshop') else: return super(OrderCreateView, self).get(request, **kwargs)
def get_form_kwargs(self): cart = get_cart(self.request) form_kwargs = super(OrderCreateView, self).get_form_kwargs() return form_kwargs