Fix validation of required phone_number field in PhoneNumberMixin.
If a phone_number field is required, and empty, then PhoneNumberMixin.clean() fails with a key error because the field does not exist in cleaned_data.
This patch fixes the clean() method to only attempt to clean a field if it exists in cleaned_data. If it doesn't then allow Django to raise a validation error for a missing required field.
Also added more comprehensive tests for the validation logic in the mixin.
Update ModelFormSetView subclasses to use new factory_kwargs attribute.
Support for the old-style attributes was dropped in django-extra-views 0.11.
Also pin the version as the package does not use semantic versioning.
Fixes #2688.
Decouple price and availability in base strategies.
Revert changes in #1913 and #2294 that required a stock record to have price_excl_tax set in order to report the product as available.
Add separate checks to the basket form/add logic that checks at the time of
adding a product to the basket whether a price exists, and report an error if it doesn't.
Fixes #2664.
Add backward compatible order verification hash checking.
This can be enabled by specifying a `OSCAR_DEPRECATED_ORDER_VERIFY_KEY` setting, which is not set by default.
This allows projects to continue validating old order verification hashes while still changing the `SECRET_KEY`.
Distinguish active address fields definition and address hash generation in order to avoid hashing breaking when active address fields property is customized.
Fix `ExtendedURLValidator` for locale-prefixed URLs for locales, different the current.
Previously, validation did not pass when current locale is "en-gb" and URL is "/de/catalogue/" and visa versa due to default Django URL resolvers behaviour - they do not take into account all locales, only current.
- StockRecord.price_retail
- StockRecord.cost_price
- order.Line.est_dispatch_date
- order.Line.line_price_incl_tax
- order.Line.line_price_excl_tax
- order.Line.unit_cost_price
- order.Line.unit_retail_price
These fields are not used in Oscar core. Refs #1968.
Fix URL character validation in dashboard PageUpdateForm.
Also fix the max_length on the url field. The underlying model field has
a max_length of 100, so it is invalid to have a larger value here.
DRY out dashboard page update/create views.
Refactor tests - perform tests of form logic directly rather than indirectly through view code.
Fixes #2559.
Added hook to allow implementations of strategies that depend on productoptions (#2523)
* Added hook to allow implementations of strategies that depend on productoptions
Currently when I need to implement a price strategy that has price
components that are dependent on product options, a rather large part of the
basket code needs to be copy pasted, the whole of ``add_product``. The hook
added here allows me to only override the hook.
Some use cases are: Pens with engravings, the price of engraving depends on
the number of letters. But a lot more things open up when prices can be
assigned based on product configuration.
* flesh-out initial opaque data-model
refactors the basket line consumption into a facade object.
the goals is accomodating combitions of various offers on the same basket-lines,
while remaining backward compatible with the current single offer per line
policy.
* add docstrings
* add exclusive flag to conditionaloffer model and continue refactoring
* test new offer consumption on basket view
* cleanups
* fix exclusivity
* code style
* add cast to pacify tests
* spelling
* add some documentation to the release notes
* move documentation to new 1.6 release docs
- Remove outdated material relating to old versions of Django
- State that Oscar assumes that the email field is unique
- Update a number of links to Django documentation.
- Minor fixes to other bits of documentation.