def create_order(self): basket = self.request.basket assert isinstance(basket, BaseBasket) basket.shop = self.request.shop basket.orderer = self.request.person basket.customer = self.request.customer basket.status = OrderStatus.objects.get_default_initial() order_creator = get_basket_order_creator(request=self.request) order = order_creator.create_order(basket) basket.clear_all() return order
def create_order(self): basket = self.request.basket assert isinstance(basket, BaseBasket) basket.shop = self.request.shop basket.orderer = self.request.person basket.customer = self.request.customer basket.status = OrderStatus.objects.get_default_initial() order_creator = get_basket_order_creator(request=self.request) order = order_creator.create_order(basket) basket.finalize() return order
def form_valid(self, form): basket = self.request.basket assert isinstance(basket, BaseBasket) order_data = form["order"].cleaned_data.copy() if not order_data.pop("accept_terms", None): # pragma: no cover raise ValidationError("Terms must be accepted") basket.shop = self.request.shop basket.orderer = self.request.person basket.customer = self.request.customer basket.shipping_address = form["shipping"].save(commit=False) basket.billing_address = form["billing"].save(commit=False) basket.shipping_method = order_data.pop("shipping_method") basket.payment_method = order_data.pop("payment_method") basket.status = OrderStatus.objects.get_default_initial() company_name = order_data.pop("company_name") tax_number = order_data.pop("tax_number") if company_name and tax_number: # Not using `get_or_create` here because duplicates are better than accidental information leakage basket.customer = CompanyContact.objects.create( name=company_name, tax_number=tax_number) for address in (basket.shipping_address, basket.billing_address): address.company_name = basket.customer.name address.tax_number = basket.customer.tax_number basket.marketing_permission = order_data.pop("marketing") basket.customer_comment = order_data.pop("comment") if order_data: # pragma: no cover raise ValueError("`order_data` should be empty by now") order_creator = get_basket_order_creator(request=self.request) order = order_creator.create_order(basket) basket.finalize() self.checkout_process.complete() if order.require_verification: return redirect("shoop:order_requires_verification", pk=order.pk, key=order.key) else: return redirect("shoop:order_process_payment", pk=order.pk, key=order.key)
def form_valid(self, form): basket = self.request.basket assert isinstance(basket, BaseBasket) order_data = form["order"].cleaned_data.copy() if not order_data.pop("accept_terms", None): # pragma: no cover raise ValidationError("Terms must be accepted") basket.shop = self.request.shop basket.orderer = self.request.person basket.customer = self.request.customer basket.shipping_address = form["shipping"].save(commit=False) basket.billing_address = form["billing"].save(commit=False) basket.shipping_method = order_data.pop("shipping_method") basket.payment_method = order_data.pop("payment_method") basket.status = OrderStatus.objects.get_default_initial() company_name = order_data.pop("company_name") tax_number = order_data.pop("tax_number") if company_name and tax_number: # Not using `get_or_create` here because duplicates are better than accidental information leakage basket.customer = CompanyContact.objects.create(name=company_name, tax_number=tax_number) for address in (basket.shipping_address, basket.billing_address): address.company_name = basket.customer.name address.tax_number = basket.customer.tax_number basket.marketing_permission = order_data.pop("marketing") basket.customer_comment = order_data.pop("comment") if order_data: # pragma: no cover raise ValueError("`order_data` should be empty by now") order_creator = get_basket_order_creator() order = order_creator.create_order(basket) basket.finalize() self.checkout_process.complete() if order.require_verification: return redirect("shoop:order_requires_verification", pk=order.pk, key=order.key) else: return redirect("shoop:order_process_payment", pk=order.pk, key=order.key)