Skip to main content

Admin announcements for Django (with optional django-unfold integration)

Project description

django-admin-announcements

Admin announcements for Django, with optional django-unfold layout integration.

Status: Testing. No package released yet.

Features

  • Displays a list of active announcements above the Django admin header as a banner.
  • Allows admins to create announcements in the standard Django admin for editors (is_staff)
  • Announcements can be assigned to groups and are time- and date-sensitive
  • Allows editors to dismiss active announcements (stored in local storage)
  • Supports optional markdown content if installed with markdown support (only for rendered HTML, no special fields)
  • Supports django-unfold using an optional contrib.unfold app
  • Supports django-unfold-modal to display announcements in a modal instead of a full page
  • Customize implementation via template tag admin_announcements_banner

Requirements

  • Python 3.10+
  • Django 5.0+
  • (Optional) django-unfold 0.52.0+ for the contrib.unfold integration

Markdown support

  • If installed with markdown support, announcements can contain markdown and will be rendered as HTML.
  • nh3 is used to sanitize HTML and prevent XSS.
  • concrete.css (3kb) is used for markdown styling.

Installation

pip install django-admin-announcements

Install with markdown rendering support:

pip install "django-admin-announcements[markdown]"

Install with both markdown and Unfold support:

pip install "django-admin-announcements[markdown,unfold]"

Add to INSTALLED_APPS:

INSTALLED_APPS = [
    # ...
    "admin_announcements",
    "django.contrib.admin",
    # ...
]

For Unfold integration, also add the contrib app:

INSTALLED_APPS = [
    "admin_announcements.contrib.unfold",
    "unfold",
    "unfold_modal",  # Optional: enables modal announcement detail links.
    "admin_announcements",
    "django.contrib.admin",
    # ...
]

Keep admin_announcements.contrib.unfold before unfold so its Unfold-aware admin template override is discovered first.

To open announcement detail links in an Unfold modal, also install the unfold-modal extra and load django-unfold-modal assets in your Unfold settings:

uv sync --extra unfold --extra unfold-modal --group test --group dev
from unfold_modal.utils import get_modal_scripts, get_modal_styles

UNFOLD = {
    # ...
    "STYLES": [*get_modal_styles()],
    "SCRIPTS": [*get_modal_scripts()],
}

Without django-unfold-modal scripts, the links fall back to normal detail pages.

Run migrations:

python manage.py migrate admin_announcements

Local Development

Install dependencies:

uv sync --group test --group dev
npm ci

Install pre-commit hooks:

uv run pre-commit install

Run all pre-commit hooks manually:

uv run pre-commit run --all-files

Run the stock Django test server:

uv run tests/server/manage.py runserver 8080

Run the Unfold test server:

uv run --extra unfold tests/server/manage.py runserver 8080 --settings=testapp.settings_unfold

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_admin_announcements-0.1.0a0.tar.gz (102.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_admin_announcements-0.1.0a0-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file django_admin_announcements-0.1.0a0.tar.gz.

File metadata

File hashes

Hashes for django_admin_announcements-0.1.0a0.tar.gz
Algorithm Hash digest
SHA256 f32bb8e75d2c9865e3f8394c187d3d3320fb681d712256fd36ea454e99a9b17b
MD5 e512975cff68d2c93be9d9978361b93c
BLAKE2b-256 7488ce6a97d992aa2d0b2658396bef6e486574cc61775f5d30e8a651b7231565

See more details on using hashes here.

File details

Details for the file django_admin_announcements-0.1.0a0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_admin_announcements-0.1.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 3ab307ffaef31ba1053168efd641fb4e146db78ae482f3980bae071ccd91f4fe
MD5 ebadfffb3ef1e806a8e0447cbc96277d
BLAKE2b-256 dbcbff4e359d850e5539473977f06a9e506e8dd0df7f4a31326c8e603fb78490

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page