- deps: update dependency django-oscar to v3.2.5
- pin django-oscar version due to breaking changes in patch versions
- deps: update dependency superagent to v10
- deps: update dependency django to ^4.2.16
- deps: update dependency thelabdb to ^0.1.2
- improve performance of RangeProductSet materialized view SQL
- add missing migration
- fix behavior of bulk add/exclude forms in RangeProductListView
- resolve NoReverseMatch error for
voucher-list-children
- deps: update dependency tslib to ^2.7.0
- deps: update dependency core-js to ^3.38.1
- deps: update dependency django to ^4.2.15
- introduce update_children arg in the child creation method
- deps: update dependency core-js to ^3.38.0
- deps: update dependency django to ^4.2.14
- deps: update dependency regenerator-runtime to ^0.14.1
- deps: update dependency django to ^4.2.13
- deps: update dependency core-js to ^3.37.1
- deps: update dependency classnames to ^2.5.1
- deps: update dependency djangorestframework to v3.15.2
- deps: update dependency superagent to v8.1.2
- deps: update dependency regenerator-runtime to ^0.14.0
- deps: update dependency celery to v5.4.0
- deps: update dependency core-js to v3.37.1
- deps: update dependency classnames to v2.5.1
- deps: update dependency django to v4.2.13
- deps: update dependency djangorestframework to v3.15.1
- Fix offer pagination bugs introduced by 5.5.10 (see !87).
- Improve offer select performance on voucher creation screen.
- Improve query performance of child-voucher creation-date table.
- Improve query performance for copying parent-to-child offers relationship
- Fix order status bug in get_recalculate_offer_application_totals_sql
- Fix compatibility with Oscar 3.2.3.
- Tweak
Voucher._create_child_batch
so that batch size does not exceed Postgres limit of 65535 query params
- Improve performance of child code additions
- Add support for psycopg
- Fix bug when basket line unit_effective_price is None.
- Fix bug where dashboard range form error messages were not consistent with the actual DB state.
- Fix performance regression in Voucher._get_child_code_batch
- Add conjunction type to CompoundBenefits
- Add support for django-oscar 3.2.2
- Add support for django 4.2
- Add rules framework to allow library consumers to change how vouchers are determined to be available or not.
- Add functionality for recalculating offer application totals based on OrderDiscount models. This allows correcting voucher discount stats to account for canceled orders.
- Redesign RangeProductSet view updating to improve web request performance (at the cost of allowing the view to be slightly out of date).
- Fix issue where a voucher is applied multiple times when it contains multiple offers.
- Allow HiddenPostOrderAction benefits to be combined with other benefit types.
- Improve descriptions of fixed price benefits.
- Add new system for obtaining structured data regarding offer upsell messages
- Add
BLUELIGHT_IGNORED_ORDER_STATUSES
, ignore voucher usage on orders with those statuses
- Change
DEFAULT_AUTO_FIELD
toBigAutoField
, migrateVoucher_offers
through table.
- Fix bug where Voucher._create_child returns the unsaved voucher object instead of the saved version.
- Fix performance issues with creating / updating large numbers of child voucher codes.
- Fix 500 error in dashboard when saving offer directly from form step 1.
- Add created date filtering to Voucher child code export view.
- Fix performance issue in VoucherStatsView when a code had a large number of child codes.
- Revert change to
CREATE OR REPLACE TRIGGER
fromr5.1.1
since this syntax is only supported in PostgreSQL 14.
- Reduce opportunities for deadlocks while updating PostgresSQL views and triggers.
- Add new
max_discount
field to Benefit models, to allow capping the total discount granted by a benefit within a single application. Primary intended use case is for capping the discount granted by a compound benefits, when its child benefits could, in some product combinations, exceed the desired discount. - Convert README from reStructuredText to Markdown.
- Fix performance issues related to vouchers with large numbers if children.
- Remove duplicate
offer_type
field from offer form.
- Oscar 3.1 compatibility
- Drops Oscar 3.0 compatibility (due to 3.1's significant changes to offers / vouchers).
- Fix bug in Offer Restrictions form which always reset voucher-type offers to site-type offers.
- Add new "Fixed Price Per Item" benefit type
- Add new dashboard view to view and delete voucher child codes.
- Tweak voucher form to allow creating custom child codes on initial voucher creation.
- Oscar 3.0 Compatibility
- Add checkbox for excluding offer from cosmetic pricing
- Improve performance of the "Add Products to Range" functionality in the dashboard by utilizing batch inserts.
- Use Postgres materialized views to improve performance of querying for products in a range.
- Support django-oscar 2.1
- Add improved reporting formats for offers and vouchers.
- Fix bug in CompoundBenefit which caused lines to not be properly consumed by a condition if the last-to-be-applied child benefit didn't trigger a discount.
- Add support for django-oscar 2.x.
- Drop support for django-oscar 1.x.
- Internationalization
- Feature: Compound Benefits. Allows applying more than one benefit with a single offer.
- Improve performance of Range.contains_product by utilizing Redis SETs. Requires Redis caching on the Django site
- Improve UI of the offer group dashboard view.
- Improve checkout performance by tuning the update query in Offer.record_usage.
- Alter behavior of MultibuyDiscountBenefit. Not discounts the second-most expensive product, rather than the cheapest product.
- Remove now-unused cosmetic-pricing settings.
- Fix bug with effective price.
- Add support for adding images to Offers and Vouchers.
- Add support for Python 3.7.
- Add support for Django 2.1.
- Add flag to offer result objects to allow flagging a result as hidden in the UI. Doesn't functionally affect anything other than adding the boolean flag property.
- Bugfix for clearing products from range cache
- Add support for Oscar 1.6 and Django 2.0.
- Due to the write of the offer's system in Oscar 1.6, this release drops support for Oscar 1.5.
- Fix exception thrown when editing a voucher
- Fix broken Webpack build
- Improve performance of offer application by caching the results of
Range.contains_product
andRange.contains
.
- Improve performance of cosmetic price application by using
select_related
.
- Fix Django 2.0 Deprecation warnings.
- Fix bug preventing saving an Offer's short name in the dashboard.
- Fix method signature bug in several shipping benefits.
- Adds support for Django 1.11 and Oscar 1.5
- Add Concept of System Offer Groups.
- System Offer Groups are standard offer groups, but are
automatically created and are ensured to always exist. They
can not, therefore, be created or deleted via the dashboard
UI. They are lazy-created by referencing them in code using
the
oscarbluelight.offer.groups.register_system_offer_group(slug='foo')
function. - Along with this functionality comes the addition of offer and group related signals which can be used to perform actions at specific points in time during offer group application. For example you could create a system offer group for offers which should be applied only after taxes have been calculated. Then you could use thepre_offer_group_apply
signal to perform tax calculation on a basket directly before the offer group is applied.
- System Offer Groups are standard offer groups, but are
automatically created and are ensured to always exist. They
can not, therefore, be created or deleted via the dashboard
UI. They are lazy-created by referencing them in code using
the
- Fix exception in dashboard when adding compound conditions
- Fix bug related to conditions consuming basket lines when the condition range differed from the benefit range.
- Run model validation before applying benefits to a basket. Results in better error reporting of invalid but difficult to enforce data.
- Start to rebuild OfferGroup dashboard view as a React application.
- Currently just recreates existing functionality using React and an API endpoint. - Next release will include drag-and-drop priority sorting of offers, vouchers, and offer groups.
- Drop Django 1.9 support.
- In offer group list, dim inactive offers and vouchers.
- List related vouchers on benefit and condition edit pages.
- Limit orders displayed on voucher stats.
- Start testing against Django 1.11 and Oscar 1.5rc1:
- Fix issue with Voucher ordering when doing a select_for_update. - Fix Oscar 1.5 issue with conditionaloffer_set vs offers related name. - Fix Oscar 1.5 issue with basket.Line.line_tax. - Upgrade sandbox to Oscar 1.5.
- Add new field to ConditionalOffer: short_name
- Make OfferApplications ordered
- Add concept of Offer groups.
- This makes it possible to create promotions which overlap on line items.
- Add API for determining why a line was discounted.
- Improve unit testing with tox.
- Upgrade test dependencies.
- Upgraded to
versiontag
1.2.0.
- Fixed bug where voucher condition range was always set to be equal to the benefit range.
- Create custom subclasses of all built-in Oscar conditions and Benefits
- Eliminates need for monkey-patching the
Condition.consume_items
method. - Adds migration to change all row's proxy_class fromoscar.apps.offer.FOOBAR
tooscarbluelight.offer.FOOBAR
.
- Eliminates need for monkey-patching the
- Change behavior of
FixedPriceBenefit
to be more logical.- Uses the benefit's assigned range instead of the
condition's range. - Respects the
max_affected_items
setting.
- Uses the benefit's assigned range instead of the
condition's range. - Respects the
- Improved dashboard form validation using polymorphic
_clean
methods on benefits and conditions. - Disallow deleting a range when a benefit or a condition depends on it.
- If a benefit or condition's proxy_class isn't a proxy_model, automatically create the row in the subclass's table.
- Fixed several exceptions throw in dashboard views when a voucher had no offers linked to it.
- Dashboard:
- Separate vouchers form offers in benefits and conditions lists - Add condition field to voucher form. Allows creating more complex vouchers, such as those that require specific items in the basket. - Add priority field to vouchers and offers forms. Display priority field in detail and list fields. - Add offer restrictions fields to voucher form.
- Performance:
- Move child code creation and updating background task with Celery.
- Use correct transaction.atomic syntax in voucher creation.
- Fix validation of voucher name and code when child codes exist.
- Set max_length to 128 on name field of voucher form, to match model.
- Makes it possible to selectively apply offers to specific groups of users (using django.auth.contrib.models.Group).
- Adds custom dashboard screens for managing offer / voucher benefits.
- Fix bug preventing Voucher.groups form field from being blank
- Fix bug the excluded templates from package.
- Renamed package to [oscarbluelight]{.title-ref} to have consistent naming with other Oscar projects.
- Fix bug the excluded templates from package.
- Initial release.