Metadata-Version: 2.4
Name: django-eadmin
Version: 0.0.1
Summary: A reusable Tailwind, HTMX, Alpine.js, and DaisyUI Django administration app.
Author: EAdmin contributors
License-Expression: LicenseRef-Proprietary
Project-URL: Homepage, https://github.com/lqcodes/django-eadmin
Project-URL: Source, https://github.com/lqcodes/django-eadmin
Project-URL: Issues, https://github.com/lqcodes/django-eadmin/issues
Classifier: Framework :: Django
Classifier: Framework :: Django :: 5.1
Classifier: Framework :: Django :: 5.2
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: Django<5.3,>=5.1

# django-eadmin

`django-eadmin` is a reusable, server-rendered Django administration interface
using Tailwind CSS, DaisyUI, HTMX, and Alpine.js. It retains Django's built-in
authentication, model permissions, forms, and audit-log semantics.

## Requirements

- Python 3.10+
- Django 5.1 or 5.2
- Django's `admin`, `auth`, `contenttypes`, `sessions`, `messages`, and
  `staticfiles` applications

## Install

```bash
python -m pip install django-eadmin
```

Add EAdmin before applications that register models:

```python
INSTALLED_APPS = [
    "eadmin",
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "articles",  # Contains articles/eadmin.py.
]
```

Run the standard Django setup commands:

```bash
python manage.py migrate
python manage.py createsuperuser
```

## Routes

EAdmin follows Django Admin's familiar public API:

```python
from django.urls import path
from eadmin import admin

urlpatterns = [
    path("admin/", admin.site.urls),
]
```

If native Django Admin must remain available, mount the two sites on different
prefixes:

```python
from django.contrib import admin as django_admin
from django.urls import path
from eadmin import admin as eadmin_admin

urlpatterns = [
    path("admin/", eadmin_admin.site.urls),
    path("django-admin/", django_admin.site.urls),
]
```

## Register models

Create an `eadmin.py` beside `models.py` in an installed application:

```python
from eadmin import admin
from eadmin.registry import ModelAdmin
from .models import Article

admin.site.register(Article, ModelAdmin(
    list_display=("title", "state", "updated_at"),
    list_filter=("state",),
    search_fields=("title",),
    fields=("title", "state", "body", "tags"),
))
```

EAdmin autodiscovers each installed application's `eadmin.py` at Django
startup. It supports list columns, filtering, search, ordering, readonly
fields, fieldsets, relationship widgets, actions, inlines, and custom model
views.

## Permissions

EAdmin never grants access through its configuration. Users must be active,
staff, and have Django's standard `view`, `add`, `change`, or `delete` model
permissions. Superusers retain normal Django access. These checks apply to
menus, lists, forms, object actions, bulk actions, and inline formsets.

## Bundled browser dependencies

All browser assets are included in the installed package; EAdmin makes no
runtime CDN requests.

| Dependency | Version |
| --- | --- |
| Tailwind CSS Play CDN | 3.4.17 |
| DaisyUI | 4.12.24 |
| HTMX | 2.0.4 |
| Alpine.js | 3.17.4 |

See the [source repository](https://github.com/lqcodes/django-eadmin) for
source code and issue tracking.
