bda.plone.cart


Namebda.plone.cart JSON
Version 2.0b1 PyPI version JSON
download
home_pageNone
SummaryShopping Cart
upload_time2024-04-17 13:47:59
maintainerNone
docs_urlNone
authorBlueDynamics Alliance
requires_pythonNone
licenseGNU General Public Licence
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ==============
bda.plone.cart
==============

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/ambv/black

.. image:: https://travis-ci.org/bluedynamics/bda.plone.shop.svg?branch=master
    :target: https://travis-ci.org/bluedynamics/bda.plone.shop


Shopping cart for plone.

.. contents::


Base package Installation
=========================

Depend your instance to ``bda.plone.cart`` and install it as addon
in plone control panel.


Provide contracts
=================

This package provides components needed to render a shopping cart. It expects
several contracts defined in:

- ``bda.plone.cart.interfaces.ICartDataProvider``
- ``bda.plone.cart.interfaces.ICartItemDataProvider``
- ``bda.plone.cart.interfaces.ICartItemStock``
- ``bda.plone.cart.interfaces.ICartItemPreviewImage``
- ``bda.plone.cart.interfaces.ICartItemAvailability``
- ``bda.plone.cart.interfaces.ICartItemState``
- ``bda.plone.cart.interfaces.ICartDiscount``
- ``bda.plone.cart.interfaces.ICartItemDiscount``

Please take a look at the corresponding interfaces for contract details.
Further some abstract base implementations are available in
``bda.plone.cart.__init__`` which can be used as base class for concrete
implementations.


Cart Visibility
===============

The cart can be rendered as a portlet or inside a viewlet in the portal
header. It's not possible to render the cart twice in one page. Thus, the
viewlet gets skipped automatically if a cart portlet assignment is found.
Also, if cart summary, checkout, order confirmation or portal factory is
rendered, regular cart rendering gets skipped.

Its possible to define custom patterns which are checked against recent
browser URL defining whether to skip cart rendering. This is useful for
custom payment implementations and similar:

.. code-block:: python

    from bda.plone.cart.browser.portlet import SKIP_RENDER_CART_PATTERNS

    SKIP_RENDER_CART_PATTERNS.append('@@my_payment')


A ready-to-use implementation
=============================

Concrete implementations of the expected contracts already exists in
``bda.plone.shop`` for Archetypes and Dexterity. Please refer to
``https://github.com/bluedynamics/bda.plone.shop`` for more details.


Markup
======

Take a look at ``bda.plone.cart.browser:tile.pt`` how HTML markup
for adding items to cart might look like.

Basically a shop item consists of a container DOM element, containing an
element with CSS class ``cart_item_uid``, where the item UID is taken from:

.. code-block:: html

    <span class="cart_item_uid" style="display: none;">12345678</span>

a text input field with CSS class ``cart_item_count`` which is read for
item count:

.. code-block:: html

    <input type="text" size="2" value="1" class="cart_item_count" />

a quantity unit:

.. code-block:: html

    <span class="cart_item_quantity_unit">Quantity</span>

If quantity unit can be be float, add ``quantity_unit_float`` CSS class:

.. code-block:: html

    <input type="text" size="2" value="1"
           class="cart_item_count quantity_unit_float" />

the "add to Cart" action:

.. code-block:: html

    <a href="" class="add_cart_item">add to cart</a>

and the "update cart" action:

.. code-block:: html

    <a href="" class="update_cart_item">update cart</a>

Optionally, If cart viewlet is used, a status message can be displayed when
adding or updating cart items. This is useful if user should get
clearly informed if cart data has changed. To display status messages,
add CSS class ``show_status_message`` to "add to cart" and "update cart"
actions:

.. code-block:: html

    <a href="" class="update_cart_item show_status_message">update cart</a>

and optionally an element defining a comment or an input for entering a
comment:

.. code-block:: html

    <input type="text" size="16" value="" class="cart_item_comment" />

If comment should be required, add CSS class ``required`` to comment input.
If comment is empty, an error message gets shown to the user when trying to
add or update a cart item:

