Skip to main content

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

dj-control-room-base

dj-control-room-base - a core library for creating DCR panels

dj-control-room-base is a core library for Django Control Room panels. It provides the shared primitives that every panel needs: settings management, CSS injection, permission enforcement, admin sidebar integration, template context helpers, and MCP-style panel tools.

Official Django Control Room panels ship with this package as a dependency and build on these APIs rather than reimplementing them panel by panel.

Optionally, the package can also be mounted as a full panel in its own right: it ships a bundled design system reference UI and example patterns that are useful when building or theming new panels.

What this library provides

  • Centralized CSS and permissions - a single PanelConfig object per panel drives CSS injection, staff/group/superuser checks, and settings merging across built-in, panel, hub, and project layers.
  • Admin sidebar integration - PanelPlaceholderModel and BasePanelAdmin give any panel a sidebar entry with no extra migrations.
  • Template context helpers - panel_config.get_context(request, ...) returns a ready-to-use context with CSS and Django admin variables included.
  • Entry-point discovery - panels register with the hub via a PanelPlugin subclass and a pyproject.toml entry point.
  • Internal panel scaffold - python manage.py dcr_startpanel <name> creates a minimal project panel app (dcr_-prefixed). For publishable panel repos, use the Cookiecutter template.
  • Panel tools - optional, permission-scoped callables the dj-control-room hub aggregates for AI agent and in-admin chat integrations.
  • Theme adapters - stylesheets that match panels to django-unfold, django-jazzmin, django-grappelli, django-admin-interface, or django-admin-dracula, auto-selected from INSTALLED_APPS when THEME_AUTO_DETECT is enabled (default). Known unsupported skins get a general-light or general-dark pin instead of following OS color-scheme alone.

See the full documentation for configuration options and a guide to building your own panel on this library.

Requirements

  • Python 3.9+
  • Django 4.2+ (tested in CI across Django 4.2, 5.2, and 6.0)

Quick start

pip install dj-control-room-base
# settings.py
INSTALLED_APPS = [
    ...
    "dj_control_room_base",
]
# urls.py
urlpatterns = [
    path("admin/dj-control-room-base/", include("dj_control_room_base.urls")),
    path("admin/", admin.site.urls),
]
python manage.py migrate
python manage.py runserver

Open /admin/ and sign in. A DJ CONTROL ROOM BASE entry appears in the sidebar and links to the panel at /admin/dj-control-room-base/.

See Installation for the complete walkthrough, Configuration for CSS/permission settings and theme adapters, and Building Panels for a guide to building your own panel on this library.

Contributing

git clone https://github.com/django-control-room/dj-control-room-base.git
cd dj-control-room-base
make install
make test_local

See Contributing for Docker setup, coverage, and the full Makefile reference.

License

MIT. See LICENSE.

Metadata

Release files for dj-control-room-base 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dj-control-room-base 1.6.0
File Size Uploaded
dj_control_room_base-1.6.0.tar.gz 146.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dj-control-room-base 1.6.0
File Interpreter ABI Platform
dj_control_room_base-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 305.7 kB

Release files / dj_control_room_base-1.6.0.tar.gz

Download URL dj_control_room_base-1.6.0.tar.gz
Size 146.1 kB
Tags Source
SHA-256 checksum
How to use checksums
250c11296baa7e84e4ea988783f70825598523d3fa30f8447db937dabb76b338
BLAKE2b-256 checksum
How to use checksums
d2acd045f54ea20f0187164c29baa542922991a90e47c267f58d980f949855a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / dj_control_room_base-1.6.0-py3-none-any.whl

Download URL dj_control_room_base-1.6.0-py3-none-any.whl
Size 159.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
54e74e8655ff077f429722b956b2c574e5e5fb390da0882cfb41ebce1cab1551
BLAKE2b-256 checksum
How to use checksums
0674dd0471d559f0d1856d7bfea31b877bcef49c1dc5f014c4aa0c2db2cad9e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.6.0 This release

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page