Advanced CRUD for perfectionists with deadlines. An opinionated Neapolitan extension, with sprinkles.
Project description
Django PowerCRUD
Advanced CRUD for perfectionists with deadlines. An opinionated extension of Neapolitan.
PowerCRUD builds on Neapolitan’s view layer and adds the practical pieces you would otherwise wire up by hand.
Why PowerCRUD
-
Production-ready CRUD – faster
HTMX responses, modal forms, inline row editing, and filter sidebars are configured through class attributes rather than custom templates. -
Bulk operations that scale
Start synchronously with selection persistence and validation controls, then opt into async queueing with conflict locks, progress polling, and an optional dashboard when jobs run longer. -
One async toolkit everywhere
The async manager, conflict handling, and progress API are reusable from admin actions, management commands, or bespoke launch sites so background work behaves consistently. -
Batteries included
Sample app, Docker dev stack, management commands, Tailwind safelist tooling, and a maintained pytest/Playwright suite keep the project teachable and testable.
ℹ️ Status
PowerCRUD is still evolving, but now ships with a comprehensive pytest suite (including Playwright UI smoke tests). Expect rough edges while APIs settle, and pin the package if you rely on current behaviour.
See the full documentation.
Key Features
- HTMX-enabled CRUD views with modal create/edit/delete flows.
- Inline row editing with dependency-aware widgets, lock checks, and permission guards.
- Bulk edit/delete with selection persistence and an optional async path.
- Async infrastructure: conflict locks, progress cache, django-q2 workers, cleanup command, optional dashboard persistence.
- Filtering, sorting, and pagination helpers backed by tuned templates.
- Styling controls (daisyUI/Tailwind) plus template scaffolding and Tailwind safelist extraction.
- Extension hooks for custom actions, buttons, and templates, illustrated in the bundled sample app.
- Tooling support: Dockerised dev environment, management commands, pytest + Playwright coverage.
Quick Example
from neapolitan.views import CRUDView
from powercrud.mixins import PowerCRUDMixin
class ProjectCRUDView(PowerCRUDMixin, CRUDView):
model = Project
base_template_path = "core/base.html"
# Core configuration
fields = ["name", "owner", "status", "created_date"]
properties = ["is_overdue"]
filterset_fields = ["owner", "status", "created_date"]
paginate_by = 25
# UX helpers
use_htmx = True
use_modal = True
inline_edit_enabled = True
inline_edit_fields = ["status", "owner"]
# Bulk operations
bulk_fields = ["status", "owner"]
bulk_delete = True
bulk_async = True
bulk_min_async_records = 20
bulk_async_conflict_checking = True
# Async dashboard (optional)
async_manager_class_path = "myapp.async_manager.AppAsyncManager"
This single view serves a filtered list, modal forms, inline edits, and queues long-running bulk updates through django-q2 while tracking conflicts and progress.
Getting Started
- Install
django-powercrudandneapolitan, addpowercrud,neapolitan, anddjango_htmx, then follow the Getting Started guide for base template requirements. - Continue with Setup & Core CRUD basics to enable filters, pagination, and modals.
- Add Inline editing and Bulk editing (synchronous), then move to Async Manager and Bulk editing (async) when you need background work.
- Use Styling & Tailwind and Customisation tips to adapt templates.
Tooling & References
- Sample app – complete walkthrough of every feature.
- Docker dev environment – Django, Postgres, Redis, Vite, django-q2.
- Management commands – template scaffolding, Tailwind safelist extraction, async cleanup.
- Testing – pytest matrix plus Playwright smoke tests.
Supported Versions
PowerCRUD is tested against the following combinations:
- Python 3.12 with Django 4.2 LTS and Django 5.2
- Python 3.13 with Django 4.2 LTS and Django 5.2
- Python 3.14 with Django 4.2 LTS and Django 5.2
We aim to keep the dependency lock compatible with each pairing; upcoming CI work will exercise this matrix automatically on pushes to main.
Development Setup
PowerCRUD’s development environment is Docker-first. From the project root:
./runproj up # build images, start services, enter the Django container
pytest # run the full test suite, including Playwright smoke tests
Dependencies are managed with uv; the Docker image installs them into the system interpreter so you never need to activate a virtual environment inside the container. See the Dockerised Development Environment guide for full details.
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_powercrud-0.4.9.tar.gz.
File metadata
- Download URL: django_powercrud-0.4.9.tar.gz
- Upload date:
- Size: 171.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0dd8f7ce99efa5097c76e4653d1a73b6e32e4d3373492bace89041c8356ca2c
|
|
| MD5 |
3330224ff9d5e523ec049bd68f518946
|
|
| BLAKE2b-256 |
e650a348674f5caee0200182127b51965a1129adb697c545b0c263060052210d
|
File details
Details for the file django_powercrud-0.4.9-py3-none-any.whl.
File metadata
- Download URL: django_powercrud-0.4.9-py3-none-any.whl
- Upload date:
- Size: 193.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ac49b9bc9dea8fbe21b1b7df213974dfccd6122a74026f6280bf76cf0dca2fd
|
|
| MD5 |
deb990da208e4080c6921f01cddab3e3
|
|
| BLAKE2b-256 |
c58e135e79eb6b30523f0180bcf9fa5437108b5a2593bfe4db2a51196a8fb877
|