openadmin-dev 0.7.6__tar.gz → 0.7.8__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.
Files changed (84) hide show
  1. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/PKG-INFO +1 -1
  2. openadmin_dev-0.7.8/examples/admin/docs.py +39 -0
  3. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/main.py +9 -0
  4. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/action.py +2 -0
  5. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/admin_page.py +40 -0
  6. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/form.py +2 -0
  7. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/action.py +4 -0
  8. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/form.py +4 -0
  9. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/pyproject.toml +1 -1
  10. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/uv.lock +1 -1
  11. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/ISSUE_TEMPLATE/bug.md +0 -0
  12. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/ISSUE_TEMPLATE/chore.md +0 -0
  13. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  14. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/branch-name/action.yml +0 -0
  15. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/dependency-cves/action.yml +0 -0
  16. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/format/action.yml +0 -0
  17. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/license/action.yml +0 -0
  18. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/lint/action.yml +0 -0
  19. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/security/action.yml +0 -0
  20. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/spell-check/action.yml +0 -0
  21. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/test/action.yml +0 -0
  22. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/typecheck/action.yml +0 -0
  23. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/actions/unused-code/action.yml +0 -0
  24. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/workflows/ci.yml +0 -0
  25. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.github/workflows/publish.yml +0 -0
  26. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.gitignore +0 -0
  27. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/.python-version +0 -0
  28. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/LICENSE +0 -0
  29. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/LICENSES/AGPL-3.0-or-later.txt +0 -0
  30. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/Makefile +0 -0
  31. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/README.md +0 -0
  32. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/REUSE.toml +0 -0
  33. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/docs/assets/logo.png +0 -0
  34. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/__init__.py +0 -0
  35. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/__init__.py +0 -0
  36. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/analytics.py +0 -0
  37. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/authors.py +0 -0
  38. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/books.py +0 -0
  39. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/genres.py +0 -0
  40. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/health.py +0 -0
  41. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/overview.py +0 -0
  42. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/publishers.py +0 -0
  43. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/reports.py +0 -0
  44. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/tags.py +0 -0
  45. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/admin/weekdays.py +0 -0
  46. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/lib/__init__.py +0 -0
  47. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/lib/database.py +0 -0
  48. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/lib/lifespan.py +0 -0
  49. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/lib/models.py +0 -0
  50. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/examples/lib/seed.py +0 -0
  51. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/__init__.py +0 -0
  52. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/admin_panel.py +0 -0
  53. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/area_chart.py +0 -0
  54. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/bar_chart.py +0 -0
  55. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/component.py +0 -0
  56. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/counters.py +0 -0
  57. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/deps.py +0 -0
  58. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/line_chart.py +0 -0
  59. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/markdown.py +0 -0
  60. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/page_protocol.py +0 -0
  61. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/pagination_params.py +0 -0
  62. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/pie_chart.py +0 -0
  63. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/section.py +0 -0
  64. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/stat.py +0 -0
  65. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/table.py +0 -0
  66. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/fastapi/utils.py +0 -0
  67. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/__init__.py +0 -0
  68. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/area_chart.py +0 -0
  69. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/bar_chart.py +0 -0
  70. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/colors.py +0 -0
  71. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/component.py +0 -0
  72. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/http_methods.py +0 -0
  73. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/icons.py +0 -0
  74. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/line_chart.py +0 -0
  75. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/markdown.py +0 -0
  76. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/page.py +0 -0
  77. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/pie_chart.py +0 -0
  78. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/property.py +0 -0
  79. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/property_type.py +0 -0
  80. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/section.py +0 -0
  81. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/spec.py +0 -0
  82. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/stat.py +0 -0
  83. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/openadmin/spec/table.py +0 -0
  84. {openadmin_dev-0.7.6 → openadmin_dev-0.7.8}/tests/test_hello.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openadmin-dev
3
- Version: 0.7.6
3
+ Version: 0.7.8
4
4
  Summary: Add your description here
5
5
  Project-URL: Homepage, https://github.com/openadmin-team/openadmin-py
6
6
  Project-URL: Issues, https://github.com/openadmin-team/openadmin-py/issues
