def handle_update(request, basket, **kwargs): """ Handle updating a basket, i.e. deleting some lines or updating quantities. This dispatches further to whatever is declared by the `SHOOP_BASKET_UPDATE_METHODS_SPEC` configuration entry. """ methods = cached_load("SHOOP_BASKET_UPDATE_METHODS_SPEC")(request=request, basket=basket) prefix_method_dict = methods.get_prefix_to_method_map() basket_changed = False # If any POST items match a prefix defined in prefix_method_dict, call the appropriate model method. for key, value in six.iteritems(kwargs): for prefix, method in six.iteritems(prefix_method_dict): if key.startswith(prefix): line_id = key[len(prefix):] line = basket.find_line_by_line_id(line_id) field_changed = method( key=key, value=value, line=line ) basket_changed = (basket_changed or field_changed) break if basket_changed: # pragma: no branch basket.clean_empty_lines() basket.dirty = True
def get_storage(): """ Retrieve a basket storage object. :return: A basket storage object :rtype: BasketStorage """ storage_class = cached_load("SHOOP_BASKET_STORAGE_CLASS_SPEC") return storage_class()
def get_basket(request): """ :type request: django.http.request.HttpRequest :rtype: shoop.front.basket.objects.BaseBasket """ if not hasattr(request, "basket"): # pragma: no branch basket_class = cached_load("SHOOP_BASKET_CLASS_SPEC") # This is a little weird in that this is likely to be called from `BasketMiddleware`, # which would do the following assignment anyway. However, in case it's _not_ called # from there, for some reason, we want to still be able to cache the basket. request.basket = basket_class(request) return request.basket
def get_basket_command_dispatcher(request): """ :type request: django.http.request.HttpRequest :rtype: shoop.front.basket.command_dispatcher.BasketCommandDispatcher """ return cached_load("SHOOP_BASKET_COMMAND_DISPATCHER_SPEC")(request=request)
def get_basket_view(): view = cached_load("SHOOP_BASKET_VIEW_SPEC") if hasattr(view, "as_view"): # pragma: no branch view = view.as_view() return view
def get_basket_order_creator(request): return cached_load("SHOOP_BASKET_ORDER_CREATOR_SPEC")(request=request)
def get_checkout_view(): view = cached_load("SHOOP_CHECKOUT_VIEW_SPEC") if hasattr(view, "as_view"): # pragma: no branch view = view.as_view() return view