Ejemplo n.º 1
0
 def get_source_base_data(self, order_source):
     """
     :type order_source: shuup.core.order_creator.OrderSource
     """
     return dict(
         shop=order_source.shop,
         currency=order_source.currency,
         prices_include_tax=order_source.prices_include_tax,
         shipping_address=(order_source.shipping_address.to_immutable()
                           if order_source.shipping_address else None),
         billing_address=(order_source.billing_address.to_immutable()
                          if order_source.billing_address else None),
         customer=(order_source.customer or None),
         orderer=(order_source.orderer or None),
         creator=real_user_or_none(order_source.creator),
         shipping_method=order_source.shipping_method,
         payment_method=order_source.payment_method,
         customer_comment=(order_source.customer_comment
                           if order_source.customer_comment else ""),
         marketing_permission=bool(order_source.marketing_permission),
         language=order_source.language,
         ip_address=order_source.ip_address,
         order_date=order_source.order_date,
         status=order_source.status,
         payment_data=order_source.payment_data,
         shipping_data=order_source.shipping_data,
         extra_data=order_source.extra_data)
Ejemplo n.º 2
0
 def get_source_base_data(self, order_source):
     """
     :type order_source: shuup.core.order_creator.OrderSource
     """
     return dict(
         shop=order_source.shop,
         currency=order_source.currency,
         prices_include_tax=order_source.prices_include_tax,
         shipping_address=(order_source.shipping_address.to_immutable() if order_source.shipping_address else None),
         billing_address=(order_source.billing_address.to_immutable() if order_source.billing_address else None),
         customer=(order_source.customer or None),
         orderer=(order_source.orderer or None),
         creator=real_user_or_none(order_source.creator),
         shipping_method=order_source.shipping_method,
         payment_method=order_source.payment_method,
         customer_comment=(order_source.customer_comment if order_source.customer_comment else ""),
         marketing_permission=bool(order_source.marketing_permission),
         language=order_source.language,
         ip_address=order_source.ip_address,
         order_date=order_source.order_date,
         status=order_source.status,
         payment_data=order_source.payment_data,
         shipping_data=order_source.shipping_data,
         extra_data=order_source.extra_data
     )
Ejemplo n.º 3
0
    def update_order_from_source(self, order_source, order):
        data = self.get_source_base_data(order_source)
        for key in self._PROTECTED_ATTRIBUTES:
            if key in data:
                data.pop(key)
        data.update({
            "modified_by": real_user_or_none(order_source.modified_by),
            "modified_on": now()
        })
        Order.objects.filter(pk=order.pk).update(**data)

        order = Order.objects.get(pk=order.pk)
        for module in get_order_source_modifier_modules():
            module.clear_codes(order)

        products_to_adjust_stock = set()
        for line in order.lines.all():
            if line.product:
                products_to_adjust_stock.add((line.product, line.supplier))
            line.taxes.all().delete()  # Delete all tax lines before OrderLine's
            line.child_lines.all().delete()  # Ditto for child lines
            line.delete()

        for product, supplier in products_to_adjust_stock:
            supplier.module.update_stock(product.id)

        return self.finalize_creation(order, order_source)
Ejemplo n.º 4
0
 def post(self, request, *args, **kwargs):
     title = request.POST.get("title", "")
     basket = request.basket
     if not request.customer:
         return JsonResponse({"ok": False}, status=403)
     if not title:
         return JsonResponse(
             {
                 "ok": False,
                 "error": force_text(_("Please enter a basket title."))
             },
             status=400)
     if basket.is_empty:
         return JsonResponse(
             {
                 "ok": False,
                 "error": force_text(_("Can't save an empty basket."))
             },
             status=400)
     saved_basket = StoredBasket(
         shop=basket.shop,
         customer=basket.customer,
         orderer=basket.orderer,
         creator=real_user_or_none(basket.creator),
         currency=basket.currency,
         prices_include_tax=basket.prices_include_tax,
         persistent=True,
         title=title,
         data=basket.storage.load(basket=basket),
         product_count=basket.smart_product_count)
     saved_basket.save()
     saved_basket.products.set(set(basket.product_ids))
     return JsonResponse({"ok": True}, status=200)
