Multi-site companion for django-notifications-community.
Project description
django-notifications-community-sites
Multi-site companion to
django-notifications-community.
Adds a non-nullable site FK on each notification, a site-aware notify handler
that stamps Site.objects.get_current() automatically, and a queryset filter
that scopes views and the unread badge to the current site.
Why this exists
The base package is sites-blind by design, so installing it imposes no
dependency on django.contrib.sites. If you do run more than one site from a
single project (different domains, different SITE_ID), install this companion
to keep notifications generated on one site from leaking to another.
Installation
Either install the base with the sites extra:
pip install "django-notifications-community[sites]"
or install this package directly (it pulls the base in as a dependency):
pip install django-notifications-community-sites
Setup
In settings.py:
INSTALLED_APPS = [
...,
'django.contrib.sites',
'notifications',
'notifications_sites', # must come AFTER 'notifications'
]
NOTIFICATIONS_NOTIFICATION_MODEL = 'notifications_sites.Notification'
SITE_ID = 1
Then run migrations:
python manage.py migrate
SITE_ID is required; the system check will tell you if it's missing.
How it works
This package registers callbacks against the base's notifications.registry
extension hooks:
- A queryset filter that adds
.filter(site=current_site)wherever the base builds a Notification queryset. - A cache-key modifier that namespaces the unread-count cache key by site, so concurrent sites don't poison each other.
- A cache-invalidation registration that drops all per-site cache variants on mutation.
The base's notify_handler is replaced with a site-aware variant that stamps
Site.objects.get_current() on each notification (or whatever you pass via
site=...).
The base's views, helpers, and template tags are reused unchanged through the hooks. No URL or template changes required.
Bringing existing data over
The companion does not auto-copy rows from notifications_notification
into notifications_sites_notification. The reasoning: there's no
correct default for which site a legacy row should belong to, and a
migration that silently picks SITE_ID would be wrong for anyone
running more than one site. Two options:
Start fresh. Install the companion as documented above. Future
notifications land in notifications_sites_notification. Existing
rows stay in notifications_notification until you drop the table
yourself.
Copy legacy rows over with the bundled command. Run:
python manage.py copy_legacy_notifications --default-site=<pk>
<pk> is the Site primary key to assign to rows whose site_id is
NULL, or to every row when the source table has no site_id column
at all (i.e. you were on plain django-notifications-community, not
Guillaume Libersat's
feature/sites-framework
branch). Existing site_id values are preserved.
Useful flags:
--dry-run— report what would be copied without writing.--force— copy even ifnotifications_sites_notificationalready has rows (off by default to avoid duplicates).
The copy runs in a single transaction. After verifying everything
landed, you can drop notifications_notification yourself.
License
BSD-3-Clause. See LICENSE.txt.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_notifications_community_sites-1.0.0.tar.gz.
File metadata
- Download URL: django_notifications_community_sites-1.0.0.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95d5853841c6f416928e11a4a076f32f11183fa630840a690fd9b9bbdd227ecb
|
|
| MD5 |
92ad9960d7e8d7db3e10311176623583
|
|
| BLAKE2b-256 |
e79a5f1ac5e387bacb68c0a3b282e581ff07f18926fb5dc13e74bc4ea4b1e6a3
|
Provenance
The following attestation bundles were made for django_notifications_community_sites-1.0.0.tar.gz:
Publisher:
release.yml on django-notifications-community/django-notifications-community-sites
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_notifications_community_sites-1.0.0.tar.gz -
Subject digest:
95d5853841c6f416928e11a4a076f32f11183fa630840a690fd9b9bbdd227ecb - Sigstore transparency entry: 1409636380
- Sigstore integration time:
-
Permalink:
django-notifications-community/django-notifications-community-sites@a513a3025c8029269f1019550f0cb9f09412ae5c -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/django-notifications-community
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a513a3025c8029269f1019550f0cb9f09412ae5c -
Trigger Event:
push
-
Statement type:
File details
Details for the file django_notifications_community_sites-1.0.0-py3-none-any.whl.
File metadata
- Download URL: django_notifications_community_sites-1.0.0-py3-none-any.whl
- Upload date:
- Size: 19.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb7eff187aa4d34a18e08c8fcd95be3b97dd21fa217587cc8d7eae11c68125ae
|
|
| MD5 |
bd207716424d716bff35b100d23d7c55
|
|
| BLAKE2b-256 |
51430d22ae46c98442f21dec701f19ecc3a3e82828645d3057b9f4bd8863c1f7
|
Provenance
The following attestation bundles were made for django_notifications_community_sites-1.0.0-py3-none-any.whl:
Publisher:
release.yml on django-notifications-community/django-notifications-community-sites
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_notifications_community_sites-1.0.0-py3-none-any.whl -
Subject digest:
bb7eff187aa4d34a18e08c8fcd95be3b97dd21fa217587cc8d7eae11c68125ae - Sigstore transparency entry: 1409636388
- Sigstore integration time:
-
Permalink:
django-notifications-community/django-notifications-community-sites@a513a3025c8029269f1019550f0cb9f09412ae5c -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/django-notifications-community
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a513a3025c8029269f1019550f0cb9f09412ae5c -
Trigger Event:
push
-
Statement type: