Metadata-Version: 2.4
Name: django-powercrud
Version: 0.4.2
Summary: Advanced CRUD for perfectionists with deadlines. An opinionated Neapolitan extension, with sprinkles.
Author: doctor-cornelius
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: django-htmx<2.0,>=1.26.0
Requires-Dist: django-template-partials<25.3,>=25.2
Requires-Dist: pydantic<3.0,>=2.12.3
Provides-Extra: dev
Requires-Dist: commitizen<5,>=4.9.1; extra == 'dev'
Requires-Dist: ipykernel<8,>=7.1.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-awesome-pages-plugin<3,>=2.10.1; extra == 'docs'
Requires-Dist: mkdocs-enumerate-headings-plugin<0.7,>=0.6.2; extra == 'docs'
Requires-Dist: mkdocs-material<10,>=9.6.22; extra == 'docs'
Requires-Dist: mkdocs-mermaid2-plugin<2,>=1.2.3; extra == 'docs'
Requires-Dist: mkdocs<2,>=1.6.1; extra == 'docs'
Provides-Extra: tests-core
Requires-Dist: coverage<8,>=7.11.0; extra == 'tests-core'
Requires-Dist: crispy-bootstrap5<2026,>=2025.6; extra == 'tests-core'
Requires-Dist: crispy-daisyui<1,>=0.8.0; extra == 'tests-core'
Requires-Dist: crispy-tailwind<2,>=1.0.3; extra == 'tests-core'
Requires-Dist: django-crispy-forms<3,>=2.4; extra == 'tests-core'
Requires-Dist: django-q2<2,>=1.8.0; extra == 'tests-core'
Requires-Dist: django-redis<7,>=6.0.0; extra == 'tests-core'
Requires-Dist: django-vite<4,>=3.1.0; extra == 'tests-core'
Requires-Dist: django<6,>=4.2.25; extra == 'tests-core'
Requires-Dist: faker<38,>=37.12.0; extra == 'tests-core'
Requires-Dist: neapolitan<26,>=25.1; extra == 'tests-core'
Requires-Dist: psycopg-binary<4,>=3.2.12; extra == 'tests-core'
Requires-Dist: psycopg<4,>=3.2.12; extra == 'tests-core'
Requires-Dist: pytest-cov<8,>=7.0.0; extra == 'tests-core'
Requires-Dist: pytest-django<5,>=4.11.1; extra == 'tests-core'
Requires-Dist: pytest-mock<4,>=3.15.1; extra == 'tests-core'
Requires-Dist: pytest<9,>=8.4.2; extra == 'tests-core'
Requires-Dist: validators<1,>=0.35.0; extra == 'tests-core'
Provides-Extra: tests-ui
Requires-Dist: playwright<2,>=1.55.0; extra == 'tests-ui'
Requires-Dist: pytest-playwright<1,>=0.7.1; extra == 'tests-ui'
Description-Content-Type: text/markdown

# Django PowerCRUD

[![Run Test Matrix](https://github.com/doctor-cornelius/django_powercrud/actions/workflows/pr_tests.yml/badge.svg)](https://github.com/doctor-cornelius/django_powercrud/actions/workflows/pr_tests.yml)
[![codecov](https://codecov.io/gh/doctor-cornelius/django_powercrud/branch/main/graph/badge.svg)](https://codecov.io/gh/doctor-cornelius/django_powercrud)
[![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14-blue)](#supported-versions)
[![Django](https://img.shields.io/badge/django-4.2%20%7C%205.2-0C4B33)](#supported-versions)
[![PyPI](https://img.shields.io/pypi/v/django-powercrud.svg)](https://pypi.org/project/django-powercrud/)
[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
[![Renovate](https://img.shields.io/badge/renovate-enabled-brightgreen?logo=renovatebot)](https://developer.mend.io/github/doctor-cornelius/django-powercrud)

**Advanced CRUD for perfectionists with deadlines. An opinionated extension of [Neapolitan](https://github.com/carltongibson/neapolitan).**

## What is PowerCRUD?

The [`neapolitan`](https://github.com/carltongibson/neapolitan/) package gives you a solid foundation for Django CRUD views. But you still need to add filtering, bulk operations, modern UX features, and styling yourself.

PowerCRUD comes with these features built-in, specifically for user-facing CRUD interfaces. Use what you need, customize what you want.

> ℹ️ **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](https://doctor-cornelius.github.io/django-powercrud/).

## Key Features

🎯 **Advanced CRUD Operations** - Filtering, pagination, bulk edit/delete (with async) out of the box  
⚡ **Modern Web UX** - HTMX integration, modals, and reactive updates  
🔧 **Developer Friendly** - Convention over configuration with full customization options  
🎨 **Multiple CSS Frameworks** - daisyUI/Tailwind (default) and Bootstrap 5 support  

## Quick Example

Start with basic neapolitan:

```python
# Basic neapolitan
class ProjectView(CRUDView):
    model = Project
```

Add powercrud for advanced features:

```python
# With powercrud
class ProjectView(PowerCRUDMixin, CRUDView):
    model = Project
    fields = ["name", "owner", "status"]
    base_template_path = "core/base.html"
    
    # Modern features
    use_htmx = True
    use_modal = True
    
    # Advanced filtering
    filterset_fields = ["owner", "status", "created_date"]
    
    # Bulk operations
    bulk_fields = ["status", "owner"]
    bulk_delete = True
    
    # Enhanced display
    properties = ["is_overdue", "days_remaining"]
```

## Getting Started

See the **[Quick Start](https://doctor-cornelius.github.io/django-powercrud/getting_started/)** documentation

## 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:

```bash
./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`](https://github.com/astral-sh/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](https://doctor-cornelius.github.io/django-powercrud/reference/dockerised_dev/) for full details.