.. code-block:: html

    <input type="text" size="16" value="" class="cart_item_comment required" />


Create translations
===================

::

    $ cd src/bda/plone/cart/
    $ ./i18n.sh


Develop CSS Styles
==================

CSS Styles are written in Sass and compiled via `npm`::

    $ npm install
    $ npm run build  # to build the resources or
    $ npm run watch  # to watch changes during development


Contributors
============

- Robert Niederreiter (Autor)
- Sven Plage
- Peter Holzer
- Harald Friessnegger
- Peter Mathis
- Espen Moe-Nilssen
- Johannes Raggam
- Jure Cerjak
- Icons by famfamfam

Changelog
=========

2.0b1 (2024-04-17)
------------------

- rewrite LESS resources to SASS and remove grunt in favor of npm/sass
  [petschki]

- Use bs popover markup to display cart status message.
  [rnix]

- Remove decimal_converter and rely on plone.restapi>=6.13.7
  [agitator]

- Mark cart item in summary and portlet if comment is enabled or not.
  [jensens]

- Fix broken remove from cart in summary.
  [jensens]

- Handle count number localized.
  [jensens]

- No longer support for z3c.autoinclude.
  [jensens]

- More CSS classes on cart
  [jensens]

- Fix problem, when cart item value is removed while typing item was removed from cart.
  [jensens]

- Fix problem, when in listing the to be added number changes was immediately is added to the cart.
  [jensens]

- Moved shipping code over to here.
  [jensens]

- Refactored lots of code out of init into more semantic modules.
  [jensens]

- Added RESTAPI
  [jensens]

- Code style black.
  [jensens]

- Python 2/3 compatibility
  [agitator]

- Update version and classifiers - 2.x targets Plone 5.1/5.2 without Archetypes
  [agitator]

- Italian translations
  [ale-rt]

- switch to Plone 6 icon resolver
  [petschki]


1.0a1 (unreleased)
------------------

- Keep cart item cound focus after auto update.
  [rnix]

- Auto update cart if item count changes.
  [rnix]

- Replace unittest2 with untittest.
  [llisa123]

- Introduce ``bda.plone.cart.browser.portlet.SKIP_RENDER_CART_PATTERNS`` which
  can be used to define patterns which are checked against actual browser URL
  defining whether to skip cart rendering.
  [rnix]

- In ``cart.js``, make code blocks dealing with add and update after click event available for third party code.
  A move of the two anonymous functions in its own named functions,
  named ``update_cart_item`` and ``add_cart_item`` taking the node as parameter there were called on.
  [jensens]

- In ``cart.js``, allow also a select for count.
  [jensens. agitator]

- Add support for displaying cart item discount in cart.
  [rnix]

- Add ``get_item_shipping`` and ``cart_item_free_shipping`` utilities.
  [rnix]

- Fix typo. Rename remaining ``card_item_tempate`` to ``cart_item_tempate``.
  This already has been changed for summary and overview
  (in ``bda.plone.checkout``) but was missing in ``cart.js`` and ``tile.pt``
  fixes ``#31``. Make sure to fix this in all your cart related custom
  templates!
  [rnix]

- More precise selectors for cart item template, cart summary discount and
  cart summary shipping in ``cart.js``.
  [rnix]

- Use code for safe uid also for get_object_by_uid and use ``plone.api``.
  [jensens]

- fixed selector typo #cart_viewlet_summery with #cart_viewlet_summary
  [agitator]

- Pass comment in JS from add/update cart to server side validation.
  [jensens]

- use MwSt. instead of Ust. in german
  [agitator]

- added data-context-url for sane cartData and validate_cart_item calls on Plone 5
  [agitator]

- Plone 5 update
  [agitator]

- ``extractitems`` now returns a namedtuple with attributes ``uid``, ``count`` and ``comment``
  [jensens]


0.10.dev2
---------

- Resolve JSHint errors and warnings.
  [thet]

- Fix cart item not removable, if comment is required. Fixes #17, fixes #12.
  [thet]

- Remove portlet's cartWrapper div node. It's not used at all and only
  introduces non-standard portlet HTML markup.
  [thet]

