Add compatibility for Django 2.1, and drop support for Python 3.4.
Django 2.1 works fine - the only issue was that more passwords
have been added to the CommonPasswordValidator which caused some tests
to fail. I've removed that validator from the test settings.
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.