Add setting to allow SlugField and AutoSlugField accept unicode and automatically generate unicode-containing slugs.
Since there is no way to override SlugField and AutoSlugField in existing Oscar models, it was decided to pass `allow_unicode` parameter if this setting enable. This allows to achieve backwards compatibility with Django versions under 1.9, when this parameter was not supported yet. If parameter specified in the field expliticly - we do not override it, which allow to control slug fields individually in a normal way. For the reasons, explained above, standard SlugField was replaced with a custom one with the single slight change - control over `allow_unicode` parameter by the mentioned setting.
Prevent trying to save a negative quantity to a Basket
basket.Line.quantity is a positive integer field, but the quantity sumation in
basket.Basket.add_product made it possible to try and save negative values. This
makes add_product never go below 0-quantity, thereby preventing a db exception
from being thrown. Also adds a test for the described behavior.
The tests check if the year 2010 is a valid option but since only the
last 5 years are rendered this is no longer the case. For now I've
changed the tests to check if 2014 is valid which should be the case the
next few years. A better option is to use the `freezegun` module in the
future.
Fix errors with shipping discounts on free weightbased shipping.
The Repository.apply_shipping_offer() method returns the shipping method
object when there is no additional discount for an order. This however
broke with the WeightBased, because it's implementation does not work.
self.offer is never assigned, nor useful (a copy-paste error?).
Instead, it should work like the non-model `methods.Base` that also
states the method does not have a default shipping discount.
Weigh the basket using decimals, avoid float rounding issues
While the backend stores the information as floats, the calculations
don't have to do be affected by this. For example:
0.3 + 0.3 + 0.3 == 0.8999999999
Using decimals improves the calculation, and avoid falling into the
wrong weight band.
- Set Meta.app_label on models created in the tests
- Use logging.NullHandler instead of django.utils.log.NullHandler
- Use oscar.core.loading.get_model() instead of django's get_model
- Remove template tags '{% load url from future %}'
django-compressor served it's purpose, but given the advent of
more and more frontend JS work, and the accompanying build tools (grunt,
gulp, etc.), it makes less and less sense to use compressor. Jannis
Leidel himself also stepped back from maintaining it.
In my experience with Oscar project, it has also become a bit of a
liability to have compressor as a dependency. Most projects don't use it
any more, but it's not easy to disable/override because all our
templates include it.
So, let's keep things simple and remove it as a dependency. That paves
the way for using other tools, while it's always easy to add back.
Trigger product unavailable warning message using availability policy rather than reproducing the stockrecord check, to allow for greater extensibility.
Replace assert statements with appropriate assert* method.
Replace 'assert' with 'assert*' method.
Convert tests.unit.forms.widget_tests to use TestCase class.
Convert bankcard tests to use TestCase.
Convert tests.unit.logging_tests to use TestCase.
Fix validate_payment_event for payment events with no lines specified
Currently, handle_payment_event defaults lines and line_quantities to None,
however, calling it with these defaults will result in an exception being
raised in validate_payment_event because it expects iterables.
This commit also adds tests to cover validate_payment_event.
Fixes stockrecord availability validation message in the case when stock is lower than allocation. Previously the message that appeared contained negative numbers. For example: "a maximum of -1 can be bought". Now it will display: "no stock available"