@@ -0,0 +1,39 @@
1
+ # SPDX-FileCopyrightText: 2026 OpenAdmin
2
+ #
3
+ # SPDX-License-Identifier: AGPL-3.0-or-later
4
+
5
+ from openadmin import fastapi, spec
6
+
7
+ page = fastapi.AdminPage("Docs", icon="dock")
8
+
9
+
10
+ @page.markdown("Company policy 1", icon="podcast", color="blue")
11
+ def company_policy_1() -> spec.Markdown:
12
+ return """
13
+ # Hello World
14
+
15
+ This is new text
16
+
17
+ ---
18
+
19
+ - Cake
20
+ - Limonade
21
+ """
22
+
23
+
24
+ @page.markdown("Company policy 2")
25
+ def company_policy_2() -> spec.Markdown:
26
+ return {
27
+ "content": """
28
+ # Hello World
29
+
30
+ This is new text
31
+
32
+ ---
33
+
34
+ - Cake
35
+ - Limonade
36
+ """,
37
+ "color": "yellow",
38
+ "icon": "a-arrow-up",
39
+ }
@@ -11,6 +11,7 @@ from .admin import (
11
11
  analytics,
12
12
  authors,
13
13
  books,
14
+ docs,
14
15
  genres,
15
16
  health,
16
17
  overview,
@@ -35,6 +36,14 @@ admin_panel = AdminPanel(
35
36
  "Book Library Admin", description="Manage and explore the book catalog"
36
37
  )
37
38
 
39
+ admin_panel.section(
40
+ "Docs",
41
+ icon="download-cloud",
42
+ pages=[
43
+ docs.page,
44
+ ],
45
+ )
46
+
38
47
  admin_panel.section(
39
48
  "Library", icon="library", pages=[books.page, authors.page, publishers.page]
40
49
  )
@@ -16,4 +16,6 @@ class Action:
16
16
  description: str | None
17
17
  method: spec.HttpMethod
18
18
  is_hidden: bool
19
+ color: spec.Color | None
20
+ icon: spec.Icon | None
19
21
  func: Callable | None = field(default=None)
@@ -155,6 +155,8 @@ class AdminPage:
155
155
  method=item.method,
156
156
  url=url,
157
157
  is_hidden=item.is_hidden,
158
+ icon=item.icon,
159
+ color=item.color,
158
160
  query=query,
159
161
  body=body,
160
162
  form=form,
@@ -170,6 +172,8 @@ class AdminPage:
170
172
  method=item.method,
171
173
  url=url,
172
174
  is_hidden=item.is_hidden,
175
+ icon=item.icon,
176
+ color=item.color,
173
177
  query=query,
174
178
  body=body,
175
179
  form=form,
@@ -309,6 +313,8 @@ class AdminPage:
309
313
  *,
310
314
  description: str | None = None,
311
315
  is_hidden: bool = False,
316
+ icon: spec.Icon | None = None,
317
+ color: spec.Color | None = None,
312
318
  ):
313
319
  kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
314
320
 
@@ -318,6 +324,8 @@ class AdminPage:
318
324
  name=name,
319
325
  description=description,
320
326
  is_hidden=is_hidden,
327
+ icon=icon,
328
+ color=color,
321
329
  id=kebab_name,
322
330
  )
323
331
  self.state.append(item)
@@ -334,6 +342,8 @@ class AdminPage:
334
342
  *,
335
343
  description: str | None = None,
336
344
  is_hidden: bool = False,
345
+ icon: spec.Icon | None = None,
346
+ color: spec.Color | None = None,
337
347
  ):
338
348
  kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
339
349
 
@@ -343,6 +353,8 @@ class AdminPage:
343
353
  name=name,
344
354
  description=description,
345
355
  is_hidden=is_hidden,
356
+ icon=icon,
357
+ color=color,
346
358
  id=kebab_name,
347
359
  )
348
360
  self.state.append(item)
@@ -359,6 +371,8 @@ class AdminPage:
359
371
  *,
360
372
  description: str | None = None,
361
373
  is_hidden: bool = False,
374
+ icon: spec.Icon | None = None,
375
+ color: spec.Color | None = None,
362
376
  ):
363
377
  kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
364
378
 
@@ -368,6 +382,8 @@ class AdminPage:
368
382
  name=name,
369
383
  description=description,
370
384
  is_hidden=is_hidden,
385
+ icon=icon,
386
+ color=color,
371
387
  id=kebab_name,
372
388
  )
373
389
  self.state.append(item)
@@ -384,6 +400,8 @@ class AdminPage:
384
400
  *,
385
401
  description: str | None = None,
386
402
  is_hidden: bool = False,
403
+ icon: spec.Icon | None = None,
404
+ color: spec.Color | None = None,
387
405
  ):
388
406
  kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
389
407
 
@@ -393,6 +411,8 @@ class AdminPage:
393
411
  name=name,
394
412
  description=description,
395
413
  is_hidden=is_hidden,
414
+ icon=icon,
415
+ color=color,
396
416
  id=kebab_name,
397
417
  )
398
418
  self.state.append(item)
@@ -409,6 +429,8 @@ class AdminPage:
409
429
  *,
410
430
  description: str | None = None,
411
431
  is_hidden: bool = False,
432
+ icon: spec.Icon | None = None,
433
+ color: spec.Color | None = None,
412
434
  ):
413
435
  kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
414
436
 
@@ -418,6 +440,8 @@ class AdminPage:
418
440
  name=name,
419
441
  description=description,
