Skip to main content

htmx-powered theme + helpers for django.contrib.admin. Picnic CSS, native HTML5 widgets, two mandatory dependencies.

Project description

django-yp-admin

PyPI version Python Django CI Documentation License: MIT

An htmx-powered theme + helpers for django.contrib.admin. Two dependencies. Zero jQuery.

django-yp-admin is an htmx-powered admin theme plus a small set of helpers for django.contrib.admin. It ships template overrides (Picnic CSS, native HTML5 widgets, htmx) and a handful of reusable abstract models and admin mixins (OrderedModel, SingletonModel, lightweight history, htmx widgets). It is not a full drop-in replacement for django.contrib.admin — it layers on top of the stock AdminSite.

Status: v0.1, pre-alpha. ~19 tests in the suite. We have not yet validated against custom AdminSite subclasses or third-party admin packages (django-cms, wagtail, allauth, django-guardian, django-polymorphic, etc.). API will change.

What you get

  • htmx-powered theme. Template overrides for changelist/change form/login. Picnic CSS base, themable via CSS custom properties. Dark mode via prefers-color-scheme.
  • No jQuery. ~62KB gzipped of total JS instead of ~250KB of jQuery + Select2 + xregexp.
  • Two mandatory deps. Django + django-htmx. Optional extras when you want them.
  • Native HTML5. <input type="date">, <dialog>, <details> instead of jQuery widgets.
  • Helpers (opt-in). Abstract models and admin mixins you can mix into your own code:
    • OrderedModel + drag-and-drop admin
    • SingletonModel + admin
    • Lightweight history (Revision/Version)
    • htmx-native filters (Dropdown, DateRange, DateTimeRange, NumericRange)
    • htmx + Tom Select autocomplete widget
    • htmx-native nested/sortable inlines

What is NOT yet supported / tested

This is v0.1. The following are roadmap, not promises:

  • Custom AdminSite subclasses — untested.
  • django-cms, wagtail, allauth admin integrations — untested.
  • django-guardian (GuardedModelAdmin), django-polymorphic (PolymorphicChildModelAdmin), django-reversion (VersionAdmin), django-import-export (ImportExportModelAdmin) — not yet validated end-to-end.
  • Third-party themes that target legacy admin CSS classes — selectors are preserved as DOM hooks but not regression-tested.
  • Legacy admin JS extensions that depend on django.jQuery — will break.

If you depend on any of the above, stay on django.contrib.admin for now and watch this project.

Optional extras

pip install django-yp-admin[history]        # django-simple-history
pip install django-yp-admin[import-export]  # django-import-export
pip install django-yp-admin[full]           # all of the above

When the optional package is installed, the matching admin integration in django_yp_admin.contrib activates automatically via importlib.util.find_spec. These integrations are exercised by the test suite at a basic level — production hardening pending.

Quickstart

pip install django-yp-admin
INSTALLED_APPS = [
    "django_yp_admin",        # before django.contrib.admin
    "django.contrib.admin",
    "django_htmx",
    # ...
]

MIDDLEWARE = [
    # ...
    "django_htmx.middleware.HtmxMiddleware",
]

Open /admin/. Stock admins keep working with the new theme. To opt into htmx-native filters/widgets per model, switch your ModelAdmin base class to django_yp_admin.options.ModelAdmin.

Browser support

Modern browsers only — last 3 years of releases.

Browser Minimum
Firefox 115 (ESR, July 2023)
Chrome 115 (July 2023)
Safari 16.4 (March 2023)
Edge 115 (Chromium)

This unlocks native <dialog>, :has(), CSS nesting, container queries, reliable date inputs, and ES2022 — which is why the JS bundle is so small.

If you need legacy browser support, stick with django.contrib.admin.

Stack

Layer Tool Size (gzip)
AJAX htmx ~14KB
Local UI state (optional) Alpine.js ~15KB
Autocomplete Tom Select ~25KB
CSS base Picnic CSS ~10KB
Our code TypeScript bundled with Bun ~8KB
Total ~62KB

vs the default admin's ~250KB of jQuery + Select2 + xregexp + custom JS.

Status

v0.1, pre-alpha. ~19 tests. API will change. Star the repo, file issues, send PRs. Real-world compat reports against custom AdminSite and third-party admin packages are especially welcome.

License

MIT. © Yp Software info@ypsoftware.com.py.

Links

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_yp_admin-0.1.0.tar.gz (130.7 kB view details)

Uploaded Source

Built Distribution

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

django_yp_admin-0.1.0-py3-none-any.whl (139.3 kB view details)

Uploaded Python 3

File details

Details for the file django_yp_admin-0.1.0.tar.gz.

File metadata

  • Download URL: django_yp_admin-0.1.0.tar.gz
  • Upload date:
  • Size: 130.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for django_yp_admin-0.1.0.tar.gz
Algorithm Hash digest
SHA256 feb461573a4aa0751ef9c3d23a02875dbf03b1db580a80520bd12d1bf38eb9b2
MD5 bbcaf86115ff31fe8d42ef6a858525b7
BLAKE2b-256 67742c9347f1673214468480a2d09b6cdc2c5b456878223f9ec0d7be838b3823

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_yp_admin-0.1.0.tar.gz:

Publisher: publish.yml on ypsoftware/django-yp-admin

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

File details

Details for the file django_yp_admin-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: django_yp_admin-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 139.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for django_yp_admin-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 695476f92d7edc3adf6505ab59bbafc87ad829a47b1818826c1162eca52fd9ef
MD5 7f7b53637853d2a3e4e48ebce06a0433
BLAKE2b-256 53be5f8f6093b4d5f5e8be20fffe23ebcc2dd0c91b9809ece35e9ca4caabf76b

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_yp_admin-0.1.0-py3-none-any.whl:

Publisher: publish.yml on ypsoftware/django-yp-admin

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 Pingdom Monitoring Sentry Error logging StatusPage Status page