- By default, cart viewlet is hidden and gets displayed as soon as cart items
  are fetched.
  [rnix]

- Consider ``hide cart if empty`` setting on cart viewlet.
  [rnix]

- Hide unset preview images for cart item.
  [rnix]

- Cart can display status message if cart data gets modified.
  [rnix]

- Cart might be rendered as viewlet in portal header instead of as portlet.
  [rnix]

- Do not expect ``IShippingItem`` to be implemented. See also
  ``https://github.com/bluedynamics/bda.plone.shop/issues/31``
  [jensens]

- No caching/merging of cart.translations.js
  [agitator]



0.9
---

- Quote/Unqote special characters in cart cookie only for cart item comment.
  Thus we can have any characters in comment. "Invalid comment characters"
  validation and error message no longer necessary.
  [rnix]


0.8
---

- Use ``decodeURIComponent`` instead of deprectaed ``unescape`` in ``cart.js``.
  [rnix]

- Catch ``ValueError`` if given uid value is no valid ``uuid.UUID`` string in
  ``get_catalog_brain``.
  [rnix]

- Let ``get_catalog_brain`` and thus ``get_object_by_uid`` handle ``uuid.UUID``
  objects, hex strings like '8de81513431752d5f32c680db93dda0c' and UUID object
  representation strings like '8de81513-4317-52d5-f32c-680db93dda0c'.
  [thet]

- Encode umlaut characters in cart item comment.
  [rnix]


0.7
---

- Add comment label in cart summary template.
  [rnix]


0.6
---

- Hide discount and shipping info in cart via JS if data changed respective.
  [rnix]

- Remove ``include_shipping_costs`` property from ``CartView``.
  [rnix]

- Always deliver shipping markup for cart, control with JS whether shipping
  costs are displayed.
  [rnix]

- Move ``bda.plone.cart.browser.CURRENCY_LITERALS`` to
  ``bda.plone.cart.CURRENCY_LITERALS``.
  [rnix]

- Add ``ICartDataProvider.max_artice_count`` attribute and implement in
  ``CartDataProviderBase``.
  [rnix]

- Add ``bda.plone.cart.cart_item_shippable`` utility.
  [rnix]

- Implement ``ICartDataProvider.include_shipping_costs`` on
  ``CartDataProviderBase`` using
  ``bda.plone.shipping.interfaces.IShippingItem.shipping`` flag for
  calculation.
  [rnix]

- Add ``ICartDataProvider.total`` attribute and implement in
  ``CartDataProviderBase``.
  [rnix]

- Use ``readcookie`` instead of expecting ``items`` request parameter in
  ``CartDataProviderBase.data``.
  [rnix]

- Do not pass recent cart ``items`` parameter to ``@@cartData`` view, contained
  value is included as ``cart`` cookie anyways.
  [rnix]

- Adopt shipping handling to ``bda.plone.shipping`` >= 0.4.
  [rnix]

- ``CartDataProviderBase`` no longer provides default values for ``currency``,
  ``cart_url``, ``show_to_cart``, ``show_checkout`` and ``show_currency``.
  [rnix]

- Add browser view rendering a JS snippet for Cart JS translations. Cart
  translations are now handled via message catalogs.
  [rnix]

- Fix validation of comment characters in cart JS.
  [rnix]


0.5
---

- Add a title property to the ``ICartItemDataProvider`` accessor interface to
  allow customizations of the cart item title. This can be used to give more
  context on the cart item, e.g. for a buyable within another content item.
  [thet]


0.4
---

- Cart validation considers ``update`` flag on error.
  [rnix]

- Introduce ``remove_item_from_cart`` utility function.
  [rnix]

- ``validate_set`` of ``CartDataProviderBase`` raises ``NotImplementedError``.
  [rnix]

- Hanlde ``article_limit_reached`` message on server side.
  [rnix]

- Extend ``bda.plone.cart.interfaces.ICartItemDataProvider`` by
  ``cart_count_limit``.
  [rnix]

- Fix and refactor max article count for cart.
  [rnix]

