fastapi-admin-kit 0.3.2__tar.gz → 0.5.0__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 (285) hide show
  1. fastapi_admin_kit-0.5.0/CHANGELOG.md +127 -0
  2. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/PKG-INFO +14 -6
  3. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/README.md +2 -4
  4. fastapi_admin_kit-0.5.0/SECURITY.md +32 -0
  5. fastapi_admin_kit-0.5.0/example/custom_templates/admin/list.html +28 -0
  6. fastapi_admin_kit-0.5.0/example/custom_templates/admin/products/list.html +27 -0
  7. fastapi_admin_kit-0.5.0/example/example_ai.py +930 -0
  8. fastapi_admin_kit-0.5.0/example/example_custom_templates.py +251 -0
  9. fastapi_admin_kit-0.5.0/example/example_notifications.py +492 -0
  10. fastapi_admin_kit-0.5.0/example/validate_ws.py +74 -0
  11. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/__init__.py +48 -2
  12. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/admin/admin_config.py +9 -0
  13. fastapi_admin_kit-0.5.0/fastapi_admin_kit/admin/admin_database.py +176 -0
  14. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/admin/admin_router.py +5 -0
  15. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/admin/admin_template.py +10 -8
  16. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/admin/builtin_models.py +158 -9
  17. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/admin/core.py +731 -56
  18. fastapi_admin_kit-0.5.0/fastapi_admin_kit/admin/decorators.py +156 -0
  19. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/admin/state.py +2 -4
  20. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/__init__.py +37 -0
  21. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/agent.py +119 -0
  22. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/attachments.py +136 -0
  23. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/backends/__init__.py +129 -0
  24. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/backends/pydantic_ai_backend.py +699 -0
  25. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/backends/repairer.py +381 -0
  26. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/builtin_tools.py +105 -0
  27. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/config.py +126 -0
  28. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/conversation.py +350 -0
  29. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/dashboard.py +298 -0
  30. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/data_access.py +142 -0
  31. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/deps.py +186 -0
  32. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/errors.py +17 -0
  33. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/model_agent.py +419 -0
  34. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/plugin.py +73 -0
  35. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/prompts.py +126 -0
  36. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/serialization.py +71 -0
  37. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/service.py +851 -0
  38. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/tools.py +110 -0
  39. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/ui/__init__.py +11 -0
  40. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/ui/native.py +52 -0
  41. fastapi_admin_kit-0.5.0/fastapi_admin_kit/ai/usage.py +126 -0
  42. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/api/__init__.py +6 -5
  43. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/api/auth.py +201 -35
  44. fastapi_admin_kit-0.5.0/fastapi_admin_kit/api/crud.py +219 -0
  45. fastapi_admin_kit-0.5.0/fastapi_admin_kit/api/deps.py +141 -0
  46. fastapi_admin_kit-0.5.0/fastapi_admin_kit/api/middleware.py +131 -0
  47. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/api/roles.py +3 -4
  48. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/api/schema_generator.py +61 -1
  49. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/api/search.py +5 -2
  50. fastapi_admin_kit-0.5.0/fastapi_admin_kit/api/security.py +23 -0
  51. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/middleware.py +6 -1
  52. fastapi_admin_kit-0.5.0/fastapi_admin_kit/auth/backend.py +221 -0
  53. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/csrf.py +68 -15
  54. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/dependencies.py +5 -0
  55. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/identity.py +22 -2
  56. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/mixins.py +16 -13
  57. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/password.py +6 -3
  58. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/permissions.py +4 -4
  59. fastapi_admin_kit-0.5.0/fastapi_admin_kit/auth/proxy.py +98 -0
  60. fastapi_admin_kit-0.5.0/fastapi_admin_kit/auth/ratelimit.py +112 -0
  61. fastapi_admin_kit-0.5.0/fastapi_admin_kit/auth/session.py +186 -0
  62. fastapi_admin_kit-0.5.0/fastapi_admin_kit/auth/totp.py +158 -0
  63. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/views.py +63 -21
  64. fastapi_admin_kit-0.5.0/fastapi_admin_kit/backends/__init__.py +109 -0
  65. fastapi_admin_kit-0.5.0/fastapi_admin_kit/backends/memory.py +610 -0
  66. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/backends/protocols.py +86 -2
  67. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/backends/sqlalchemy.py +453 -38
  68. fastapi_admin_kit-0.5.0/fastapi_admin_kit/cli/user.py +360 -0
  69. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/config/__init__.py +4 -0
  70. fastapi_admin_kit-0.5.0/fastapi_admin_kit/config/ai_chat.py +27 -0
  71. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/config/auth.py +25 -6
  72. fastapi_admin_kit-0.5.0/fastapi_admin_kit/config/cache.py +137 -0
  73. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/config/database.py +11 -2
  74. fastapi_admin_kit-0.5.0/fastapi_admin_kit/db.py +150 -0
  75. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/export_import/base.py +57 -7
  76. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/export_import/csv.py +3 -4
  77. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/export_import/excel.py +8 -5
  78. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/filters/__init__.py +4 -0
  79. fastapi_admin_kit-0.5.0/fastapi_admin_kit/filters/base.py +527 -0
  80. fastapi_admin_kit-0.5.0/fastapi_admin_kit/filters/lookups.py +76 -0
  81. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/filters/registry.py +52 -17
  82. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/form/pipeline.py +3 -4
  83. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/inspection/__init__.py +59 -1
  84. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/inspection/types.py +26 -0
  85. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/inspection.py +38 -0
  86. fastapi_admin_kit-0.5.0/fastapi_admin_kit/migrations/__init__.py +5 -0
  87. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/migrations/models.py +36 -8
  88. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/modeladmin.py +150 -6
  89. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/nav.py +3 -0
  90. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/__init__.py +74 -0
  91. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/config.py +116 -0
  92. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/dispatcher.py +203 -0
  93. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/email.py +137 -0
  94. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/models.py +15 -0
  95. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/plugin.py +52 -0
  96. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/realtime.py +136 -0
  97. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/router.py +404 -0
  98. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/schemas.py +75 -0
  99. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/service.py +570 -0
  100. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/sms/__init__.py +22 -0
  101. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/sms/base.py +66 -0
  102. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/sms/twilio.py +128 -0
  103. fastapi_admin_kit-0.5.0/fastapi_admin_kit/notifications/store.py +327 -0
  104. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/pagination/cursor.py +17 -6
  105. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/pagination/dynamic.py +4 -2
  106. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/pagination/offset.py +5 -4
  107. fastapi_admin_kit-0.5.0/fastapi_admin_kit/py.typed +0 -0
  108. fastapi_admin_kit-0.5.0/fastapi_admin_kit/redis.py +325 -0
  109. fastapi_admin_kit-0.5.0/fastapi_admin_kit/registry/__init__.py +9 -0
  110. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/registry/core.py +91 -47
  111. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/router.py +252 -71
  112. fastapi_admin_kit-0.5.0/fastapi_admin_kit/schemas/builtin.py +473 -0
  113. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/static/css/admin.css +182 -4
  114. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/static/js/admin.js +245 -0
  115. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/storage/base.py +3 -0
  116. fastapi_admin_kit-0.5.0/fastapi_admin_kit/storage/local.py +117 -0
  117. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/admin/base_detail.html +86 -0
  118. fastapi_admin_kit-0.3.2/fastapi_admin_kit/templates/pages/form.html → fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/admin/base_form.html +24 -1
  119. fastapi_admin_kit-0.3.2/fastapi_admin_kit/templates/pages/list.html → fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/admin/base_list.html +85 -11
  120. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/base.html +3 -0
  121. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/macros/form_fields.html +7 -8
  122. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/macros/table.html +1 -1
  123. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/pages/ai/agents.html +228 -0
  124. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/pages/ai/chat.html +1152 -0
  125. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/pages/ai/chat_htmx.html +198 -0
  126. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/pages/ai/dashboard.html +153 -0
  127. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/pages/ai/logs.html +1098 -0
  128. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/pages/ai/tools.html +197 -0
  129. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/pages/detail.html +2 -0
  130. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/pages/form.html +2 -0
  131. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/pages/list.html +2 -0
  132. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/roles/form.html +1 -1
  133. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/users/form.html +2 -2
  134. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/_inline_edit_row.html +1 -1
  135. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/partials/ai_chat_widget.html +656 -0
  136. fastapi_admin_kit-0.5.0/fastapi_admin_kit/templates/partials/detail_field.html +59 -0
  137. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/inline_stacked.html +2 -2
  138. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/inline_tabular.html +2 -2
  139. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/list_table.html +1 -1
  140. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/perm_select_widget.html +1 -1
  141. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/permission_widget.html +1 -1
  142. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/topbar.html +54 -4
  143. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/validation.py +9 -0
  144. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/audit.py +1 -1
  145. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/class_views.py +181 -20
  146. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/context.py +2 -4
  147. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/dashboard.py +6 -6
  148. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/file_handler.py +43 -15
  149. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/form.py +11 -1
  150. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/list_context.py +18 -42
  151. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/model_saver.py +7 -0
  152. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/profile.py +9 -7
  153. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/protocols.py +1 -1
  154. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/renderers.py +175 -160
  155. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/roles.py +13 -20
  156. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/settings.py +1 -1
  157. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/sidebar.py +4 -6
  158. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/totp.py +100 -11
  159. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/users.py +6 -6
  160. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views.py +10 -2
  161. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/mkdocs.yml +3 -0
  162. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/pyproject.toml +14 -0
  163. fastapi_admin_kit-0.5.0/scripts/generate_changelog.py +275 -0
  164. fastapi_admin_kit-0.5.0/test_on_complete.py +2 -0
  165. fastapi_admin_kit-0.3.2/CHANGELOG.md +0 -51
  166. fastapi_admin_kit-0.3.2/fastapi_admin_kit/admin/admin_database.py +0 -279
  167. fastapi_admin_kit-0.3.2/fastapi_admin_kit/admin/decorators.py +0 -70
  168. fastapi_admin_kit-0.3.2/fastapi_admin_kit/api/crud.py +0 -129
  169. fastapi_admin_kit-0.3.2/fastapi_admin_kit/api/deps.py +0 -75
  170. fastapi_admin_kit-0.3.2/fastapi_admin_kit/auth/backend.py +0 -92
  171. fastapi_admin_kit-0.3.2/fastapi_admin_kit/auth/ratelimit.py +0 -104
  172. fastapi_admin_kit-0.3.2/fastapi_admin_kit/auth/session.py +0 -106
  173. fastapi_admin_kit-0.3.2/fastapi_admin_kit/auth/totp.py +0 -86
  174. fastapi_admin_kit-0.3.2/fastapi_admin_kit/backends/__init__.py +0 -63
  175. fastapi_admin_kit-0.3.2/fastapi_admin_kit/cli/user.py +0 -207
  176. fastapi_admin_kit-0.3.2/fastapi_admin_kit/db.py +0 -161
  177. fastapi_admin_kit-0.3.2/fastapi_admin_kit/filters/base.py +0 -335
  178. fastapi_admin_kit-0.3.2/fastapi_admin_kit/registry/__init__.py +0 -5
  179. fastapi_admin_kit-0.3.2/fastapi_admin_kit/schemas/builtin.py +0 -259
  180. fastapi_admin_kit-0.3.2/fastapi_admin_kit/storage/local.py +0 -73
  181. fastapi_admin_kit-0.3.2/fastapi_admin_kit/templates/pages/detail.html +0 -183
  182. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/.gitignore +0 -0
  183. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/LICENSE +0 -0
  184. /fastapi_admin_kit-0.3.2/fastapi_admin_kit/py.typed → /fastapi_admin_kit-0.5.0/example/__init__.py +0 -0
  185. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/actions/__init__.py +0 -0
  186. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/actions/base.py +0 -0
  187. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/actions/registry.py +0 -0
  188. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/admin/__init__.py +0 -0
  189. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/api/schemas.py +0 -0
  190. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/__init__.py +0 -0
  191. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/context.py +0 -0
  192. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/diff.py +0 -0
  193. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/event_bus.py +0 -0
  194. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/events.py +0 -0
  195. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/listener.py +0 -0
  196. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/logger.py +0 -0
  197. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/models.py +0 -0
  198. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/audit/sqlalchemy_logger.py +0 -0
  199. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/__init__.py +0 -0
  200. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/hasher.py +0 -0
  201. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/models.py +0 -0
  202. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/protocol.py +0 -0
  203. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/router.py +0 -0
  204. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/auth/types.py +0 -0
  205. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/cli/__init__.py +0 -0
  206. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/cli/__main__.py +0 -0
  207. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/cli/helpers.py +0 -0
  208. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/cli/migrate.py +0 -0
  209. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/cli/permissions.py +0 -0
  210. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/cli/scaffold.py +0 -0
  211. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/config/audit.py +0 -0
  212. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/config/behavior.py +0 -0
  213. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/config/nav.py +0 -0
  214. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/config/storage.py +0 -0
  215. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/config/theme.py +0 -0
  216. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/config/ui.py +0 -0
  217. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/dashboard/__init__.py +0 -0
  218. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/exceptions.py +0 -0
  219. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/export_import/__init__.py +0 -0
  220. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/export_import/registry.py +0 -0
  221. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/field_types.py +0 -0
  222. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/flash.py +0 -0
  223. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/form/__init__.py +0 -0
  224. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/form/types.py +0 -0
  225. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/inline.py +0 -0
  226. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/inspection/registry.py +0 -0
  227. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/models/__init__.py +0 -0
  228. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/models/base.py +0 -0
  229. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/pagination/__init__.py +0 -0
  230. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/pagination/base.py +0 -0
  231. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/plugins/__init__.py +0 -0
  232. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/registry/validation.py +0 -0
  233. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/registry.py +0 -0
  234. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/schemas/__init__.py +0 -0
  235. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/schemas/schema.py +0 -0
  236. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/search_utils.py +0 -0
  237. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/static/css/presets.css +0 -0
  238. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/static/css/tokens.css +0 -0
  239. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/static/css/variables.css +0 -0
  240. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/static/icons/heroicons.svg +0 -0
  241. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/static/js/htmx-config.js +0 -0
  242. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/storage/__init__.py +0 -0
  243. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/macros/icons.html +0 -0
  244. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/macros/widgets.html +0 -0
  245. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/2fa/setup.html +0 -0
  246. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/2fa/verify.html +0 -0
  247. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/403.html +0 -0
  248. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/audit_detail.html +0 -0
  249. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/audit_log.html +0 -0
  250. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/dashboard.html +0 -0
  251. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/login.html +0 -0
  252. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/profile/password.html +0 -0
  253. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/profile/profile.html +0 -0
  254. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/role_form.html +0 -0
  255. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/roles/list.html +0 -0
  256. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/roles.html +0 -0
  257. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/search.html +0 -0
  258. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/settings/theme.html +0 -0
  259. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/pages/users/list.html +0 -0
  260. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/command_palette.html +0 -0
  261. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/field_wrapper.html +0 -0
  262. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/flash_messages.html +0 -0
  263. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/head.html +0 -0
  264. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/head_minimal.html +0 -0
  265. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/inline_edit_form.html +0 -0
  266. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/mobile_backdrop.html +0 -0
  267. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/pagination.html +0 -0
  268. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/scripts.html +0 -0
  269. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/templates/partials/sidebar.html +0 -0
  270. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/types.py +0 -0
  271. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/ui/__init__.py +0 -0
  272. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/ui/types.py +0 -0
  273. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/__init__.py +0 -0
  274. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/bulk.py +0 -0
  275. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/delete.py +0 -0
  276. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/extra.py +0 -0
  277. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/factory.py +0 -0
  278. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/list.py +0 -0
  279. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/views/search.py +0 -0
  280. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/widgets/__init__.py +0 -0
  281. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/widgets/base.py +0 -0
  282. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/widgets/inputs.py +0 -0
  283. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/widgets/registry.py +0 -0
  284. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/widgets/relation.py +0 -0
  285. {fastapi_admin_kit-0.3.2 → fastapi_admin_kit-0.5.0}/fastapi_admin_kit/widgets/resolver.py +0 -0
