openadmin-dev 0.7.12__tar.gz → 0.7.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/PKG-INFO +1 -1
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/fastapi/utils.py +39 -3
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/pyproject.toml +1 -1
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/uv.lock +231 -176
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/ISSUE_TEMPLATE/bug.md +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/ISSUE_TEMPLATE/chore.md +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/branch-name/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/dependency-cves/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/format/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/license/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/lint/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/security/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/spell-check/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/test/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/typecheck/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/actions/unused-code/action.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/workflows/ci.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.github/workflows/publish.yml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.gitignore +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/.python-version +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/LICENSE +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/LICENSES/AGPL-3.0-or-later.txt +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/Makefile +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/README.md +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/REUSE.toml +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/docs/assets/logo.png +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/__init__.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/__init__.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/analytics.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/authors.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/books.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/control_panel.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/docs.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/genres.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/health.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/overview.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/publishers.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/reports.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/tags.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/admin/weekdays.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/lib/__init__.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/lib/database.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/lib/lifespan.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/lib/models.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/lib/seed.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/examples/main.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/__client__/assets/index-Cmhau8Lc.js +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/__client__/assets/index-DfxwI1Du.css +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/__client__/favicon.svg +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/__client__/icons.svg +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/__client__/index.html +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/fastapi/__init__.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/fastapi/admin_page.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/fastapi/admin_panel.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/fastapi/counter.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/fastapi/deps.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/fastapi/exc_handler.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/fastapi/field_config.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/fastapi/req.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/__init__.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/action.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/area_chart.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/bar_chart.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/colors.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/component.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/error.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/form.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/http_methods.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/icons.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/json_schema.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/line_chart.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/markdown.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/page.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/pie_chart.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/section.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/spec.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/stat.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/openadmin/spec/table.py +0 -0
- {openadmin_dev-0.7.12 → openadmin_dev-0.7.14}/tests/test_hello.py +0 -0
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
import re
|
|
6
6
|
from collections.abc import Callable
|
|
7
|
+
from dataclasses import dataclass
|
|
7
8
|
from typing import Annotated, Any, cast
|
|
8
9
|
|
|
9
10
|
from pydantic import BaseModel, TypeAdapter, create_model
|
|
10
11
|
|
|
11
12
|
from fastapi import params
|
|
12
13
|
from fastapi.dependencies.models import Dependant
|
|
13
|
-
from fastapi.dependencies.utils import get_dependant
|
|
14
|
+
from fastapi.dependencies.utils import get_dependant
|
|
14
15
|
from openadmin import spec
|
|
15
16
|
|
|
16
17
|
from . import counter
|
|
@@ -42,11 +43,46 @@ def get_body_params(func: Callable) -> spec.JsonSchema | None:
|
|
|
42
43
|
return _unwrappable_schema(fields)
|
|
43
44
|
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
@dataclass
|
|
47
|
+
class _FlatParams:
|
|
48
|
+
"""Params pulled from a `Dependant` and all of its sub-dependencies.
|
|
49
|
+
|
|
50
|
+
FastAPI's own flattening helper (`get_flat_dependant`) has been renamed
|
|
51
|
+
or removed across versions, so it isn't relied on here -- this walks the
|
|
52
|
+
dependency tree the same way it used to, using only `Dependant.call`,
|
|
53
|
+
`.dependencies`, `.query_params` and `.body_params`, which have stayed
|
|
54
|
+
stable across FastAPI versions.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
query_params: list[Any]
|
|
58
|
+
body_params: list[Any]
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _get_flat_dependant(func: Callable) -> _FlatParams:
|
|
46
62
|
"""Resolve `func`'s params the same way FastAPI does, including params
|
|
47
63
|
pulled in through `Depends(...)` (e.g. `PageDep`, `SearchQueryDep`)."""
|
|
48
64
|
dependant = get_dependant(path="", call=func)
|
|
49
|
-
return
|
|
65
|
+
return _flatten_params(dependant)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _flatten_params(
|
|
69
|
+
dependant: Dependant, visited: set[Callable | None] | None = None
|
|
70
|
+
) -> _FlatParams:
|
|
71
|
+
if visited is None:
|
|
72
|
+
visited = set()
|
|
73
|
+
visited.add(dependant.call)
|
|
74
|
+
|
|
75
|
+
flat = _FlatParams(
|
|
76
|
+
query_params=list(dependant.query_params),
|
|
77
|
+
body_params=list(dependant.body_params),
|
|
78
|
+
)
|
|
79
|
+
for sub_dependant in dependant.dependencies:
|
|
80
|
+
if sub_dependant.call in visited:
|
|
81
|
+
continue
|
|
82
|
+
flat_sub = _flatten_params(sub_dependant, visited)
|
|
83
|
+
flat.query_params.extend(flat_sub.query_params)
|
|
84
|
+
flat.body_params.extend(flat_sub.body_params)
|
|
85
|
+
return flat
|
|
50
86
|
|
|
51
87
|
|
|
52
88
|
def _is_form_field(field: Any) -> bool:
|