123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- =======================
- Oscar 0.7 release notes
- =======================
-
- :release: 2014-04-29
-
- Welcome to Oscar 0.7!
-
- These release notes cover the :ref:`new features <new_in_0.7>` as well as
- :ref:`backwards incompatible changes <incompatible_changes_in_0.7>` that you'll want to be aware of when
- upgrading from Oscar 0.6 or earlier.
-
- If you encounter any undocumented issues, please let us know on the `mailing
- list`_.
-
- .. _`mailing list`: https://groups.google.com/forum/?fromgroups#!forum/django-oscar
-
- Table of contents:
-
- .. contents::
- :local:
- :depth: 1
-
- .. _overview_of_0.7:
-
- Overview
- ========
-
- Oscar 0.7 is largely a maintenance release, fixing minor issues, merging
- long-standing pull requests and other housekeeping.
-
- As part of the clean-up, we have removed a few unused models and model fields,
- as well as removing ``null=True`` from a load of ``CharFields`` - so please read the
- release notes carefully when upgrading as some schema migrations may need some
- care.
-
- Further, ensure you test your checkout implementation carefully after upgrading
- as the core Oscar checkout view classes have been reorganised slightly. Any
- upgrading work should be minor but be diligent.
-
- .. _compatibility_of_0.7:
-
- Compatibility
- =============
-
- Oscar 0.7 has experimental support for Python 3.
-
- Support for Django 1.4 has been dropped, and support for Django 1.6 is
- now considered stable.
-
- .. _new_in_0.7:
-
- What's new in Oscar 0.7?
- ========================
-
- Search improvements
- ~~~~~~~~~~~~~~~~~~~
-
- Several improvements have been made to Oscar's default search functionality:
-
- * Search results can be now be sorted.
-
- * If your search backend supports it, spelling suggestions will be shown if
- the original search term doesn't lead to any results.
-
- * Only products are returned by the core search view. Other content types in
- your search index are filtered out (`#370`_).
-
- .. _`#370`: https://github.com/django-oscar/django-oscar/issues/370
-
- Extended signals
- ~~~~~~~~~~~~~~~~
-
- Oscar's signals have been improved and consolidated, making it easier to hook
- into user journeys and extract analytics information.
-
- Changes to existing signals include:
-
- - The :ref:`basket_addition_signal` signal now passes the ``request`` as an additional
- kwarg.
-
- - The :ref:`user_registered_signal` signal now passes the ``request`` as an additional
- kwarg.
-
- New signals:
-
- - A :ref:`start_checkout_signal` signal is now raised when the customer begins the
- checkout process.
-
- See the :doc:`signals docs </ref/signals>` for more details.
-
- Checkout reorganisation
- ~~~~~~~~~~~~~~~~~~~~~~~
-
- The checkout classes have been reworked to clean-up how pre-conditions are
- enforced. Each view class now has a ``pre_conditions`` attribute which is an
- iterable of method names (as strings). Each method is run within the
- ``dispatch`` method of the view and will redirect the customer back to the
- appropriate view if the check fails.
-
- This change makes pre-conditions easier to customise and simplifies the core
- checkout views. Consequently, the following methods are no longer required and
- have been removed:
-
- * ``PaymentDetails.get_error_response``
- * ``PaymentDetails.can_basket_be_submitted``
-
- Further, the ``PaymentDetailsView`` has been re-organised for extensibility.
- For instance, several new methods have been introduced to allow
- fine-grained overriding of functionality:
-
- * :func:`~oscar.apps.checkout.views.PaymentDetailsView.handle_payment_details_submission` -
- This is responsible for validating any forms submitted from the payment
- URL
-
- * :func:`~oscar.apps.checkout.views.PaymentDetailsView.handle_place_order_submission` -
- This is responsible for placing an order after a submission from the preview
- URL.
-
- * :func:`~oscar.apps.checkout.views.PaymentDetailsView.render_payment_details` -
- Render the payment details template.
-
- The implementation of
- :func:`~oscar.apps.checkout.views.PaymentDetailsView.submit` has been improved
- to handle payment errors in a more customer friendly way. If an exception is
- raised during payment, the payment details page is now loaded with the
- original forms passed to the template (so form validation errors can be displayed).
-
- Finally, the ``billing_address`` kwarg to
- :func:`~oscar.apps.checkout.views.PaymentDetailsView.submit`` has been removed.
- If you want to pass a billing address to be saved against the order, then pass
- it as part of the ``order_kwargs`` option.
-
- .. _minor_changes_in_0.7:
-
- Minor changes
- ~~~~~~~~~~~~~
-
- * Oscar's LESS files now use Bootstrap 2.3.2 (Oscar 0.6 uses 2.1.1).
-
- * The product model now has a
- :attr:`~oscar.apps.catalogue.abstract_models.Product.num_approved_reviews`
- property to avoid unnecessary SQL queries when rendering templates (`#1299`_)
-
- * Customers can delete their profiles from within their account section.
-
- * Customers are prevented from using short or common passwords when changing
- their password in their account (`#1202`_)
-
- * :attr:`~oscar.core.application.Application.permissions_map` now supports more than two
- lists to evaluate permissions.
-
- * Formset handling in
- :class:`~oscar.apps.dashboard.catalogue.views.ProductCreateUpdateView` has
- been simplified and now easily allows adding further formsets.
-
- * Increased required version of Django Haystack to 2.1
-
- * The dashboard's Bootstrap and the Bootstrap JS has been bumped to 2.3.2, the
- latest release of version 2.
-
- * The dashboard's category handling now has the ability to directly create
- child categories.
-
- * Oscar's error messages now have their own CSS class, ``error-block``
- (`ef3ccf08a7`_).
-
- * It is now possible to disable the redirect that happens when a product or
- category's slug changed and an old URL is used (`b920f8ba`_).
-
- * :class:`~oscar.apps.payment.forms.BankCardNumberField` now allows specifying
- accepted card types (`32b7249`_).
-
- * Several slug fields have been turned into the newly introduced
- :class:`~oscar.models.fields.AutoSlugField` to ensure that generated slugs
- are unique.
-
- * Widget initialisation can now be prevented with adding the ``no-widget-init``
- class. Issues around widget initialisation in the dashboard promotions have
- been resolved.
-
- * The access function used to determine dashboard's menu entries' visibility
- is now settable via
- :doc:`OSCAR_DASHBOARD_DEFAULT_ACCESS_FUNCTION</ref/settings>`.
-
- * Vouchers start and end times are now datetimes instead of dates; allowing
- "lunch-time deals" etc.
-
- * Product classes can now be added from the dashboard. Editing options and
- attributes is not yet supported though.
-
- * Experimental support for having a language prefix in the URL has been added,
- and enabled for the sandbox. This can be achieved by using Django's
- `i18n_patterns`_ function in your ``urls.py``. for the sandbox.
- See ``sites/sandbox/urls.py`` for an example.
-
- * A basic example for a multi-language sitemap has been added to the sandbox.
-
- * Reasoning about e.g. when it is feasible to drop Python 2.6 or Django 1.5
- support is hard without reliable data, hence the tracker pixel has been
- extended to submit the Python and Django version in use.
- Tracking is still easily disabled by setting ``OSCAR_TRACKING`` to ``False``.
-
- .. _`#1202`: https://github.com/django-oscar/django-oscar/pull/1202
- .. _`#1299`: https://github.com/django-oscar/django-oscar/pull/1299
- .. _`b920f8ba`: https://github.com/django-oscar/django-oscar/commit/b920f8ba288cd2f19bb167db2a012479ba956397
- .. _`ef3ccf08a7`: https://github.com/django-oscar/django-oscar/commit/ef3ccf08a707ae1250cdb8d5f2dc6f721d020dc4
- .. _`32b7249`: https://github.com/django-oscar/django-oscar/commit/32b7249e44b40cb1b20d01226f77ae6777a20b91
- .. _`i18n_patterns`: https://docs.djangoproject.com/en/dev/topics/i18n/translation/#language-prefix-in-url-patterns
-
- Bugfixes
- ~~~~~~~~
-
- * Addresses in non-shipping countries can no longer be selected as default shipping
- address anymore (`be04d46639`_).
-
- * Suspended and consumed offers are no longer returned by the "active" offer
- manager. (`#1228`_).
-
- * Products can now be removed from categories (`#1289`_).
-
- .. _`#1228`: https://github.com/django-oscar/django-oscar/issues/1228
- .. _`#1289`: https://github.com/django-oscar/django-oscar/issues/1289
- .. _`be04d46639`: https://github.com/django-oscar/django-oscar/commit/
-
- .. _incompatible_changes_in_0.7:
-
- Backwards incompatible changes in 0.7
- =====================================
-
- .. warning::
-
- Fields and models have been removed from Oscar. If you used them, you must
- ensure you create/extend the affected models appropriately.
-
- * Oscar has dropped support for Django 1.4. However, if Oscar continues to
- support the ``AUTH_PROFILE_MODULE`` setting so sites that use separate
- profile models aren't forced to convert to a single user model in order to
- use Oscar 0.7.
-
- * ``AbstractProduct.status`` was an unused ``CharField`` provided for convenience
- as it's a commonly required field. But a different field type was often
- required, and as changing it is much harder than adding a field with the
- desired type, the field has been removed.
-
- * ``Contributor``, ``ContributorRole``, the through-model ``ProductContributor``
- and their abstract versions have been removed as they were unused and too
- specific to the domain of book shops.
-
- * ``ProductCategory.is_canonical`` was an unused ``BooleanField`` and has been
- removed.
-
- * ``Order.basket_id`` was a ``PositiveIntegerField`` containing the primary key of the
- associated basket. It's been refactored to be a nullable ``ForeignKey`` and
- is now called "basket".
-
- * `#1123`_ - The URL structure of ``ProductCreateRedirectView`` has been changed to use
- the product class' slug instead of the primary key. It's necessary to update
- URLs pointing to that view.
-
- * ``ProductListView`` has been removed as it wasn't needed any more after the
- search improvements. The old URL route still works.
-
- * Accessing categories by just slug instead of primary key and slug had been
- unofficially deprecated for 0.6, and is removed now.
-
- * `#1251`_ - Form related templates have been refactored. If you've modified
- them, your templates might need updating.
-
- * ``django.conf.urls.i18n`` has been removed from Oscar's default URLs. This is
- because to get ``i18n_patterns`` working for Oscar, it needs to be defined
- outside of the scope of it. If you use i18n, you need to explicitly add the
- following line to your main ``urls.py``::
-
- (r'^i18n/', include('django.conf.urls.i18n')),
-
- * jScrollPane, which was used to style the dashboard's scroll bars, has been
- removed.
-
- * The methods ``get_error_response`` and ``can_basket_be_submitted`` have been
- removed from the ``PaymentDetailsView`` view class in checkout
-
- .. _`#1123`: https://github.com/django-oscar/django-oscar/pull/1123
- .. _`#1251`: https://github.com/django-oscar/django-oscar/pull/1251
-
- Removal of features deprecated in 0.6
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- * Django 1.4 support has been removed.
-
- * In :class:`~oscar.apps.checkout.mixins.OrderPlacementMixin`, the following methods
- have been removed:
-
- - ``create_shipping_address_from_form_fields`` - This is removed as checkout
- now requires an unsaved shipping address instance to be passed in (rather
- than having it created implicitly).
- - ``create_user_address`` - This is replaced by
- :meth:`oscar.apps.checkout.mixin.OrderPlacementMixin.update_address_book`.
- - ``create_shipping_address_from_user_address``
-
- * The :meth:`oscar.apps.checkout.session.CheckoutSessionData.shipping_method`
- has been removed. Instead
- :meth:`oscar.apps.checkout.session.CheckoutSessionMixin.get_shipping_address`
- provides the same functionality.
-
- Migrations
- ~~~~~~~~~~
-
- .. warning::
-
- The reviews app has not been under migration control so far. Please ensure
- you follow South's guidelines on how to `convert an app`_. Essentially,
- you will have to run: ``$ ./manage.py migrate reviews 0001 --fake``
-
- .. warning::
-
- A lot of Oscar apps have data migrations for CharFields before ``null=True``
- is removed in the following schema migration. If you have extended such an
- app and use your own migrations, then you will need to first convert
- affected ``None``'s to ``''`` yourself; see the data migrations for our
- approach.
-
- .. note::
-
- Be sure to read the detailed instructions for
- :doc:`handling migrations </topics/upgrading>`.
-
- * Address:
-
- - ``0008`` - Forgotten migration for ``UserAddress.phone_number``
- - ``0009`` & ``0010`` - Data and schema migration for removing ``null=True`` on ``CharFields``
-
- * Catalogue:
-
- - ``0014`` - Drops unused ``ProductCategory.is_canonical`` field.
- - ``0015`` - Turns a product's UPC field into a :class:`oscar.models.fields.NullCharField`
- - ``0016`` - ``AutoSlugField`` for ``AbstractProductClass`` and ``AbstractOption``
- - ``0017`` - Removes ``Product.status``, ``Contributor``, ``ContributorRole`` and ``ProductContributor``
- - ``0018`` - Set ``on_delete=models.PROTECT`` on ``Product.product_class``
- - ``0019`` & ``0020`` - Data and schema migration for removing ``null=True`` on ``CharFields``
-
- * Customer:
-
- - ``0006`` - ``AutoSlugField`` and ``unique=True`` for ``AbstractCommunicationEventType``
- - ``0007`` & ``0008`` - Data and schema migration for removing ``null=True`` on ``CharFields``
- - ``0009`` - Migration caused by ``CommunicationEventType.code`` separator change
-
- * Offer:
-
- - ``0029`` - ``AutoSlugField`` for ``ConditionalOffer``
- - ``0030`` & ``0031`` - Data and schema migration for removing ``null=True`` on ``CharFields``
- - ``0032`` - Changing ``proxy_class`` fields to ``NullCharField``
-
- * Order:
-
- - ``0025`` - ``AutoSlugField`` for ``AbstractPaymentEventType`` and AbstractShippingEventType``
- - ``0026`` - Allow ``null=True`` and ``blank=True`` for ``Line.partner_name``
- - ``0027`` & ``0028`` - Data and schema migration for removing ``null=True`` on ``CharFields``
-
- * Partner:
-
- - ``0011`` - ``AutoSlugField`` for ``AbstractPartner``
- - ``0012`` & ``0013`` - Data and schema migration for removing ``null=True`` on ``CharFields``
-
- * Payment:
-
- - ``0003`` - ``AutoSlugField`` and ``unique=True`` for ``AbstractSourceType``
-
- * Promotions:
-
- - ``0004`` & ``0005`` - Data and schema migration for removing ``null=True`` on ``CharFields``
-
- * Shipping:
-
- - ``0006`` - ``AutoSlugField`` for ``ShippingMethod``
-
- * Reviews:
-
- - ``0001`` - Initial migration for reviews application. Make sure to follow
- South's guidelines on how to `convert an app`_.
- - ``0002`` & ``0003`` - Data and schema migration for removing ``null=True`` on ``CharFields``
-
- * Voucher:
-
- - ``0002`` and ``0003`` - Convert ``[start|end]_date`` to
- ``[start|end]_datetime`` (includes data migration).
-
- .. _`convert an app`: http://south.readthedocs.org/en/latest/convertinganapp.html
|