@@ -0,0 +1,127 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Robust Django-style filtering system
12
+ ([#52](https://github.com/borhanst/fastapi-admin-kit/issues/52)):
13
+ - New lookup types for the JSON API and admin UI list views:
14
+ `icontains`, `startswith`, `endswith`, `gt`, `gte`, `lt`, `lte`,
15
+ `range`, and `in` — in addition to exact matches.
16
+ - New `ChoiceFilter` for relation/FK fields (auto-detected in
17
+ `FilterRegistry.auto_generate()`), plus `IntegerFilter` with full
18
+ numeric lookups.
19
+ - Admin UI now renders text-input filters (case-insensitive contains)
20
+ and min/max inputs for numeric fields.
21
+ - Filters are ORM-agnostic: `QueryBackend` gained an `and_` combinator
22
+ and the in-memory backend now handles `%`-anchored `ilike` patterns.
23
+ - `Admin.setup()` now logs a non-blocking preflight warning naming any missing
24
+ `admin_ai_*` tables (with the command to fix them) when `ai_enabled=True`
25
+ but the schema is absent (Alembic / `SKIP_CREATE_TABLES=true` mode).
26
+ - `fastapi_admin_kit.schemas.builtin.AI_TABLE_NAMES` and
27
+ `INTERNAL_TABLE_NAMES` constants for gating/identification.
28
+ - `AdminRegistry.auto_discover(exclude_tables=...)` accepts a set of table
29
+ names to skip during discovery.
30
+
31
+ ### Changed
32
+ - **AI is now gated behind `ai_enabled` (default `False`).** When AI is
33
+ disabled, the `admin_ai_*` tables are not created, and the AI models, nav
34
+ group, and routes are not registered in the admin UI or the JSON API.
35
+ Notifications, auth, roles, audit, and login-attempt models are unaffected.
36
+ - Internal tables (`admin_refresh_tokens`, `admin_user_permissions`,
37
+ `admin_user_totp`, `admin_ai_attachments`) are no longer exposed over the
38
+ JSON API (previously a latent security hole). They remain hidden from the
39
+ sidebar.
40
+
41
+ ## [0.3.2] - 2026-07-31
42
+
43
+ ### Changed
44
+ - Added Alembic database migrations so schema changes can be versioned and
45
+ applied incrementally instead of relying solely on auto-create
46
+ ([#39](https://github.com/borhanst/fastapi-admin-kit/pull/39)).
47
+
48
+ ## [0.3.1] - 2026-07-29
49
+
50
+ ### Added
51
+ - CSV export and import support for models, enabling bulk data download and
52
+ upload from the admin UI
53
+ ([#38](https://github.com/borhanst/fastapi-admin-kit/pull/38)).
54
+
55
+ ## [0.3.0] - 2026-07-28
56
+
57
+ ### Added
58
+ - Per-model permission updates and refinements to the RBAC model
59
+ ([#20](https://github.com/borhanst/fastapi-admin-kit/pull/20)).
60
+ - Inline formset support for `ModelAdmin`, allowing related records to be
61
+ edited on the same page
62
+ ([#21](https://github.com/borhanst/fastapi-admin-kit/pull/21)).
63
+ - Adapter registration wired directly into `Admin`
64
+ ([#35](https://github.com/borhanst/fastapi-admin-kit/pull/35)).
65
+ - Schema-first + protocol hybrid approach for built-in admin models
66
+ ([#34](https://github.com/borhanst/fastapi-admin-kit/pull/34)).
67
+
68
+ ### Changed
69
+ - Decoupled `DefaultQueryProvider`, `search_utils`, and the `Filter` classes
70
+ from SQLAlchemy, improving backend portability
71
+ ([#33](https://github.com/borhanst/fastapi-admin-kit/pull/33)).
72
+
73
+ ### Fixed
74
+ - Assorted bug fixes and stability improvements
75
+ ([#36](https://github.com/borhanst/fastapi-admin-kit/pull/36)).
76
+
77
+ ## [0.2.1] - 2026-07-21
78
+
79
+ ### Fixed
80
+ - Corrected a user-permission model bug and adjusted how permissions are
81
+ stored and evaluated
82
+ ([#19](https://github.com/borhanst/fastapi-admin-kit/pull/19)).
83
+
84
+ ## [0.2.0] - 2026-07-13
85
+
86
+ ### Added
87
+ - Authentication subsystem with session-based login, logout, and protected
88
+ routes ([#14](https://github.com/borhanst/fastapi-admin-kit/pull/14)).
89
+
90
+ ### Fixed
91
+ - Resolved a documentation build failure
92
+ ([#15](https://github.com/borhanst/fastapi-admin-kit/pull/15)).
93
+
94
+ ## [0.1.2] - 2026-07-09
95
+
96
+ ### Added
97
+ - CLI commands for project scaffolding and user management
98
+ ([#10](https://github.com/borhanst/fastapi-admin-kit/pull/10)).
99
+
100
+ ### Fixed
101
+ - Added support for UUID primary keys on models
102
+ ([#12](https://github.com/borhanst/fastapi-admin-kit/pull/12)).
103
+
104
+ ## [0.1.1] - 2026-07-09
105
+
106
+ ### Added
107
+ - Database configuration and connection handling
108
+ ([#1](https://github.com/borhanst/fastapi-admin-kit/pull/1)).
109
+ - Inline editing — edit records directly from the list view
110
+ ([#9](https://github.com/borhanst/fastapi-admin-kit/pull/9)).
111
+
112
+ ### Changed
113
+ - Renamed the CLI from `fastapi-admin-kit` to `fak-admin`
114
+ ([#3](https://github.com/borhanst/fastapi-admin-kit/pull/3)).
115
+
116
+ ### Fixed
117
+ - Use `StrEnum` for `DatabaseType` for safer, string-compatible enums
118
+ ([#4](https://github.com/borhanst/fastapi-admin-kit/pull/4)).
119
+ - Updated emoji configuration in the markdown extensions
120
+ ([#5](https://github.com/borhanst/fastapi-admin-kit/pull/5)).
121
+
122
+ ## [0.1.0] - 2026-07-08
123
+
124
+ ### Added
125
+ - Initial release of FastAPI Admin Kit: a drop-in admin panel for FastAPI +
126
+ SQLAlchemy + SQLModel applications with auto-discovery, RBAC, audit logging,
127
+ and a modern UI.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: fastapi-admin-kit
3
- Version: 0.3.2
3
+ Version: 0.5.0
4
4
  Summary: Drop-in admin panel for FastAPI + SQLAlchemy + SQLModel apps
5
5
  Project-URL: Homepage, https://github.com/borhanst/fastapi-admin-kit
6
6
  Project-URL: Documentation, https://borhanst.github.io/fastapi-admin-kit/
@@ -31,9 +31,15 @@ Requires-Dist: jinja2>=3.1.0
31
31
  Requires-Dist: pre-commit>=4.6.0
32
32
  Requires-Dist: python-multipart>=0.0.9
33
33
  Requires-Dist: sqlalchemy>=2.0.0
34
+ Provides-Extra: ai
35
+ Requires-Dist: pydantic-ai[groq]>=2.0.0; extra == 'ai'
36
+ Provides-Extra: ai-gemini
37
+ Requires-Dist: google-genai>=1.0.0; extra == 'ai-gemini'
38
+ Requires-Dist: pydantic-ai>=2.0.0; extra == 'ai-gemini'
34
39
  Provides-Extra: alembic
35
40
  Requires-Dist: alembic>=1.13.0; extra == 'alembic'
36
41
  Provides-Extra: dev
42
+ Requires-Dist: fakeredis>=2.26.0; extra == 'dev'
37
43
  Requires-Dist: hatch>=1.13.0; extra == 'dev'
38
44
  Requires-Dist: httpx>=0.27.0; extra == 'dev'
39
45
  Requires-Dist: pre-commit>=3.5.0; extra == 'dev'
@@ -53,8 +59,12 @@ Requires-Dist: pyjwt>=2.13.0; extra == 'full'
53
59
  Requires-Dist: uvicorn>=0.30.0; extra == 'full'
54
60
  Provides-Extra: mysql
55
61
  Requires-Dist: aiomysql>=0.2.0; extra == 'mysql'
62
+ Provides-Extra: notifications
63
+ Requires-Dist: twilio>=8.9.0; extra == 'notifications'
56
64
  Provides-Extra: postgres
57
65
  Requires-Dist: asyncpg>=0.29.0; extra == 'postgres'
66
+ Provides-Extra: redis
67
+ Requires-Dist: fastapi-redis-sdk>=0.8.0; extra == 'redis'
58
68
  Provides-Extra: sqlmodel
59
69
  Requires-Dist: sqlmodel>=0.0.39; extra == 'sqlmodel'
60
70
  Description-Content-Type: text/markdown
@@ -66,7 +76,7 @@ Description-Content-Type: text/markdown
66
76
  [![License](https://img.shields.io/pypi/l/fastapi-admin-kit.svg)](https://github.com/borhanst/fastapi-admin-kit/blob/main/LICENSE)
67
77
  [![Tests](https://github.com/borhanst/fastapi-admin-kit/actions/workflows/tests.yml/badge.svg)](https://github.com/borhanst/fastapi-admin-kit/actions/workflows/tests.yml)
68
78
 
69
- A drop-in admin panel for FastAPI + SQLAlchemy + SQLModel apps, inspired by Django Unfold.
79
+ A drop-in admin panel for FastAPI + SQLAlchemy + SQLModel apps, inspired by Django Admin.
70
80
 
71
81
  ![FastAPI Admin Kit Dashboard](docs/assets/images/admin-dashboard.png)
72
82
 
@@ -84,7 +94,7 @@ A drop-in admin panel for FastAPI + SQLAlchemy + SQLModel apps, inspired by Djan
84
94
  - **17 Built-in Widgets** — TextInput, Toggle, DatePicker, FileUpload, Wysiwyg, and more
85
95
  - **Inline Editing** — Edit records directly from list view with 3-dot action menu
86
96
  - **Command Palette** — `Cmd+K` / `Ctrl+K` global search across models and fields
87
- - **JSON API** — REST endpoints with JWT token auth for external frontends
97
+ <!--- **JSON API** — REST endpoints with JWT token auth for external frontends-->
88
98
  - **Dashboard** — Configurable stat cards, charts, tables, and progress bars
89
99
  - **CLI Tools** — `fak-admin` / `fak` for superuser management and project scaffolding
90
100
  - **Pagination** — Offset, cursor, or dynamic strategies per model
@@ -248,7 +258,6 @@ All commands accept `-d DATABASE_URL` or read the `DATABASE_URL` environment var
248
258
 
249
259
  ```python
250
260
  from fastapi_admin_kit import Admin
251
- from fastapi_admin_kit.config import ThemeConfig
252
261
 
253
262
  admin = Admin(
254
263
  app=app,
@@ -257,7 +266,6 @@ admin = Admin(
257
266
  secret_key=SECRET_KEY,
258
267
  title="My Admin", # Admin panel title
259
268
  admin_path="/admin", # URL prefix
260
- dark_mode_default=False, # Dark mode on by default
261
269
  # Auth
262
270
  auth_backend=BuiltinAuthBackend(),
263
271
  # Environment badge
@@ -5,7 +5,7 @@
5
5
  [![License](https://img.shields.io/pypi/l/fastapi-admin-kit.svg)](https://github.com/borhanst/fastapi-admin-kit/blob/main/LICENSE)
6
6
  [![Tests](https://github.com/borhanst/fastapi-admin-kit/actions/workflows/tests.yml/badge.svg)](https://github.com/borhanst/fastapi-admin-kit/actions/workflows/tests.yml)
7
7
 
8
- A drop-in admin panel for FastAPI + SQLAlchemy + SQLModel apps, inspired by Django Unfold.
8
+ A drop-in admin panel for FastAPI + SQLAlchemy + SQLModel apps, inspired by Django Admin.
9
9
 
10
10
  ![FastAPI Admin Kit Dashboard](docs/assets/images/admin-dashboard.png)
11
11
 
@@ -23,7 +23,7 @@ A drop-in admin panel for FastAPI + SQLAlchemy + SQLModel apps, inspired by Djan
23
23
  - **17 Built-in Widgets** — TextInput, Toggle, DatePicker, FileUpload, Wysiwyg, and more
24
24
  - **Inline Editing** — Edit records directly from list view with 3-dot action menu
25
25
  - **Command Palette** — `Cmd+K` / `Ctrl+K` global search across models and fields
26
- - **JSON API** — REST endpoints with JWT token auth for external frontends
26
+ <!--- **JSON API** — REST endpoints with JWT token auth for external frontends-->
27
27
  - **Dashboard** — Configurable stat cards, charts, tables, and progress bars
28
28
  - **CLI Tools** — `fak-admin` / `fak` for superuser management and project scaffolding
29
29
  - **Pagination** — Offset, cursor, or dynamic strategies per model
@@ -187,7 +187,6 @@ All commands accept `-d DATABASE_URL` or read the `DATABASE_URL` environment var
187
187
 
188
188
  ```python
189
189
  from fastapi_admin_kit import Admin
190
- from fastapi_admin_kit.config import ThemeConfig
191
190
 
192
191
  admin = Admin(
193
192
  app=app,
@@ -196,7 +195,6 @@ admin = Admin(
196
195
  secret_key=SECRET_KEY,
197
196
  title="My Admin", # Admin panel title
198
197
  admin_path="/admin", # URL prefix
199
- dark_mode_default=False, # Dark mode on by default
200
198
  # Auth
201
199
  auth_backend=BuiltinAuthBackend(),
202
200
  # Environment badge
@@ -0,0 +1,32 @@
1
+ # Security Policy
2
+
3
+ ## Reporting Security Issues
4
+
5
+ **DO NOT report security vulnerabilities via public GitHub issues.**
6
+
7
+ Instead, please report them by emailing security@fastapi-admin-kit.com with:
8
+
9
+ - A detailed description of the vulnerability
10
+ - Steps to reproduce the issue
11
+ - Potential impact and affected versions
12
+ - Any proof-of-concept code (if applicable)
13
+
14
+ ## What to Include
15
+
16
+ Please include the following in your report:
17
+
18
+ 1. **Vulnerability type** (e.g., XSS, SQL injection, authentication bypass, etc.)
19
+ 2. **Affected components** or endpoints
20
+ 3. **Steps to reproduce**
21
+ 4. **Expected vs. actual behavior**
22
+ 5. **Environment details** (OS, Python version, framework version)
23
+ 6. **Suggested fix** (optional but appreciated)
24
+
25
+
26
+ ## Security Policy
27
+
28
+ This project follows responsible disclosure. We will:
29
+
30
+ - Credit reporters in the release notes (unless requested otherwise)
31
+ - Fix security issues in a timely manner
32
+ - Publish security advisories via the GitHub Security tab
@@ -0,0 +1,28 @@
1
+ {# custom_templates/admin/list.html — GLOBAL list-view override.
2
+ Extends the built-in admin/base_list.html and replaces the page header with a
3
+ custom banner. Because this template lives in a custom template dir that is
4
+ prepended ahead of the built-ins, it wins over the default admin/list.html
5
+ for every registered model that doesn't provide its own per-model override.
6
+
7
+ To target a single model instead, name the file admin/<table>/list.html (see
8
+ the Product example in example/custom_templates/admin/products/list.html).
9
+ #}
10
+ {% extends "admin/base_list.html" %}
11
+
12
+ {% block list_header %}
13
+ <div class="page-header" style="border: 2px dashed #6366F1; border-radius: 0.75rem; padding: 1rem;">
14
+ <div class="page-header-left">
15
+ <h1 class="page-header-title">{{ registered.verbose_name_plural }}</h1>
16
+ <p class="page-header-subtitle">
17
+ &#10003; Custom template dir override applied — built-in header replaced.
18
+ </p>
19
+ </div>
20
+ <div class="page-header-right" style="display: flex; gap: 0.5rem; align-items: center;">
21
+ {% if permissions.can_create %}
22
+ <a href="{{ admin_path | default('/admin') }}/{{ registered.table_name }}/create" class="btn btn-primary">
23
+ + New {{ registered.verbose_name }}
24
+ </a>
25
+ {% endif %}
26
+ </div>
27
+ </div>
28
+ {% endblock %}
@@ -0,0 +1,27 @@
1
+ {# custom_templates/admin/products/list.html — PER-MODEL list-view override.
2
+ Only applies to the Product model (table "products"). It takes priority over
3
+ the global admin/list.html and the built-in default.
4
+
5
+ Template resolution order (first match wins):
6
+ 1. Explicit admin.list_template
7
+ 2. admin/<table>/list.html <- this file
8
+ 3. admin/list.html <- global override
9
+ 4. pages/list.html <- built-in default
10
+ #}
11
+ {% extends "admin/base_list.html" %}
12
+
13
+ {% block list_header %}
14
+ <div class="page-header" style="border: 2px solid #10B981; border-radius: 0.75rem; padding: 1rem;">
15
+ <div class="page-header-left">
16
+ <h1 class="page-header-title">&#128230; PRODUCT CATALOG (custom template)</h1>
17
+ <p class="page-header-subtitle">This header comes from a per-model template: admin/products/list.html</p>
18
+ </div>
19
+ <div class="page-header-right" style="display: flex; gap: 0.5rem; align-items: center;">
20
+ {% if permissions.can_create %}
21
+ <a href="{{ admin_path | default('/admin') }}/{{ registered.table_name }}/create" class="btn btn-primary">
22
+ + New {{ registered.verbose_name }}
23
+ </a>
24
+ {% endif %}
25
+ </div>
26
+ </div>
27
+ {% endblock %}