openadmin-dev 0.7.5__tar.gz → 0.7.6__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.5 → openadmin_dev-0.7.6}/PKG-INFO +1 -1
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/admin_page.py +7 -1
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/markdown.py +2 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/__init__.py +4 -1
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/component.py +2 -2
- openadmin_dev-0.7.6/openadmin/spec/markdown.py +36 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/pyproject.toml +1 -1
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/uv.lock +1 -1
- openadmin_dev-0.7.5/openadmin/spec/markdown.py +0 -20
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/ISSUE_TEMPLATE/bug.md +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/ISSUE_TEMPLATE/chore.md +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/branch-name/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/dependency-cves/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/format/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/license/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/lint/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/security/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/spell-check/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/test/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/typecheck/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/actions/unused-code/action.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/workflows/ci.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.github/workflows/publish.yml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.gitignore +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/.python-version +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/LICENSE +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/LICENSES/AGPL-3.0-or-later.txt +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/Makefile +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/README.md +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/REUSE.toml +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/docs/assets/logo.png +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/__init__.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/__init__.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/analytics.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/authors.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/books.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/genres.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/health.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/overview.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/publishers.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/reports.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/tags.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/admin/weekdays.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/lib/__init__.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/lib/database.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/lib/lifespan.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/lib/models.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/lib/seed.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/examples/main.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/__init__.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/action.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/admin_panel.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/area_chart.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/bar_chart.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/component.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/counters.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/deps.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/form.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/line_chart.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/page_protocol.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/pagination_params.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/pie_chart.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/section.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/stat.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/table.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/fastapi/utils.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/action.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/area_chart.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/bar_chart.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/colors.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/form.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/http_methods.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/icons.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/line_chart.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/page.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/pie_chart.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/property.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/property_type.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/section.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/spec.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/stat.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/openadmin/spec/table.py +0 -0
- {openadmin_dev-0.7.5 → openadmin_dev-0.7.6}/tests/test_hello.py +0 -0
|
@@ -177,10 +177,12 @@ class AdminPage:
|
|
|
177
177
|
)
|
|
178
178
|
elif isinstance(item, Markdown):
|
|
179
179
|
components.append(
|
|
180
|
-
spec.
|
|
180
|
+
spec.MarkdownComponent(
|
|
181
181
|
type="markdown",
|
|
182
182
|
id=item.id,
|
|
183
183
|
name=item.name,
|
|
184
|
+
icon=item.icon,
|
|
185
|
+
color=item.color,
|
|
184
186
|
description=item.description,
|
|
185
187
|
method=item.method,
|
|
186
188
|
url=url,
|
|
@@ -276,6 +278,8 @@ class AdminPage:
|
|
|
276
278
|
name: str,
|
|
277
279
|
*,
|
|
278
280
|
description: str | None = None,
|
|
281
|
+
color: spec.Color | None = None,
|
|
282
|
+
icon: spec.Icon | None = None,
|
|
279
283
|
):
|
|
280
284
|
kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
|
|
281
285
|
|
|
@@ -285,6 +289,8 @@ class AdminPage:
|
|
|
285
289
|
name=name,
|
|
286
290
|
description=description,
|
|
287
291
|
id=kebab_name,
|
|
292
|
+
icon=icon,
|
|
293
|
+
color=color,
|
|
288
294
|
)
|
|
289
295
|
self.state.append(item)
|
|
290
296
|
|
|
@@ -17,7 +17,7 @@ from .form import Form
|
|
|
17
17
|
from .http_methods import HttpMethod
|
|
18
18
|
from .icons import Icon
|
|
19
19
|
from .line_chart import LineChart
|
|
20
|
-
from .markdown import Markdown
|
|
20
|
+
from .markdown import Markdown, MarkdownComponent, MarkdownContent, MarkdownResponse
|
|
21
21
|
from .page import Page
|
|
22
22
|
from .pie_chart import (
|
|
23
23
|
PieChart,
|
|
@@ -49,6 +49,9 @@ __all__ = [
|
|
|
49
49
|
"Icon",
|
|
50
50
|
"LineChart",
|
|
51
51
|
"Markdown",
|
|
52
|
+
"MarkdownComponent",
|
|
53
|
+
"MarkdownContent",
|
|
54
|
+
"MarkdownResponse",
|
|
52
55
|
"Page",
|
|
53
56
|
"PieChart",
|
|
54
57
|
"PieChartComponent",
|
|
@@ -8,7 +8,7 @@ from .area_chart import AreaChart
|
|
|
8
8
|
from .bar_chart import BarChartComponent
|
|
9
9
|
from .form import Form
|
|
10
10
|
from .line_chart import LineChart
|
|
11
|
-
from .markdown import
|
|
11
|
+
from .markdown import MarkdownComponent
|
|
12
12
|
from .pie_chart import PieChartComponent
|
|
13
13
|
from .stat import StatComponent
|
|
14
14
|
from .table import TableComponent
|
|
@@ -22,5 +22,5 @@ type Component = (
|
|
|
22
22
|
| PieChartComponent
|
|
23
23
|
| Action
|
|
24
24
|
| Form
|
|
25
|
-
|
|
|
25
|
+
| MarkdownComponent
|
|
26
26
|
)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2026 OpenAdmin
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
+
|
|
5
|
+
from typing import Literal, NotRequired, TypedDict
|
|
6
|
+
|
|
7
|
+
from pydantic import BaseModel, Field
|
|
8
|
+
|
|
9
|
+
from .colors import Color
|
|
10
|
+
from .http_methods import HttpMethod
|
|
11
|
+
from .icons import Icon
|
|
12
|
+
from .property import Property
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class MarkdownComponent(BaseModel):
|
|
16
|
+
type: Literal["markdown"]
|
|
17
|
+
id: str
|
|
18
|
+
name: str
|
|
19
|
+
description: str | None
|
|
20
|
+
color: Color | None
|
|
21
|
+
icon: Icon | None
|
|
22
|
+
url: str
|
|
23
|
+
method: HttpMethod
|
|
24
|
+
query: list[Property] | None = Field(None)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
type MarkdownContent = str
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class MarkdownResponse(TypedDict):
|
|
31
|
+
icon: NotRequired[Icon]
|
|
32
|
+
color: NotRequired[Color]
|
|
33
|
+
content: MarkdownContent
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
type Markdown = MarkdownContent | MarkdownResponse
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: 2026 OpenAdmin
|
|
2
|
-
#
|
|
3
|
-
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
-
|
|
5
|
-
from typing import Literal
|
|
6
|
-
|
|
7
|
-
from pydantic import BaseModel, Field
|
|
8
|
-
|
|
9
|
-
from .http_methods import HttpMethod
|
|
10
|
-
from .property import Property
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class Markdown(BaseModel):
|
|
14
|
-
type: Literal["markdown"]
|
|
15
|
-
id: str
|
|
16
|
-
name: str
|
|
17
|
-
description: str | None
|
|
18
|
-
url: str
|
|
19
|
-
method: HttpMethod
|
|
20
|
-
query: list[Property] | None = Field(None)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|