Metadata-Version: 2.4
Name: xladmin
Version: 0.1.4
Summary: Generic FastAPI + SQLAlchemy admin backend.
Author: Artasov
License-Expression: MIT
Project-URL: Homepage, https://github.com/Artasov/xladmin/tree/main/xladmin-backend
Project-URL: Repository, https://github.com/Artasov/xladmin
Project-URL: Issues, https://github.com/Artasov/xladmin/issues
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: fastapi<1.0.0,>=0.115.0
Requires-Dist: pydantic<3.0.0,>=2.9.0
Requires-Dist: sqlalchemy<3.0.0,>=2.0.0
Provides-Extra: test
Requires-Dist: aiosqlite>=0.20.0; extra == "test"
Requires-Dist: httpx>=0.28.0; extra == "test"
Requires-Dist: pytest>=8.0.0; extra == "test"
Requires-Dist: pytest-asyncio>=1.0.0; extra == "test"
Provides-Extra: dev
Requires-Dist: aiosqlite>=0.20.0; extra == "dev"
Requires-Dist: build>=1.2.2; extra == "dev"
Requires-Dist: httpx>=0.28.0; extra == "dev"
Requires-Dist: mypy>=1.11.0; extra == "dev"
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=1.0.0; extra == "dev"
Requires-Dist: ruff>=0.11.0; extra == "dev"
Requires-Dist: twine>=6.1.0; extra == "dev"

# xladmin

`xladmin` это backend-пакет админки для `FastAPI + SQLAlchemy`.

Важно:

- имя пакета в PyPI: `xladmin`
- импорт в Python: `from xladmin import ...`
- исходники монорепы: [Artasov/xladmin](https://github.com/Artasov/xladmin)

## Основной API

- `AdminConfig` — корневой декларативный конфиг
- `ModelConfig` — конфиг одной ORM-модели
- `FieldConfig` — переопределение поведения конкретного поля
- `BulkActionConfig` — кастомное действие над несколькими объектами
- `ObjectActionConfig` — кастомное действие над одним объектом
- `ModelsBlock` — блок моделей для sidebar и overview
- `HttpConfig` — контракт интеграции с проектом
- `create_router(...)` — фабрика FastAPI-router

Короткие имена считаются основными. Старые `Admin*` имена и `create_admin_router(...)` оставлены как alias для совместимости.

## Минимальный пример

```python
from xladmin import AdminConfig, HttpConfig, ModelConfig, create_router

from src.core.auth.dependencies import get_current_user
from src.core.db.session import get_db_session
from src.modules.identity.models import UserORM


xladmin_config = AdminConfig(
    models=(
        ModelConfig(model=UserORM),
    ),
)

router = create_router(
    HttpConfig(
        registry=xladmin_config,
        get_db_session_dependency=get_db_session,
        get_current_user_dependency=get_current_user,
        is_allowed=lambda user: bool(user.is_staff),
    ),
)
```

`ModelConfig(model=UserORM)` уже достаточно для базовой админки. Библиотека сама достроит:

- `slug`
- `title`
- базовые `search_fields`
- базовый `ordering`

## Что есть в библиотеке

- list / detail / create / patch / delete
- bulk actions и object actions
- relation choices
- model descriptions
- model blocks
- RU / EN locale
- delete preview для single delete и bulk delete

## Совместимость

- `FastAPI >=0.115,<1.0`
- `Pydantic >=2.9,<3.0`
- `SQLAlchemy >=2.0,<3.0`

## Документация

- подробная инструкция: [docs/HOW_TO_USE.md](docs/HOW_TO_USE.md)
- фронтенд-пакет: [../xladmin-frontend/README.md](../xladmin-frontend/README.md)