Ejemplo n.º 5
0
    def update_order_from_source(self, order_source, order):
        data = self.get_source_base_data(order_source)
        for key in self._PROTECTED_ATTRIBUTES:
            if key in data:
                data.pop(key)
        data.update({
            "modified_by": real_user_or_none(order_source.modified_by),
            "modified_on": now()
        })
        Order.objects.filter(pk=order.pk).update(**data)

        order = Order.objects.get(pk=order.pk)
        for module in get_order_source_modifier_modules():
            module.clear_codes(order)

        products_to_adjust_stock = set()
        for line in order.lines.all():
            if line.product:
                products_to_adjust_stock.add((line.product, line.supplier))
            line.taxes.all().delete()  # Delete all tax lines before OrderLine's
            line.child_lines.all().delete()  # Ditto for child lines
            line.delete()

        for product, supplier in products_to_adjust_stock:
            supplier.module.update_stock(product.id)

        return self.finalize_creation(order, order_source)
Ejemplo n.º 6
0
 def save(self, basket, data):
     """
     :type basket: shuup_public_api.models.APIBasket
     """
     stored_basket = self._get_stored_basket(basket)
     stored_basket.data = data
     stored_basket.taxless_total_price = basket.taxless_total_price_or_none
     stored_basket.taxful_total_price = basket.taxful_total_price_or_none
     stored_basket.product_count = basket.product_count
     stored_basket.customer = (basket.customer or None)
     stored_basket.orderer = (basket.orderer or None)
     stored_basket.creator = real_user_or_none(basket.creator)
     stored_basket.save()
     stored_basket.products = set(basket.product_ids)
Ejemplo n.º 7
0
 def save(self, basket, data):
     """
     :type basket: shuup.core.basket.objects.BaseBasket
     """
     stored_basket = self._load_stored_basket(basket)
     stored_basket.data = data
     stored_basket.taxless_total_price = basket.taxless_total_price_or_none
     stored_basket.taxful_total_price = basket.taxful_total_price_or_none
     stored_basket.product_count = basket.smart_product_count
     stored_basket.customer = (basket.customer or None)
     stored_basket.orderer = (basket.orderer or None)
     stored_basket.creator = real_user_or_none(basket.creator)
     stored_basket.save()
     stored_basket.products = set(basket.product_ids)
     return stored_basket
Ejemplo n.º 8
0
 def save(self, basket, data):
     """
     :type basket: shuup.core.basket.objects.BaseBasket
     """
     stored_basket = self._load_stored_basket(basket)
     stored_basket.data = data
     stored_basket.taxless_total_price = basket.taxless_total_price_or_none
     stored_basket.taxful_total_price = basket.taxful_total_price_or_none
     stored_basket.product_count = basket.smart_product_count
     stored_basket.customer = (basket.customer or None)
     stored_basket.orderer = (basket.orderer or None)
     stored_basket.creator = real_user_or_none(basket.creator)
     stored_basket.save()
     stored_basket.products = set(basket.product_ids)
     return stored_basket
Ejemplo n.º 9
0
 def save(self, basket, data):
     """
     :type basket: shuup.front.basket.objects.BaseBasket
     """
     request = basket.request
     stored_basket = self._get_stored_basket(basket)
     stored_basket.data = data
     stored_basket.taxless_total_price = basket.taxless_total_price_or_none
     stored_basket.taxful_total_price = basket.taxful_total_price_or_none
     stored_basket.product_count = basket.product_count
     stored_basket.customer = (basket.customer or None)
     stored_basket.orderer = (basket.orderer or None)
     stored_basket.creator = real_user_or_none(basket.creator)
     stored_basket.save()
     stored_basket.products = set(basket.product_ids)
     basket_get_kwargs = {"pk": stored_basket.pk, "key": stored_basket.key}
     request.session[self._get_session_key(basket)] = basket_get_kwargs
