Skip to main content

Django Control Room Panel Tests codecov PyPI version Python versions License: MIT Downloads

Django Signals Panel

See every Django signal and receiver, and where they fire. Right from the Django admin.

DJ Signals Panel

Compatible with dj-control-room. Register this panel in the Control Room to manage it from a centralized dashboard.

Docs

https://django-control-room.github.io/dj-signals-panel/

Features

  • Signal discovery - automatically discovers all registered Django signals across your project and installed apps
  • Receiver inspection - lists every connected receiver for each signal, including function name, module, file location, and sender
  • Source code viewer - inline syntax-highlighted source for each receiver, directly in the admin
  • Search & filter - search signals by name, module, or app; filter by app with a dropdown
  • Summary stats - at-a-glance counts for total signals, total receivers, and signals with no receivers
  • Dark mode support - respects Django admin's built-in dark/light mode toggle
  • django-unfold theme adapter - opt-in stylesheet that remaps colors to match django-unfold's accent/neutral palette (see Theme adapters)
  • No migrations required - purely read-only introspection, zero database changes

Project Structure

dj-signals-panel/
├── dj_signals_panel/         # Main package
│   ├── templates/           # Django templates
│   ├── views.py             # Django views
│   └── urls.py              # URL patterns
├── example_project/         # Example Django project
├── tests/                   # Test suite
├── images/                  # Screenshots for README
└── requirements.txt         # Development dependencies

Requirements

  • Python 3.9+
  • Django 4.2+

Django Control Room

Dj Signals Panel works great on its own, and it also pairs seamlessly as a panel inside Django Control Room - a centralized dashboard that brings all your Django admin panels together in one place.

pip install dj-control-room dj-signals-panel

Visit djangocontrolroom.com to learn more.

Screenshots

Django Admin Integration

Seamlessly integrated into your Django admin interface. A DJ SIGNALS PANEL section appears alongside your models - no migrations required.

Admin Home

Signal List & Search

Browse all registered signals with summary stats (total signals, total receivers, signals with no receivers). Search by name, module, or app, and filter by app using the dropdown.

Signal List

Signal Detail

Drill into any signal to see its metadata and every connected receiver - including function name, module, and sender. Expand View Location (or View Source, when SHOW_SOURCE is enabled) to see the file path/line and syntax-highlighted source code inline.

Note: The source code viewer is opt-in. Set SHOW_SOURCE: True in DJ_SIGNALS_PANEL_SETTINGS to enable it. Use SIGNAL_MODULES to add extra modules to signal discovery.

Signal Detail

django-unfold Theme

When running under django-unfold, enable the bundled unfold.css theme adapter via EXTRA_CSS to match the panel's colors to the host site's accent and neutral palette. This is opt-in - it is not applied automatically just because django-unfold is installed.

Signal List with django-unfold theme

django-jazzmin Theme

When running under django-jazzmin, enable the bundled jazzmin.css theme adapter via EXTRA_CSS to match the panel's colors to whichever Bootstrap/Bootswatch palette Jazzmin is configured with. This is opt-in - it is not applied automatically just because django-jazzmin is installed.

DJ_SIGNALS_PANEL_SETTINGS = {
    'EXTRA_CSS': ['dj_control_room_base/css/themes/jazzmin.css'],
}

Installation

1. Install the Package

pip install dj-signals-panel

# optionally install Django control room as well

pip install dj-control-room

2. Add to Django Settings

Add dj_signals_panel to your INSTALLED_APPS:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'dj_control_room_base', # add this core library before any panels
    'dj_signals_panel',     # Signals panel itself
    'dj_control_room',      # optional if using Django control room
    # ... your other apps
]

3. Configure Settings (Optional)

Add any custom configuration to your Django settings if needed:

