コード例 #1
0
ファイル: commands.py プロジェクト: geomars/shoop
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
コード例 #2
0
ファイル: commands.py プロジェクト: 00WhengWheng/shuup
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
コード例 #3
0
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()
コード例 #4
0
ファイル: storage.py プロジェクト: cuberskulk/shoop
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()
コード例 #5
0
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
コード例 #6
0
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)
コード例 #7
0
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
コード例 #8
0
def get_basket_order_creator(request):
    return cached_load("SHOOP_BASKET_ORDER_CREATOR_SPEC")(request=request)
コード例 #9
0
ファイル: checkout.py プロジェクト: charn/shoop
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
コード例 #10
0
ファイル: checkout.py プロジェクト: if413019/ShoopDevelopment
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