Ejemplo n.º 10
0
 def save(self, basket, data):
     """
     :type basket: shuup.front.basket.objects.BaseBasket
     """
     request = basket.request
     stored_basket = self._get_stored_basket(basket)
     stored_basket.data = data
     stored_basket.taxless_total_price = basket.taxless_total_price_or_none
     stored_basket.taxful_total_price = basket.taxful_total_price_or_none
     stored_basket.product_count = basket.product_count
     stored_basket.customer = (basket.customer or None)
     stored_basket.orderer = (basket.orderer or None)
     stored_basket.creator = real_user_or_none(basket.creator)
     stored_basket.save()
     stored_basket.products = set(basket.product_ids)
     basket_get_kwargs = {"pk": stored_basket.pk, "key": stored_basket.key}
     request.session[self._get_session_key(basket)] = basket_get_kwargs
Ejemplo n.º 11
0
    def save(self, basket, data):
        """
        :type basket: shuup.core.basket.objects.BaseBasket
        """
        stored_basket = self._load_stored_basket(basket)
        stored_basket.data = data
        stored_basket.taxless_total_price = basket.taxless_total_price_or_none
        stored_basket.taxful_total_price = basket.taxful_total_price_or_none
        stored_basket.product_count = basket.smart_product_count
        stored_basket.customer = basket.customer or None
        stored_basket.orderer = basket.orderer or None
        stored_basket.creator = real_user_or_none(basket.creator)
        if hasattr(self.model, "supplier") and hasattr(basket, "supplier"):
            stored_basket.supplier = basket.supplier

        stored_basket.class_spec = "%s.%s" % (basket.__class__.__module__, basket.__class__.__name__)

        stored_basket.save()
        stored_basket.products.set(set(basket.product_ids))
        return stored_basket
Ejemplo n.º 12
0
    def update_order_from_source(self, order_source, order):
        data = self.get_source_base_data(order_source)
        for key in self._PROTECTED_ATTRIBUTES:
            if key in data:
                data.pop(key)
        data.update({
            "modified_by": real_user_or_none(order_source.modified_by),
            "modified_on": now()
        })
        Order.objects.filter(pk=order.pk).update(**data)

        order = Order.objects.get(pk=order.pk)
        for module in get_order_source_modifier_modules():
            module.clear_codes(order)

        for line in order.lines.all():
            line.taxes.all().delete()  # Delete all tax lines before OrderLine's
            line.delete()

        return self.finalize_creation(order, order_source)
Ejemplo n.º 13
0
    def update_order_from_source(self, order_source, order):
        data = self.get_source_base_data(order_source)
        for key in self._PROTECTED_ATTRIBUTES:
            if key in data:
                data.pop(key)
        data.update({
            "modified_by": real_user_or_none(order_source.modified_by),
            "modified_on": now()
        })
        Order.objects.filter(pk=order.pk).update(**data)

        order = Order.objects.get(pk=order.pk)
        for module in get_order_source_modifier_modules():
            module.clear_codes(order)

        for line in order.lines.all():
            line.taxes.all().delete(
            )  # Delete all tax lines before OrderLine's
            line.delete()

        return self.finalize_creation(order, order_source)
Ejemplo n.º 14
0
 def post(self, request, *args, **kwargs):
     title = request.POST.get("title", "")
     basket = request.basket
     if not request.customer:
         return JsonResponse({"ok": False}, status=403)
     if not title:
         return JsonResponse({"ok": False, "error": force_text(_("Please enter a basket title."))}, status=400)
     if basket.product_count == 0:
         return JsonResponse({"ok": False, "error": force_text(_("Cannot save an empty basket."))}, status=400)
     saved_basket = StoredBasket(
         shop=basket.shop,
         customer=basket.customer,
         orderer=basket.orderer,
         creator=real_user_or_none(basket.creator),
         currency=basket.currency,
         prices_include_tax=basket.prices_include_tax,
         persistent=True,
         title=title,
         data=basket.storage.load(basket=basket),
         product_count=basket.product_count)
     saved_basket.save()
     saved_basket.products = set(basket.product_ids)
     return JsonResponse({"ok": True}, status=200)