- Add ``hide_cart_if_empty`` property to
  ``bda.plone.cart.interfaces.ICartDataProvider``, integrate in
  ``bda.plone.cart.CartDataProviderBase`` and consider in Cart JS.
  [rnix]

- Add ``display`` property to ``bda.plone.cart.interfaces.ICartItemStock`` and
  and expose it via ``bda.plone.cart.CartItemAvailabilityBase``
  [rnix]

- Add ``bda.plone.cart.CartItemDataProviderBase`` class.
  [rnix]

- Extend ``bda.plone.cart.interfaces.ICartItemDataProvider`` by
  ``discount_enabled`` and ``discount_net``.
  [rnix]

- Introduce ``bda.plone.cart.interfaces.ICartDiscount``.
  [rnix]

- Introduce ``bda.plone.cart.interfaces.ICartItemDiscount``.
  [rnix]

- Fix BrowserLayer order precedence.
  [thet]


0.3
---

- Add ``get_item_delivery`` helper function for looking up ``IItemDelivery``
  adapter.
  [rnix]


0.2
---

- Introduce ``bda.plone.cart.interfaces.ICartItemState``.
  [rnix]

- Introduce ``bda.plone.cart.interfaces.ICartItemAvailability``.
  [rnix]

- Introduce ``bda.plone.cart.interfaces.ICartItemStock``.
  [rnix]

- Allow the cart portlet in the left column too.
  [fRiSi]

- Add adapter for cart item preview images
  [petschki]


0.1
---

- initial work
  [rnix]

License
=======

Copyright (c) 2012-2019, BlueDynamics Alliance, Austria
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this 
  list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this 
  list of conditions and the following disclaimer in the documentation and/or 
  other materials provided with the distribution.
* Neither the name of the BlueDynamics Alliance nor the names of its 
  contributors may be used to endorse or promote products derived from this 
  software without specific prior written permission.
      