420
442
  is_hidden=is_hidden,
443
+ icon=icon,
444
+ color=color,
421
445
  id=kebab_name,
422
446
  )
423
447
  self.state.append(item)
@@ -434,6 +458,8 @@ class AdminPage:
434
458
  *,
435
459
  description: str | None = None,
436
460
  is_hidden: bool = False,
461
+ icon: spec.Icon | None = None,
462
+ color: spec.Color | None = None,
437
463
  ):
438
464
  kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
439
465
 
@@ -443,6 +469,8 @@ class AdminPage:
443
469
  name=name,
444
470
  description=description,
445
471
  is_hidden=is_hidden,
472
+ icon=icon,
473
+ color=color,
446
474
  id=kebab_name,
447
475
  )
448
476
  self.state.append(item)
@@ -459,6 +487,8 @@ class AdminPage:
459
487
  *,
460
488
  description: str | None = None,
461
489
  is_hidden: bool = False,
490
+ icon: spec.Icon | None = None,
491
+ color: spec.Color | None = None,
462
492
  ):
463
493
  kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
464
494
 
@@ -468,6 +498,8 @@ class AdminPage:
468
498
  name=name,
469
499
  description=description,
470
500
  is_hidden=is_hidden,
501
+ icon=icon,
502
+ color=color,
471
503
  id=kebab_name,
472
504
  )
473
505
  self.state.append(item)
@@ -484,6 +516,8 @@ class AdminPage:
484
516
  *,
485
517
  description: str | None = None,
486
518
  is_hidden: bool = False,
519
+ icon: spec.Icon | None = None,
520
+ color: spec.Color | None = None,
487
521
  ):
488
522
  kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
489
523
 
@@ -493,6 +527,8 @@ class AdminPage:
493
527
  name=name,
494
528
  description=description,
495
529
  is_hidden=is_hidden,
530
+ icon=icon,
531
+ color=color,
496
532
  id=kebab_name,
497
533
  )
498
534
  self.state.append(item)
@@ -509,6 +545,8 @@ class AdminPage:
509
545
  *,
510
546
  description: str | None = None,
511
547
  is_hidden: bool = False,
548
+ icon: spec.Icon | None = None,
549
+ color: spec.Color | None = None,
512
550
  ):
513
551
  kebab_name, unique_name = self.__get_kebab_and_unique_name(name)
514
552
 
@@ -518,6 +556,8 @@ class AdminPage:
518
556
  name=name,
519
557
  description=description,
520
558
  is_hidden=is_hidden,
559
+ icon=icon,
560
+ color=color,
521
561
  id=kebab_name,
522
562
  )
523
563
  self.state.append(item)
@@ -16,4 +16,6 @@ class Form:
16
16
  description: str | None
17
17
  method: spec.HttpMethod
18
18
  is_hidden: bool
19
+ color: spec.Color | None
20
+ icon: spec.Icon | None
19
21
  func: Callable | None = field(default=None)
@@ -6,7 +6,9 @@ from typing import Literal
6
6
 
7
7
  from pydantic import BaseModel, Field
8
8
 
9
+ from .colors import Color
9
10
  from .http_methods import HttpMethod
11
+ from .icons import Icon
10
12
  from .property import Property
11
13
 
12
14
 
@@ -16,6 +18,8 @@ class Action(BaseModel):
16
18
  name: str
17
19
  description: str | None
18
20
  url: str
21
+ icon: Icon | None
22
+ color: Color | None
19
23
  method: HttpMethod
20
24
  is_hidden: bool
21
25
  form: list[Property] | None = Field(None)
@@ -6,7 +6,9 @@ from typing import Literal
6
6
 
7
7
  from pydantic import BaseModel, Field
8
8
 
9
+ from .colors import Color
9
10
  from .http_methods import HttpMethod
11
+ from .icons import Icon
10
12
  from .property import Property
11
13
 
12
14
 
@@ -16,6 +18,8 @@ class Form(BaseModel):
16
18
  name: str
17
19
  description: str | None
18
20
  url: str
21
+ icon: Icon | None
22
+ color: Color | None
19
23
  method: HttpMethod
20
24
  is_hidden: bool
21
25
  form: list[Property] | None = Field(None)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openadmin-dev"
3
- version = "0.7.6"
3
+ version = "0.7.8"
4
4
  description = "Add your description here"
5
5
  authors = [
6
6
  { name="Mykyta Kasianenko", email="mykytakasianenko@gmail.com" },
@@ -510,7 +510,7 @@ wheels = [
510
510
 
511
511
  [[package]]
512
512
  name = "openadmin"
513
- version = "0.7.5"
513
+ version = "0.7.8"
514
514
  source = { editable = "." }
515
515
  dependencies = [
516
516
  { name = "fastapi", extra = ["standard"] },
File without changes
File without changes
File without changes
File without changes
File without changes