Django Oscar Bluelight Specials
This package contains enhancements and improvements to the built-in offers and vouchers features in Django Oscar.
Features
- Group Restricted Vouchers: Bluelight adds the ability to restrict application of vouchers to a specific whitelist of groups (
django.contrib.auth.models.Group). For example, you could create a voucher code that can only be applied by users who belong to the group Customer Service Reps. - Compound Offer Conditions: By default, Oscar only allows assigning a single condition to a promotional offer. Compound offer conditions allow you to create more complex logic around when an offer should be enabled. For example, you could create a compound condition specifying that a basket must contain at least 3 items and have a total value greater than $50.
- Compound conditions can aggregate an unlimited number of child conditions together.
- Compound conditions can join their child conditions using either an AND or an OR conjunction.
- Very complex conditions requiring both AND and OR conjunctions can be modeled by creating multiple levels of compound conditions.
- Parent / Child Voucher Codes: By default Oscar doesn't support bulk creation of voucher codes. Bluelight adds the ability to bulk create any number of child vouchers (with unique, automatically generated codes) for any standard (non-child) voucher. This can be useful when sending voucher codes to customer's through email, as it allows the creation of hundreds or thousands of non-sequential, one-time-use codes.
- Child codes can be added when creating a new voucher or after a voucher is created.
- More child codes can be generated for a voucher at any time.
- Child codes can be exported in CSV and JSON formats.
- Any time a parent voucher is edited (name changed, benefit altered, etc), all child codes are also updated to match.
- When a parent voucher is deleted, all children are also deleted.
- Once a voucher has child codes assigned to it, the parent voucher itself can not be applied by anyone.
Roadmap
- Make child code creation and updating more performant, possibly by better tracking of dirty model fields before saving.
- Add ability to duplicate vouchers.
- Add ability to add conditions to vouchers.
Caveats
Bluelight currently works by forking four of Oscar's apps: offer, voucher, dashboard.offers, and dashboard.vouchers. Currently there is no way to use Bluelight if your application has already forked those applications.
Installation
Install [django-oscar-bluelight]{.title-ref}.:
pip install django-oscar-bluelight
Import Bluelight's settings into your projects settings.py file.
from oscar.defaults import *
from oscarbluelight.defaults import * # Needed so that Bluelight's views show up in the dashboard
Add Bluelight to your installed apps (replacing the equivalent Django
Oscar apps). The top-level oscarbluelight app must be defined before
the oscar app---if it isn't Django will not correctly find the
Bluelight's templates.
INSTALLED_APPS = [
...
# Bluelight. Must come before `django-oscar` so that template inheritance / overrides work correctly.
'oscarbluelight',
'thelabdb.pgviews',
# django-oscar
'oscar',
'oscar.apps.analytics',
'oscar.apps.checkout',
'oscar.apps.address',
'oscar.apps.shipping',
'oscar.apps.catalogue',
'oscar.apps.catalogue.reviews',
'sandbox.partner', # 'oscar.apps.partner',
'sandbox.basket', # 'oscar.apps.basket',
'oscar.apps.payment',
'oscarbluelight.offer', # 'oscar.apps.offer',
'oscar.apps.order',
'oscar.apps.customer',
'oscar.apps.search',
'oscarbluelight.voucher', # 'oscar.apps.voucher',
'oscar.apps.wishlists',
'oscar.apps.dashboard',
'oscar.apps.dashboard.reports',
'oscar.apps.dashboard.users',
'oscar.apps.dashboard.orders',
'oscar.apps.dashboard.catalogue',
'oscarbluelight.dashboard.offers', # 'oscar.apps.dashboard.offers',
'oscar.apps.dashboard.partners',
'oscar.apps.dashboard.pages',
'oscar.apps.dashboard.ranges',
'oscar.apps.dashboard.reviews',
'oscarbluelight.dashboard.vouchers', # 'oscar.apps.dashboard.vouchers',
'oscar.apps.dashboard.communications',
'oscar.apps.dashboard.shipping',
...
]
Fork the basket application in your project and add
BluelightBasketMixin as a parent class of the Line model.
from oscar.apps.basket.abstract_models import AbstractLine
from oscarbluelight.mixins import BluelightBasketLineMixin
class Line(BluelightBasketLineMixin, AbstractLine):
pass
from oscar.apps.basket.models import * # noqa
Usage
After installation, the new functionality will show up in the Oscar dashboard under the Offers menu.
Metadata
Release files for django-oscar-bluelight 6.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_oscar_bluelight-6.3.3.tar.gz | 3.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_oscar_bluelight-6.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.3 MB
Release files / django_oscar_bluelight-6.3.3.tar.gz
| Download URL | django_oscar_bluelight-6.3.3.tar.gz |
|---|---|
| Size | 3.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0690751c6feb7603e1cda977b98aec5121daea3cabfbd4c801609266fc85401
|
|
BLAKE2b-256 checksum How to use checksums |
378c7a9c9f69faf2b8f8219b5b0a8a193e27617e05d26ba92d78d2bb998bd589
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitLab CI/CD, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / django_oscar_bluelight-6.3.3-py3-none-any.whl
| Download URL | django_oscar_bluelight-6.3.3-py3-none-any.whl |
|---|---|
| Size | 671.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
74e724ca8075057fdb074ed62316a51fff501a845cfee3f60cd231420b380767
|
|
BLAKE2b-256 checksum How to use checksums |
dd6d2170fd9121f24548a39fb1eb421808e3aefe997ff12cd60c237522bf751c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitLab CI/CD, verified by PyPI on Oct 1, 2026.
Transparency log