THIS SOFTWARE IS PROVIDED BY BlueDynamics Alliance ``AS IS`` AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL BlueDynamics Alliance BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "bda.plone.cart",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "BlueDynamics Alliance",
    "author_email": "dev@bluedynamics.com",
    "download_url": "https://files.pythonhosted.org/packages/a8/01/a5f6b1f8b880b6d49c60bfdfb87ca2f580365ee24b56406c0e7e986db38f/bda.plone.cart-2.0b1.tar.gz",
    "platform": null,
    "description": "==============\nbda.plone.cart\n==============\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n    :target: https://github.com/ambv/black\n\n.. image:: https://travis-ci.org/bluedynamics/bda.plone.shop.svg?branch=master\n    :target: https://travis-ci.org/bluedynamics/bda.plone.shop\n\n\nShopping cart for plone.\n\n.. contents::\n\n\nBase package Installation\n=========================\n\nDepend your instance to ``bda.plone.cart`` and install it as addon\nin plone control panel.\n\n\nProvide contracts\n=================\n\nThis package provides components needed to render a shopping cart. It expects\nseveral contracts defined in:\n\n- ``bda.plone.cart.interfaces.ICartDataProvider``\n- ``bda.plone.cart.interfaces.ICartItemDataProvider``\n- ``bda.plone.cart.interfaces.ICartItemStock``\n- ``bda.plone.cart.interfaces.ICartItemPreviewImage``\n- ``bda.plone.cart.interfaces.ICartItemAvailability``\n- ``bda.plone.cart.interfaces.ICartItemState``\n- ``bda.plone.cart.interfaces.ICartDiscount``\n- ``bda.plone.cart.interfaces.ICartItemDiscount``\n\nPlease take a look at the corresponding interfaces for contract details.\nFurther some abstract base implementations are available in\n``bda.plone.cart.__init__`` which can be used as base class for concrete\nimplementations.\n\n\nCart Visibility\n===============\n\nThe cart can be rendered as a portlet or inside a viewlet in the portal\nheader. It's not possible to render the cart twice in one page. Thus, the\nviewlet gets skipped automatically if a cart portlet assignment is found.\nAlso, if cart summary, checkout, order confirmation or portal factory is\nrendered, regular cart rendering gets skipped.\n\nIts possible to define custom patterns which are checked against recent\nbrowser URL defining whether to skip cart rendering. This is useful for\ncustom payment implementations and similar:\n\n.. code-block:: python\n\n    from bda.plone.cart.browser.portlet import SKIP_RENDER_CART_PATTERNS\n\n    SKIP_RENDER_CART_PATTERNS.append('@@my_payment')\n\n\nA ready-to-use implementation\n=============================\n\nConcrete implementations of the expected contracts already exists in\n``bda.plone.shop`` for Archetypes and Dexterity. Please refer to\n``https://github.com/bluedynamics/bda.plone.shop`` for more details.\n\n\nMarkup\n======\n\nTake a look at ``bda.plone.cart.browser:tile.pt`` how HTML markup\nfor adding items to cart might look like.\n\nBasically a shop item consists of a container DOM element, containing an\nelement with CSS class ``cart_item_uid``, where the item UID is taken from:\n\n.. code-block:: html\n\n    <span class=\"cart_item_uid\" style=\"display: none;\">12345678</span>\n\na text input field with CSS class ``cart_item_count`` which is read for\nitem count:\n\n.. code-block:: html\n\n    <input type=\"text\" size=\"2\" value=\"1\" class=\"cart_item_count\" />\n\na quantity unit:\n\n.. code-block:: html\n\n    <span class=\"cart_item_quantity_unit\">Quantity</span>\n\nIf quantity unit can be be float, add ``quantity_unit_float`` CSS class:\n\n.. code-block:: html\n\n    <input type=\"text\" size=\"2\" value=\"1\"\n           class=\"cart_item_count quantity_unit_float\" />\n\nthe \"add to Cart\" action:\n\n.. code-block:: html\n\n    <a href=\"\" class=\"add_cart_item\">add to cart</a>\n\nand the \"update cart\" action:\n\n.. code-block:: html\n\n    <a href=\"\" class=\"update_cart_item\">update cart</a>\n\nOptionally, If cart viewlet is used, a status message can be displayed when\nadding or updating cart items. This is useful if user should get\nclearly informed if cart data has changed. To display status messages,\nadd CSS class ``show_status_message`` to \"add to cart\" and \"update cart\"\nactions:\n\n.. code-block:: html\n\n    <a href=\"\" class=\"update_cart_item show_status_message\">update cart</a>\n\nand optionally an element defining a comment or an input for entering a\ncomment:\n\n.. code-block:: html\n\n    <input type=\"text\" size=\"16\" value=\"\" class=\"cart_item_comment\" />\n\nIf comment should be required, add CSS class ``required`` to comment input.\nIf comment is empty, an error message gets shown to the user when trying to\nadd or update a cart item:\n\n.. code-block:: html\n\n    <input type=\"text\" size=\"16\" value=\"\" class=\"cart_item_comment required\" />\n\n\nCreate translations\n===================\n\n::\n\n    $ cd src/bda/plone/cart/\n    $ ./i18n.sh\n\n\nDevelop CSS Styles\n==================\n\nCSS Styles are written in Sass and compiled via `npm`::\n\n    $ npm install\n    $ npm run build  # to build the resources or\n    $ npm run watch  # to watch changes during development\n\n\nContributors\n============\n\n- Robert Niederreiter (Autor)\n- Sven Plage\n- Peter Holzer\n- Harald Friessnegger\n- Peter Mathis\n- Espen Moe-Nilssen\n- Johannes Raggam\n- Jure Cerjak\n- Icons by famfamfam\n\nChangelog\n=========\n\n2.0b1 (2024-04-17)\n------------------\n\n- rewrite LESS resources to SASS and remove grunt in favor of npm/sass\n  [petschki]\n\n- Use bs popover markup to display cart status message.\n  [rnix]\n\n- Remove decimal_converter and rely on plone.restapi>=6.13.7\n  [agitator]\n\n- Mark cart item in summary and portlet if comment is enabled or not.\n  [jensens]\n\n- Fix broken remove from cart in summary.\n  [jensens]\n\n- Handle count number localized.\n  [jensens]\n\n- No longer support for z3c.autoinclude.\n  [jensens]\n\n- More CSS classes on cart\n  [jensens]\n\n- Fix problem, when cart item value is removed while typing item was removed from cart.\n  [jensens]\n\n- Fix problem, when in listing the to be added number changes was immediately is added to the cart.\n  [jensens]\n\n- Moved shipping code over to here.\n  [jensens]\n\n- Refactored lots of code out of init into more semantic modules.\n  [jensens]\n\n- Added RESTAPI\n  [jensens]\n\n- Code style black.\n  [jensens]\n\n- Python 2/3 compatibility\n  [agitator]\n\n- Update version and classifiers - 2.x targets Plone 5.1/5.2 without Archetypes\n  [agitator]\n\n- Italian translations\n  [ale-rt]\n\n- switch to Plone 6 icon resolver\n  [petschki]\n\n\n1.0a1 (unreleased)\n------------------\n\n- Keep cart item cound focus after auto update.\n  [rnix]\n\n- Auto update cart if item count changes.\n  [rnix]\n\n- Replace unittest2 with untittest.\n  [llisa123]\n\n- Introduce ``bda.plone.cart.browser.portlet.SKIP_RENDER_CART_PATTERNS`` which\n  can be used to define patterns which are checked against actual browser URL\n  defining whether to skip cart rendering.\n  [rnix]\n\n- In ``cart.js``, make code blocks dealing with add and update after click event available for third party code.\n  A move of the two anonymous functions in its own named functions,\n  named ``update_cart_item`` and ``add_cart_item`` taking the node as parameter there were called on.\n  [jensens]\n\n- In ``cart.js``, allow also a select for count.\n  [jensens. agitator]\n\n- Add support for displaying cart item discount in cart.\n  [rnix]\n\n- Add ``get_item_shipping`` and ``cart_item_free_shipping`` utilities.\n  [rnix]\n\n- Fix typo. Rename remaining ``card_item_tempate`` to ``cart_item_tempate``.\n  This already has been changed for summary and overview\n  (in ``bda.plone.checkout``) but was missing in ``cart.js`` and ``tile.pt``\n  fixes ``#31``. Make sure to fix this in all your cart related custom\n  templates!\n  [rnix]\n\n- More precise selectors for cart item template, cart summary discount and\n  cart summary shipping in ``cart.js``.\n  [rnix]\n\n- Use code for safe uid also for get_object_by_uid and use ``plone.api``.\n  [jensens]\n\n- fixed selector typo #cart_viewlet_summery with #cart_viewlet_summary\n  [agitator]\n\n- Pass comment in JS from add/update cart to server side validation.\n  [jensens]\n\n- use MwSt. instead of Ust. in german\n  [agitator]\n\n- added data-context-url for sane cartData and validate_cart_item calls on Plone 5\n  [agitator]\n\n- Plone 5 update\n  [agitator]\n\n- ``extractitems`` now returns a namedtuple with attributes ``uid``, ``count`` and ``comment``\n  [jensens]\n\n\n0.10.dev2\n---------\n\n- Resolve JSHint errors and warnings.\n  [thet]\n\n- Fix cart item not removable, if comment is required. Fixes #17, fixes #12.\n  [thet]\n\n- Remove portlet's cartWrapper div node. It's not used at all and only\n  introduces non-standard portlet HTML markup.\n  [thet]\n\n- By default, cart viewlet is hidden and gets displayed as soon as cart items\n  are fetched.\n  [rnix]\n\n- Consider ``hide cart if empty`` setting on cart viewlet.\n  [rnix]\n\n- Hide unset preview images for cart item.\n  [rnix]\n\n- Cart can display status message if cart data gets modified.\n  [rnix]\n\n- Cart might be rendered as viewlet in portal header instead of as portlet.\n  [rnix]\n\n- Do not expect ``IShippingItem`` to be implemented. See also\n  ``https://github.com/bluedynamics/bda.plone.shop/issues/31``\n  [jensens]\n\n- No caching/merging of cart.translations.js\n  [agitator]\n\n\n\n0.9\n---\n\n- Quote/Unqote special characters in cart cookie only for cart item comment.\n  Thus we can have any characters in comment. \"Invalid comment characters\"\n  validation and error message no longer necessary.\n  [rnix]\n\n\n0.8\n---\n\n- Use ``decodeURIComponent`` instead of deprectaed ``unescape`` in ``cart.js``.\n  [rnix]\n\n- Catch ``ValueError`` if given uid value is no valid ``uuid.UUID`` string in\n  ``get_catalog_brain``.\n  [rnix]\n\n- Let ``get_catalog_brain`` and thus ``get_object_by_uid`` handle ``uuid.UUID``\n  objects, hex strings like '8de81513431752d5f32c680db93dda0c' and UUID object\n  representation strings like '8de81513-4317-52d5-f32c-680db93dda0c'.\n  [thet]\n\n- Encode umlaut characters in cart item comment.\n  [rnix]\n\n\n0.7\n---\n\n- Add comment label in cart summary template.\n  [rnix]\n\n\n0.6\n---\n\n- Hide discount and shipping info in cart via JS if data changed respective.\n  [rnix]\n\n- Remove ``include_shipping_costs`` property from ``CartView``.\n  [rnix]\n\n- Always deliver shipping markup for cart, control with JS whether shipping\n  costs are displayed.\n  [rnix]\n\n- Move ``bda.plone.cart.browser.CURRENCY_LITERALS`` to\n  ``bda.plone.cart.CURRENCY_LITERALS``.\n  [rnix]\n\n- Add ``ICartDataProvider.max_artice_count`` attribute and implement in\n  ``CartDataProviderBase``.\n  [rnix]\n\n- Add ``bda.plone.cart.cart_item_shippable`` utility.\n  [rnix]\n\n- Implement ``ICartDataProvider.include_shipping_costs`` on\n  ``CartDataProviderBase`` using\n  ``bda.plone.shipping.interfaces.IShippingItem.shipping`` flag for\n  calculation.\n  [rnix]\n\n- Add ``ICartDataProvider.total`` attribute and implement in\n  ``CartDataProviderBase``.\n  [rnix]\n\n- Use ``readcookie`` instead of expecting ``items`` request parameter in\n  ``CartDataProviderBase.data``.\n  [rnix]\n\n- Do not pass recent cart ``items`` parameter to ``@@cartData`` view, contained\n  value is included as ``cart`` cookie anyways.\n  [rnix]\n\n- Adopt shipping handling to ``bda.plone.shipping`` >= 0.4.\n  [rnix]\n\n- ``CartDataProviderBase`` no longer provides default values for ``currency``,\n  ``cart_url``, ``show_to_cart``, ``show_checkout`` and ``show_currency``.\n  [rnix]\n\n- Add browser view rendering a JS snippet for Cart JS translations. Cart\n  translations are now handled via message catalogs.\n  [rnix]\n\n- Fix validation of comment characters in cart JS.\n  [rnix]\n\n\n0.5\n---\n\n- Add a title property to the ``ICartItemDataProvider`` accessor interface to\n  allow customizations of the cart item title. This can be used to give more\n  context on the cart item, e.g. for a buyable within another content item.\n  [thet]\n\n\n0.4\n---\n\n- Cart validation considers ``update`` flag on error.\n  [rnix]\n\n- Introduce ``remove_item_from_cart`` utility function.\n  [rnix]\n\n- ``validate_set`` of ``CartDataProviderBase`` raises ``NotImplementedError``.\n  [rnix]\n\n- Hanlde ``article_limit_reached`` message on server side.\n  [rnix]\n\n- Extend ``bda.plone.cart.interfaces.ICartItemDataProvider`` by\n  ``cart_count_limit``.\n  [rnix]\n\n- Fix and refactor max article count for cart.\n  [rnix]\n\n- Add ``hide_cart_if_empty`` property to\n  ``bda.plone.cart.interfaces.ICartDataProvider``, integrate in\n  ``bda.plone.cart.CartDataProviderBase`` and consider in Cart JS.\n  [rnix]\n\n- Add ``display`` property to ``bda.plone.cart.interfaces.ICartItemStock`` and\n  and expose it via ``bda.plone.cart.CartItemAvailabilityBase``\n  [rnix]\n\n- Add ``bda.plone.cart.CartItemDataProviderBase`` class.\n  [rnix]\n\n- Extend ``bda.plone.cart.interfaces.ICartItemDataProvider`` by\n  ``discount_enabled`` and ``discount_net``.\n  [rnix]\n\n- Introduce ``bda.plone.cart.interfaces.ICartDiscount``.\n  [rnix]\n\n- Introduce ``bda.plone.cart.interfaces.ICartItemDiscount``.\n  [rnix]\n\n- Fix BrowserLayer order precedence.\n  [thet]\n\n\n0.3\n---\n\n- Add ``get_item_delivery`` helper function for looking up ``IItemDelivery``\n  adapter.\n  [rnix]\n\n\n0.2\n---\n\n- Introduce ``bda.plone.cart.interfaces.ICartItemState``.\n  [rnix]\n\n- Introduce ``bda.plone.cart.interfaces.ICartItemAvailability``.\n  [rnix]\n\n- Introduce ``bda.plone.cart.interfaces.ICartItemStock``.\n  [rnix]\n\n- Allow the cart portlet in the left column too.\n  [fRiSi]\n\n- Add adapter for cart item preview images\n  [petschki]\n\n\n0.1\n---\n\n- initial work\n  [rnix]\n\nLicense\n=======\n\nCopyright (c) 2012-2019, BlueDynamics Alliance, Austria\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this \n  list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this \n  list of conditions and the following disclaimer in the documentation and/or \n  other materials provided with the distribution.\n* Neither the name of the BlueDynamics Alliance nor the names of its \n  contributors may be used to endorse or promote products derived from this \n  software without specific prior written permission.\n      \nTHIS SOFTWARE IS PROVIDED BY BlueDynamics Alliance ``AS IS`` AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL BlueDynamics Alliance BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n",
    "bugtrack_url": null,
    "license": "GNU General Public Licence",
    "summary": "Shopping Cart",
    "version": "2.0b1",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ee05d44a8f56a8ffd314c0ac054a5c1b0e10af6d7a0a3f5fc6e17a393e07e0ad",
                "md5": "18561924d24ec679dac723b8e20d87f4",
                "sha256": "638b18734b701649754303839f6f66120cbf45272a1958f35791cf3c72b22ff6"
            },
            "downloads": -1,
            "filename": "bda.plone.cart-2.0b1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "18561924d24ec679dac723b8e20d87f4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 85435,
            "upload_time": "2024-04-17T13:47:57",
            "upload_time_iso_8601": "2024-04-17T13:47:57.464487Z",
            "url": "https://files.pythonhosted.org/packages/ee/05/d44a8f56a8ffd314c0ac054a5c1b0e10af6d7a0a3f5fc6e17a393e07e0ad/bda.plone.cart-2.0b1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a801a5f6b1f8b880b6d49c60bfdfb87ca2f580365ee24b56406c0e7e986db38f",
                "md5": "27addea5a8224642b50134d071b15d97",
                "sha256": "30f9ed514e0ad4649eb3262370a3a724250fac656508dabe768dc0a733105ab0"
            },
            "downloads": -1,
            "filename": "bda.plone.cart-2.0b1.tar.gz",
            "has_sig": false,
            "md5_digest": "27addea5a8224642b50134d071b15d97",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 69142,
            "upload_time": "2024-04-17T13:47:59",
            "upload_time_iso_8601": "2024-04-17T13:47:59.513210Z",
            "url": "https://files.pythonhosted.org/packages/a8/01/a5f6b1f8b880b6d49c60bfdfb87ca2f580365ee24b56406c0e7e986db38f/bda.plone.cart-2.0b1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-17 13:47:59",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "bda.plone.cart"
}
        
Elapsed time: 3.42199s