def _initialize_source_from_state(self, state, creator, ip_address, save, order_to_update=None): shop_data = state.pop("shop", None).get("selected", {}) shop = self.safe_get_first(Shop, pk=shop_data.pop("id", None)) if not shop: self.add_error(ValidationError(_("Please choose a valid shop."), code="no_shop")) return None source = OrderSource(shop=shop) if order_to_update: source.update_from_order(order_to_update) customer_data = state.pop("customer", None) billing_address_data = customer_data.pop("billingAddress", {}) shipping_address_data = ( billing_address_data if customer_data.pop("shipToBillingAddress", False) else customer_data.pop("shippingAddress", {})) is_company = customer_data.pop("isCompany", False) save_address = customer_data.pop("saveAddress", False) customer = self._get_customer(customer_data, billing_address_data, is_company, save) if not customer: return billing_address = MutableAddress.from_data(billing_address_data) shipping_address = MutableAddress.from_data(shipping_address_data) if save: billing_address.save() shipping_address.save() if save and save_address: customer.default_billing_address = billing_address customer.default_shipping_address = shipping_address customer.save() methods_data = state.pop("methods", None) or {} shipping_method = methods_data.pop("shippingMethod") if not shipping_method: self.add_error(ValidationError(_("Please select shipping method."), code="no_shipping_method")) payment_method = methods_data.pop("paymentMethod") if not payment_method: self.add_error(ValidationError(_("Please select payment method."), code="no_payment_method")) if self.errors: return source.update( creator=creator, ip_address=ip_address, customer=customer, billing_address=billing_address, shipping_address=shipping_address, status=OrderStatus.objects.get_default_initial(), shipping_method=self.safe_get_first(ShippingMethod, pk=shipping_method.get("id")), payment_method=self.safe_get_first(PaymentMethod, pk=payment_method.get("id")), ) return source
def create_random_address(fake=None, **values): if not fake: fake = get_faker(["person", "address"]) empty = str # i.e. constructor for empty string values.setdefault("name", fake.name()) values.setdefault("street", fake.address().replace('\n', ' ')) values.setdefault("city", fake.city()) values.setdefault("region", getattr(fake, "state", empty)()) values.setdefault("country", random.choice(COUNTRY_CODES)) values.setdefault("postal_code", getattr(fake, "postalcode", empty)()) address = MutableAddress.from_data(values) address.save() return address
def handle_row_address(self, fields, row_session): row = row_session.row contact = row_session.instance data = {} for field in fields: data[field.replace(" ", "_")] = row.get(field, "") data["name"] = contact.name data["email"] = contact.email data["phone"] = contact.phone data["name_ext"] = contact.name_ext if hasattr(contact, "tax_number"): data["tax_number"] = contact.tax_number address = MutableAddress.from_data(data) address.save() contact.default_shipping_address = address contact.default_billing_address = address contact.save()
def handle_row_address(self, fields, row_session): row = row_session.row contact = row_session.instance data = {} for field in fields: data[field.replace(" ", "_")] = row.get(field, "") data["name"] = contact.name data["email"] = contact.email data["phone"] = contact.phone data["name_ext"] = contact.name_ext if hasattr(contact, "tax_number"): data["tax_number"] = contact.tax_number address = MutableAddress.from_data(data) address.save() contact.default_shipping_address = address contact.default_billing_address = address contact.save()
def shipping_address(self): if self._shipping_address: return self._shipping_address shipping_address = None shipping_address_id = self._get_value_from_data("shipping_address_id") if shipping_address_id: shipping_address = MutableAddress.objects.get( pk=shipping_address_id) if not shipping_address: shipping_address_data = self._get_value_from_data( "shipping_address_data") if shipping_address_data: shipping_address = MutableAddress.from_data( shipping_address_data) self._shipping_address = shipping_address return shipping_address
def _get_address(self, address, is_company, save): address_form = forms.modelform_factory(MutableAddress, exclude=[]) address_form_instance = address_form(data=address) address_form_instance.full_clean() if not address_form_instance.is_valid(): for field_name, errors in address_form_instance.errors.items(): field_label = address_form_instance.fields[field_name].label for error_msg in errors: self.add_error( ValidationError( "%(field_label)s: %(error_msg)s", params={"field_label": field_label, "error_msg": error_msg}, code="invalid_address" ) ) return None if is_company and not address_form_instance.cleaned_data["tax_number"]: self.add_error(ValidationError(_("Tax number is not set for company."), code="no_tax_number")) return None if save: return address_form_instance.save() return MutableAddress.from_data(address_form_instance.cleaned_data)
def _get_address(self, address, is_company, save): address_form = forms.modelform_factory(MutableAddress, exclude=[]) address_form_instance = address_form(data=address) address_form_instance.full_clean() if not address_form_instance.is_valid(): for field_name, errors in address_form_instance.errors.items(): field_label = address_form_instance.fields[field_name].label for error_msg in errors: self.add_error( ValidationError( "%(field_label)s: %(error_msg)s", params={"field_label": field_label, "error_msg": error_msg}, code="invalid_address" ) ) return None if is_company and not address_form_instance.cleaned_data["tax_number"]: self.add_error(ValidationError(_("Tax number is not set for company."), code="no_tax_number")) return None if save: return address_form_instance.save() return MutableAddress.from_data(address_form_instance.cleaned_data)
def get_address(**overrides): data = dict(DEFAULT_ADDRESS_DATA, **overrides) return MutableAddress.from_data(data)
def get_address(**overrides): data = dict(DEFAULT_ADDRESS_DATA, **overrides) return MutableAddress.from_data(data)
def _initialize_source_from_state(self, state, creator, ip_address, save, order_to_update=None): shop_data = state.pop("shop", None).get("selected", {}) shop = self.safe_get_first(Shop, pk=shop_data.pop("id", None)) if not shop: self.add_error( ValidationError(_("Please choose a valid shop."), code="no_shop")) return None source = OrderSource(shop=shop) if order_to_update: source.update_from_order(order_to_update) customer_data = state.pop("customer", None) billing_address_data = customer_data.pop("billingAddress", {}) shipping_address_data = (billing_address_data if customer_data.pop( "shipToBillingAddress", False) else customer_data.pop( "shippingAddress", {})) is_company = customer_data.pop("isCompany", False) save_address = customer_data.pop("saveAddress", False) customer = self._get_customer(customer_data, billing_address_data, is_company, save) if not customer: return billing_address = MutableAddress.from_data(billing_address_data) shipping_address = MutableAddress.from_data(shipping_address_data) if save: billing_address.save() shipping_address.save() if save and save_address: customer.default_billing_address = billing_address customer.default_shipping_address = shipping_address customer.save() methods_data = state.pop("methods", None) or {} shipping_method = methods_data.pop("shippingMethod") if not shipping_method: self.add_error( ValidationError(_("Please select shipping method."), code="no_shipping_method")) payment_method = methods_data.pop("paymentMethod") if not payment_method: self.add_error( ValidationError(_("Please select payment method."), code="no_payment_method")) if self.errors: return source.update( creator=creator, ip_address=ip_address, customer=customer, billing_address=billing_address, shipping_address=shipping_address, status=OrderStatus.objects.get_default_initial(), shipping_method=self.safe_get_first(ShippingMethod, pk=shipping_method.get("id")), payment_method=self.safe_get_first(PaymentMethod, pk=payment_method.get("id")), ) return source