Hi fellow Djangonauts

I'm very proud to announce the release of Plata v1.1. Plata is the
BSD licensed Django-based shop by the makers of FeinCMS.
(It does not have any FeinCMS-dependencies though.)

Like many other shop projects such as django-shop, cartridge etc. it
grew out of the frustration of working with big shop frameworks which
strive to do everything with lost and lots of settings instead of
giving the programmer a tool with which it's easy to quickly build
a customized solution for customers (which is the primary reason
for working with Django, not with a turnkey CMS system).

Plata solves a few hard problems:

- Order management with multiple currencies, tax rates and discounts
- Payment (Payment modules for cash on delivery, paypal and ogone are
  bundled)
- Exact, transactional stock tracking for shops which sell goods which
  are often and/or quickly sold out

... but does not try to solve everything. Because of that it does not
come with a product model (which should differ for almost every
installation anyway to keep things simple for the webshop owner) and
keeps everything else mostly stupid but extensible.


Github: https://github.com/matthiask/plata/
RTD: http://readthedocs.org/docs/plata-django-shop/
PyPI: http://pypi.python.org/pypi/Plata/

Examples:
https://github.com/matthiask/plata/tree/master/examples
http://readthedocs.org/docs/plata-django-shop/en/latest/examples.html





=======================
Plata 1.1 release notes
=======================

Welcome to Plata 1.1!


Backwards-incompatible changes
==============================

Order status addition
---------------------

The order status "confirmed" was confusingly named; what it really meant
all the time is that the order can be considered paid. Whether an order is
confirmed or not depends on the shop owner's definitions.

Because of this the existing ``Order.CONFIRMED`` status has been renamed
to ``Order.PAID``, ``Order.CONFIRMED`` has been added as a new order status
coming after ``Order.PAID``. Plata only knows about ``Order.PAID`` and never
changes an order to ``COMPLETED`` itself.

To update your installations to Plata v1.1, you'll have to make the following
changes:

* The method ``order.is_completed()`` has been removed. Either check for
  ``not order.balance_remaining`` (which only looks at the balance, not at the
  order status) or check for ``order.status >= order.PAID`` yourself. For
  consistency, the method ``order.is_confirmed()`` has been removed too.

* ``order.is_paid()`` has been deprecated and will be removed in the next
  release. Use ``order.status >= order.PAID`` or ``not order.balance_remaining``
  directly to clearly communicate your intentions instead.

* The shop signal ``order_completed`` has been renamed to ``order_paid``. Signal
  handlers receive the same arguments as before.

* The email template used in the ``SendInvoiceHandler`` has been renamed to
  ``order_paid.txt``.

* If you wrote your own payment modules, the method you'll want to call at the
  end is now named ``order_paid``, not ``order_completed`` anymore. Apart from
  the renaming the signature of the function has not changed.


Stock tracking
--------------

* The stock transaction app has been converted to south too now. The
  initial migration should be applied with ``--fake`` if you are already
  using stock tracking::

      ./manage.py migrate stock 0001 --fake

* Stock transactions have been made more useful on their own; if possible,
  the name, sku and line item price fields are filled in automatically.
  The south schemamigration for adding all additional fields is provided.

* Previously, stock transactions of type ``PAYMENT_PROCESS_RESERVATION``
  influenced the ``items_in_stock`` field on products even after the
  reservation period was over. This happened because the stock is not
  automatically recalculated when 15 minutes have passed. Plata is smarter
  now and only takes the payment process reservation stock transactions
  into account when validating the order (respectively the cart) during
  the checkout process. A few stock transaction manager methods have been
  removed during the refactoring because their functionality does not
  match Plata's own behavior anymore:

  * ``StockTransaction.objects.stock()``
  * ``StockTransaction.objects.expired()``
  * ``StockTransaction.objects._expired()`` (this method was meant for
    internal use only anyway)

  If you need their functionality, you should have a closer look at
  ``StockTransaction.objects.items_in_stock`` first (especially the
  new argument, ``include_reservations``).


Language-aware orders
---------------------

The order model has a new field ``language_code``. When the order is
created in ``shop.order_from_request(request, create=True)`` this field
is filled with the current language for your convenience. The PDF
generation code and the e-mail notification handlers automatically
activate the language set on the order; if you provide your own
signal handlers and/or PDF generation methods, you have to do this
yourself.

The south schemamigration for this change is provided.


Order validation
----------------

* The checkout process decorator :func:`plata.shop.views.order_confirmed`
  has been renamed to :func:`plata.shop.views.order_already_confirmed` to
  communicate more clearly what it is all about. You don't have to change
  anything except if you customized
  :meth:`~plata.shop.views.Shop.get_shop_urls`.

* The unused order validation group ``VALIDATE_CHECKOUT`` has been removed.


Notable features
================

* Ogone is now a supported payment service provider (PSP).

* Users with a login are not asked whether they want to create a contact,
  this is done automatically. The checkout form is initialized with the
  values form the user model, too.

* If URLs named ``'order_packing_slip_pdf'`` and ``'order_invoice_pdf'``
  are reversible using only a keyword argument ``order_id`` (which only
  consists of a number, it is the primary key of the order model), a
  column with PDF links is automatically added to the orders list in the
  Django admin panel.

* The main :class:`~plata.shop.views.Shop` object gained an additional
  argument, ``base_template``, which can be used to specify a different
  base template than ``base.html`` which should be used in all
  checkout-related templates.

* Payment-related information is handled in its own method inside
  :class:`~plata.reporting.order.OrderReport` now, meaning that it is
  easier to override aspects of it in your shop.

* All rendering is done through a new method on the main shop view,
  :meth:`~plata.shop.views.Shop.render(self, request, context)`, making
  it straightforward to customize the rendering for all steps.

* The order payment failure view now actually does what the template
  advertizes since its inception: The order is made editable again if
  no authorized order payments exist already.


Bugfixes
========

* ``Order.status`` cannot be edited directly through the admin interface
  anymore. Add a new order status model if you need to manually change
  the order status.

* The PDF generation code actually checks whether an order is paid for now.
  Previously, it only checked whether a method named ``is_paid()`` existed
  on the order (which was always the case).

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to