This change adds a uniqueness constraint on user addresses to prevent
duplicates. A few changes follow:
- The user address forms in account and checkout are modified to take a
user as a constructor arg so uniqueness can be checked.
- The assignment of a user when creating a new address has been moved
into the form.
This allows updating code in both places, if necessary. Getting Django
1.5 support would be painful otherwise. This also removes the circular
dependency of django-oscar-testsupport on Oscar.
The requirements were merged. The imports were updated
accordingly. Unused imports in the touched files were removed. No
further changes.
When adding to the basket, products with options were treated as
different products for each combination of options. This allowed adding
more products into the basket than are available for purchase.
The handling has been updated to sum up the already added quantity of
the product regardless of options.
Fixes #665
By adding the __setstate__ method an infinite loop is avoided regarding
the use of __getattr__ on the ProductAttributesContainer model.
Moving tests into appropriate folder
shipping/models:ShippingMethod was missing the is_discounted attribute that
exists in the de-facto superclass in shipping/base:ShippingMethod.
Also added a few comments to clarify how they relate to each other, and
tests to check if is_discounted is present on various instances of
ShippingMethods.
Following guidance from Tangent's UX team (blame them!)
* Split 'metadata' step into 'name and description' and 'restrictions'
* Add progress bar
* Add summary of entered data in right-hand sidebar
* Clean up breadcrumbs and URLs
Still needs from FED love.
This makes it more efficient to load offers now that we can't simply use
the date filters to exlucde unavailable offers.
The is_active field has been reworked to depend on the
get_max_applications method.
The save method of ConditionalOffer now auto-sets status.
Fixes #403