DJ_SIGNALS_PANEL_SETTINGS = {
    # Set True to render syntax-highlighted source code for each receiver
    'SHOW_SOURCE': False,
    # Extra modules to include in signal discovery (additive, not restrictive)
    'SIGNAL_MODULES': [],       # e.g. ['myapp.signals', 'otherapp.events']
    'LOAD_DEFAULT_CSS': True,   # Set False to skip built-in styles
    # Static paths are relative to app's static/ dir (e.g. 'myapp/css/overrides.css'
    # for a file at myapp/static/myapp/css/overrides.css). Full URLs also accepted.
    'EXTRA_CSS': [],
}

4. Include URLs

Add the Panel URLs to your main urls.py:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/dj-control-room-base/", include("dj_control_room_base.urls")),
    path('admin/dj-signals-panel/', include('dj_signals_panel.urls')),
    path("admin/dj-control-room/", include("dj_control_room.urls")),  # optional if using django control room
    path('admin/', admin.site.urls),
]

5. Run Migrations and Create Superuser

python manage.py migrate
python manage.py createsuperuser  # If you don't have an admin user

6. Access the Panel

  1. Start your Django development server:

    python manage.py runserver
    
  2. Navigate to the Django admin at http://127.0.0.1:8000/admin/

  3. Look for the "DJ SIGNALS PANEL" section in the admin interface

Development Setup

If you want to contribute to this project or set it up for local development:

Prerequisites

  • Python 3.9 or higher
  • Docker

It is reccommended that you use docker since it will automate much of dev env setup

1. Clone the Repository

git clone https://github.com/django-control-room/dj-signals-panel.git
cd dj-signals-panel

2a. Set up dev environment using virtualenv

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

pip install -e . # install dj-signals-panel package locally
pip intall -r requirements.txt  # install all dev requirements

# Alternatively
make install # this will also do the above in one single command

2b. Set up dev environment using docker

make docker_up  # bring up all services (redis, memached) and dev environment container
make docker_shell  # open up a shell in the docker conatiner

3. Set Up Example Project

The repository includes an example Django project for development and testing

cd example_project
python manage.py migrate
python manage.py createsuperuser

4. Run the Development Server

python manage.py runserver

Visit http://127.0.0.1:8000/admin/ to access the Django admin with Dj Signals Panel.

5. Running Tests

The project includes a comprehensive test suite. You can run them by using make or by invoking pytest directly:

# build and install all dev dependencies and run all tests inside of docker container
make test_docker

# Test without the docker on your host machine.
# note that testing always requires a redis and memcached service to be up.
# these are mostly easily brought up using docker
make test_local

License

This project is licensed under the MIT License. See the LICENSE file for details.

Download files

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

Source Distribution

dj_signals_panel-0.4.0.tar.gz (34.5 kB view details)

Uploaded Source

Built Distribution

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

dj_signals_panel-0.4.0-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file dj_signals_panel-0.4.0.tar.gz.

File metadata

  • Download URL: dj_signals_panel-0.4.0.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for dj_signals_panel-0.4.0.tar.gz
Algorithm Hash digest
SHA256 4690b3ef7ba8801be2a08486f60939dbe204a59f807d4599577a02a773bb2c56
MD5 95adc3df80342432a8723333773c56f7
BLAKE2b-256 ee0813ef79e0cf2bd4966f344b2f4cd7994598001c143e606cfef8b51f65e93f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dj_signals_panel-0.4.0.tar.gz:

Publisher: python-publish.yml on django-control-room/dj-signals-panel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dj_signals_panel-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dj_signals_panel-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57e0e5cda6b2792270884f736ee6c06b4f496e242e205573dc4c3029e79bc18a
MD5 f4435f588ecc518b9d2f26c8035dea2d
BLAKE2b-256 915677221f3d61deaae037c0c9d42c5db0b77c6ad4b28248bc502698aa0a424f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dj_signals_panel-0.4.0-py3-none-any.whl:

Publisher: python-publish.yml on django-control-room/dj-signals-panel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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