obox-builder 1.0.2__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.
- obox_builder-1.0.2/.gitignore +32 -0
- obox_builder-1.0.2/LICENSE +21 -0
- obox_builder-1.0.2/PKG-INFO +182 -0
- obox_builder-1.0.2/README.md +136 -0
- obox_builder-1.0.2/obox_builder/__init__.py +155 -0
- obox_builder-1.0.2/obox_builder/actions.py +425 -0
- obox_builder-1.0.2/obox_builder/auth/__init__.py +20 -0
- obox_builder-1.0.2/obox_builder/auth/base.py +195 -0
- obox_builder-1.0.2/obox_builder/auth/oauth.py +146 -0
- obox_builder-1.0.2/obox_builder/auth/password.py +193 -0
- obox_builder-1.0.2/obox_builder/base.py +2527 -0
- obox_builder-1.0.2/obox_builder/contrib/__init__.py +0 -0
- obox_builder-1.0.2/obox_builder/contrib/beanie/__init__.py +9 -0
- obox_builder-1.0.2/obox_builder/contrib/beanie/admin.py +5 -0
- obox_builder-1.0.2/obox_builder/contrib/beanie/converters.py +232 -0
- obox_builder-1.0.2/obox_builder/contrib/beanie/fields.py +15 -0
- obox_builder-1.0.2/obox_builder/contrib/beanie/filters.py +559 -0
- obox_builder-1.0.2/obox_builder/contrib/beanie/helpers.py +186 -0
- obox_builder-1.0.2/obox_builder/contrib/beanie/view.py +480 -0
- obox_builder-1.0.2/obox_builder/contrib/mongoengine/__init__.py +9 -0
- obox_builder-1.0.2/obox_builder/contrib/mongoengine/admin.py +49 -0
- obox_builder-1.0.2/obox_builder/contrib/mongoengine/converters.py +282 -0
- obox_builder-1.0.2/obox_builder/contrib/mongoengine/exceptions.py +5 -0
- obox_builder-1.0.2/obox_builder/contrib/mongoengine/fields.py +87 -0
- obox_builder-1.0.2/obox_builder/contrib/mongoengine/filters.py +542 -0
- obox_builder-1.0.2/obox_builder/contrib/mongoengine/helpers.py +105 -0
- obox_builder-1.0.2/obox_builder/contrib/mongoengine/view.py +587 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/__init__.py +9 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/admin.py +146 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/converters.py +535 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/exceptions.py +17 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/ext/__init__.py +0 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/ext/pydantic.py +63 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/fields.py +106 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/filters.py +451 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/helpers.py +80 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/middleware.py +154 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/types.py +7 -0
- obox_builder-1.0.2/obox_builder/contrib/sqla/view.py +1034 -0
- obox_builder-1.0.2/obox_builder/contrib/sqlmodel/__init__.py +9 -0
- obox_builder-1.0.2/obox_builder/contrib/sqlmodel/admin.py +5 -0
- obox_builder-1.0.2/obox_builder/contrib/sqlmodel/view.py +136 -0
- obox_builder-1.0.2/obox_builder/contrib/tortoise/__init__.py +9 -0
- obox_builder-1.0.2/obox_builder/contrib/tortoise/admin.py +5 -0
- obox_builder-1.0.2/obox_builder/contrib/tortoise/converters.py +208 -0
- obox_builder-1.0.2/obox_builder/contrib/tortoise/exceptions.py +9 -0
- obox_builder-1.0.2/obox_builder/contrib/tortoise/fields.py +12 -0
- obox_builder-1.0.2/obox_builder/contrib/tortoise/filters.py +494 -0
- obox_builder-1.0.2/obox_builder/contrib/tortoise/helpers.py +54 -0
- obox_builder-1.0.2/obox_builder/contrib/tortoise/view.py +538 -0
- obox_builder-1.0.2/obox_builder/converters.py +268 -0
- obox_builder-1.0.2/obox_builder/cookies.py +47 -0
- obox_builder-1.0.2/obox_builder/events.py +455 -0
- obox_builder-1.0.2/obox_builder/exceptions.py +47 -0
- obox_builder-1.0.2/obox_builder/export/__init__.py +108 -0
- obox_builder-1.0.2/obox_builder/export/base.py +491 -0
- obox_builder-1.0.2/obox_builder/export/csv.py +65 -0
- obox_builder-1.0.2/obox_builder/export/helpers.py +107 -0
- obox_builder-1.0.2/obox_builder/export/json.py +26 -0
- obox_builder-1.0.2/obox_builder/export/pdf.py +111 -0
- obox_builder-1.0.2/obox_builder/export/tablib.py +89 -0
- obox_builder-1.0.2/obox_builder/fields.py +2768 -0
- obox_builder-1.0.2/obox_builder/filters/__init__.py +35 -0
- obox_builder-1.0.2/obox_builder/filters/array.py +67 -0
- obox_builder-1.0.2/obox_builder/filters/base.py +166 -0
- obox_builder-1.0.2/obox_builder/filters/boolean.py +22 -0
- obox_builder-1.0.2/obox_builder/filters/date.py +136 -0
- obox_builder-1.0.2/obox_builder/filters/enum.py +49 -0
- obox_builder-1.0.2/obox_builder/filters/generic.py +42 -0
- obox_builder-1.0.2/obox_builder/filters/numeric.py +106 -0
- obox_builder-1.0.2/obox_builder/filters/registry.py +126 -0
- obox_builder-1.0.2/obox_builder/filters/string.py +36 -0
- obox_builder-1.0.2/obox_builder/flash.py +123 -0
- obox_builder-1.0.2/obox_builder/helpers.py +617 -0
- obox_builder-1.0.2/obox_builder/i18n.py +333 -0
- obox_builder-1.0.2/obox_builder/importers/__init__.py +88 -0
- obox_builder-1.0.2/obox_builder/importers/base.py +142 -0
- obox_builder-1.0.2/obox_builder/importers/csv.py +49 -0
- obox_builder-1.0.2/obox_builder/importers/json.py +29 -0
- obox_builder-1.0.2/obox_builder/importers/tablib.py +61 -0
- obox_builder-1.0.2/obox_builder/logging.py +94 -0
- obox_builder-1.0.2/obox_builder/plugins.py +146 -0
- obox_builder-1.0.2/obox_builder/py.typed +0 -0
- obox_builder-1.0.2/obox_builder/routing.py +41 -0
- obox_builder-1.0.2/obox_builder/security/__init__.py +3 -0
- obox_builder-1.0.2/obox_builder/security/csrf.py +144 -0
- obox_builder-1.0.2/obox_builder/static/css/inline-edit.css +126 -0
- obox_builder-1.0.2/obox_builder/static/css/jsoneditor_overrides.css +9 -0
- obox_builder-1.0.2/obox_builder/static/css/panel_widget.css +10 -0
- obox_builder-1.0.2/obox_builder/static/css/select2-tabler.css +125 -0
- obox_builder-1.0.2/obox_builder/static/css/vendor/flatpickr.min.css +13 -0
- obox_builder-1.0.2/obox_builder/static/css/vendor/fontawesome.min.css +9 -0
- obox_builder-1.0.2/obox_builder/static/css/vendor/img/jsoneditor-icons.svg +749 -0
- obox_builder-1.0.2/obox_builder/static/css/vendor/jquery.json-viewer.css +8 -0
- obox_builder-1.0.2/obox_builder/static/css/vendor/jsoneditor.min.css +6 -0
- obox_builder-1.0.2/obox_builder/static/css/vendor/select2.min.css +1 -0
- obox_builder-1.0.2/obox_builder/static/css/vendor/tabler-theme.min.css +7 -0
- obox_builder-1.0.2/obox_builder/static/css/vendor/tabler.min.css +8 -0
- obox_builder-1.0.2/obox_builder/static/i18n/flatpickr/de.js +7 -0
- obox_builder-1.0.2/obox_builder/static/i18n/flatpickr/fr.js +7 -0
- obox_builder-1.0.2/obox_builder/static/i18n/flatpickr/pt.js +7 -0
- obox_builder-1.0.2/obox_builder/static/i18n/flatpickr/ru.js +7 -0
- obox_builder-1.0.2/obox_builder/static/i18n/flatpickr/tr.js +7 -0
- obox_builder-1.0.2/obox_builder/static/i18n/flatpickr/zh.js +7 -0
- obox_builder-1.0.2/obox_builder/static/js/actions.js +204 -0
- obox_builder-1.0.2/obox_builder/static/js/alerts.js +63 -0
- obox_builder-1.0.2/obox_builder/static/js/chart_widget.js +16 -0
- obox_builder-1.0.2/obox_builder/static/js/detail.js +1 -0
- obox_builder-1.0.2/obox_builder/static/js/filter-builder.js +519 -0
- obox_builder-1.0.2/obox_builder/static/js/form.js +330 -0
- obox_builder-1.0.2/obox_builder/static/js/import.js +379 -0
- obox_builder-1.0.2/obox_builder/static/js/list.js +606 -0
- obox_builder-1.0.2/obox_builder/static/js/sa-dom.js +42 -0
- obox_builder-1.0.2/obox_builder/static/js/stat_widget.js +39 -0
- obox_builder-1.0.2/obox_builder/static/js/tabs_widget.js +23 -0
- obox_builder-1.0.2/obox_builder/static/js/utils.js +60 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/apexcharts.min.js +5 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/countUp.umd.js +1 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/flatpickr.min.js +2 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/fslightbox.js +1 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/jquery.json-viewer.js +8 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/jquery.min.js +2 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/js.cookie.min.js +2 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/jsoneditor.min.js +49 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/select2.min.js +2 -0
- obox_builder-1.0.2/obox_builder/static/js/vendor/tabler.min.js +12 -0
- obox_builder-1.0.2/obox_builder/static/webfonts/fa-brands-400.woff2 +0 -0
- obox_builder-1.0.2/obox_builder/static/webfonts/fa-regular-400.woff2 +0 -0
- obox_builder-1.0.2/obox_builder/static/webfonts/fa-solid-900.woff2 +0 -0
- obox_builder-1.0.2/obox_builder/static/webfonts/fa-v4compatibility.woff2 +0 -0
- obox_builder-1.0.2/obox_builder/storage/__init__.py +23 -0
- obox_builder-1.0.2/obox_builder/storage/base.py +225 -0
- obox_builder-1.0.2/obox_builder/storage/local.py +104 -0
- obox_builder-1.0.2/obox_builder/storage/s3.py +199 -0
- obox_builder-1.0.2/obox_builder/templates/_column_header.html +51 -0
- obox_builder-1.0.2/obox_builder/templates/_filter_bar.html +20 -0
- obox_builder-1.0.2/obox_builder/templates/_filter_builder.html +142 -0
- obox_builder-1.0.2/obox_builder/templates/_form_footer.html +18 -0
- obox_builder-1.0.2/obox_builder/templates/_list_row.html +53 -0
- obox_builder-1.0.2/obox_builder/templates/_pagination.html +85 -0
- obox_builder-1.0.2/obox_builder/templates/_sa_templates.html +20 -0
- obox_builder-1.0.2/obox_builder/templates/actions/export_form.html +64 -0
- obox_builder-1.0.2/obox_builder/templates/actions.html +43 -0
- obox_builder-1.0.2/obox_builder/templates/base.html +158 -0
- obox_builder-1.0.2/obox_builder/templates/create.html +71 -0
- obox_builder-1.0.2/obox_builder/templates/detail.html +175 -0
- obox_builder-1.0.2/obox_builder/templates/edit.html +71 -0
- obox_builder-1.0.2/obox_builder/templates/error.html +35 -0
- obox_builder-1.0.2/obox_builder/templates/fields/_copy_button.html +9 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/_empty.html +2 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/_null.html +2 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/boolean.html +9 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/collection.html +16 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/color.html +9 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/email.html +9 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/file.html +8 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/image.html +14 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/json.html +7 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/list.html +7 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/relation.html +5 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/tags.html +7 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/text.html +9 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/textarea.html +11 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/tinymce.html +1 -0
- obox_builder-1.0.2/obox_builder/templates/fields/detail/url.html +9 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/_delete.html +14 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/_error.html +3 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/_label.html +2 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/boolean.html +13 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/collection.html +14 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/computed.html +4 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/enum.html +22 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/file.html +18 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/image.html +15 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/input.html +26 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/json.html +10 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/list.html +48 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/relation.html +18 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/slug.html +23 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/tags.html +16 -0
- obox_builder-1.0.2/obox_builder/templates/fields/form/textarea.html +9 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/_truncated.html +8 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/boolean.html +12 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/collection.html +7 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/color.html +22 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/email.html +20 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/file.html +12 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/image.html +8 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/json.html +8 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/list.html +9 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/relation.html +8 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/tags.html +8 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/text.html +14 -0
- obox_builder-1.0.2/obox_builder/templates/fields/list/url.html +20 -0
- obox_builder-1.0.2/obox_builder/templates/index.html +16 -0
- obox_builder-1.0.2/obox_builder/templates/inline-edit/field.html +11 -0
- obox_builder-1.0.2/obox_builder/templates/inline-edit/popover.html +15 -0
- obox_builder-1.0.2/obox_builder/templates/inline-edit/popover_body.html +43 -0
- obox_builder-1.0.2/obox_builder/templates/inline.html +38 -0
- obox_builder-1.0.2/obox_builder/templates/inline_detail.html +47 -0
- obox_builder-1.0.2/obox_builder/templates/inline_row.html +34 -0
- obox_builder-1.0.2/obox_builder/templates/layout.html +243 -0
- obox_builder-1.0.2/obox_builder/templates/list.html +284 -0
- obox_builder-1.0.2/obox_builder/templates/login.html +151 -0
- obox_builder-1.0.2/obox_builder/templates/macros/views.html +76 -0
- obox_builder-1.0.2/obox_builder/templates/modals/actions.html +37 -0
- obox_builder-1.0.2/obox_builder/templates/modals/import.html +232 -0
- obox_builder-1.0.2/obox_builder/templates/modals/loading.html +18 -0
- obox_builder-1.0.2/obox_builder/templates/row-actions.html +110 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/card_row_widget.html +5 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/chart_widget.html +15 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/column_widget.html +5 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/divider_widget.html +1 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/fieldset_widget.html +4 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/form_field_widget.html +8 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/grid_widget.html +5 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/html_widget.html +1 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/panel_widget.html +18 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/row_widget.html +5 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/stat_widget.html +36 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/table_widget.html +33 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/tabs_widget.html +28 -0
- obox_builder-1.0.2/obox_builder/templates/widgets/text_widget.html +7 -0
- obox_builder-1.0.2/obox_builder/theme.py +346 -0
- obox_builder-1.0.2/obox_builder/tools/__init__.py +7 -0
- obox_builder-1.0.2/obox_builder/tools/iter.py +51 -0
- obox_builder-1.0.2/obox_builder/translations/de/LC_MESSAGES/admin.mo +0 -0
- obox_builder-1.0.2/obox_builder/translations/de/LC_MESSAGES/admin.po +995 -0
- obox_builder-1.0.2/obox_builder/translations/en/LC_MESSAGES/admin.mo +0 -0
- obox_builder-1.0.2/obox_builder/translations/en/LC_MESSAGES/admin.po +1011 -0
- obox_builder-1.0.2/obox_builder/translations/fr/LC_MESSAGES/admin.mo +0 -0
- obox_builder-1.0.2/obox_builder/translations/fr/LC_MESSAGES/admin.po +1004 -0
- obox_builder-1.0.2/obox_builder/translations/pt/LC_MESSAGES/admin.mo +0 -0
- obox_builder-1.0.2/obox_builder/translations/pt/LC_MESSAGES/admin.po +990 -0
- obox_builder-1.0.2/obox_builder/translations/ru/LC_MESSAGES/admin.mo +0 -0
- obox_builder-1.0.2/obox_builder/translations/ru/LC_MESSAGES/admin.po +989 -0
- obox_builder-1.0.2/obox_builder/translations/tr/LC_MESSAGES/admin.mo +0 -0
- obox_builder-1.0.2/obox_builder/translations/tr/LC_MESSAGES/admin.po +985 -0
- obox_builder-1.0.2/obox_builder/translations/zh/LC_MESSAGES/admin.mo +0 -0
- obox_builder-1.0.2/obox_builder/translations/zh/LC_MESSAGES/admin.po +976 -0
- obox_builder-1.0.2/obox_builder/translations/zh_Hant/LC_MESSAGES/admin.mo +0 -0
- obox_builder-1.0.2/obox_builder/translations/zh_Hant/LC_MESSAGES/admin.po +976 -0
- obox_builder-1.0.2/obox_builder/types.py +141 -0
- obox_builder-1.0.2/obox_builder/utils/__init__.py +0 -0
- obox_builder-1.0.2/obox_builder/utils/countries.py +251 -0
- obox_builder-1.0.2/obox_builder/utils/timezones.py +436 -0
- obox_builder-1.0.2/obox_builder/validators.py +728 -0
- obox_builder-1.0.2/obox_builder/views.py +3329 -0
- obox_builder-1.0.2/obox_builder/widgets.py +809 -0
- obox_builder-1.0.2/pyproject.toml +269 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
*.pyc
|
|
2
|
+
env*
|
|
3
|
+
.mypy_cache
|
|
4
|
+
.vscode
|
|
5
|
+
.idea
|
|
6
|
+
.venv
|
|
7
|
+
poetry.lock
|
|
8
|
+
dist
|
|
9
|
+
htmlcov
|
|
10
|
+
*.egg-info
|
|
11
|
+
.coverage*
|
|
12
|
+
coverage.xml
|
|
13
|
+
site
|
|
14
|
+
*.db
|
|
15
|
+
*.db-wal
|
|
16
|
+
*.db-shm
|
|
17
|
+
*.sqlite
|
|
18
|
+
.cache
|
|
19
|
+
__pycache__/
|
|
20
|
+
.pytest_cache/
|
|
21
|
+
upload*/
|
|
22
|
+
CLAUDE.md
|
|
23
|
+
.DS_Store
|
|
24
|
+
|
|
25
|
+
docs/locales/*/content/assets/
|
|
26
|
+
docs/locales/*/content/javascripts/
|
|
27
|
+
docs/locales/*/content/stylesheets/
|
|
28
|
+
docs/locales/*/content/changelog.md
|
|
29
|
+
docs/locales/*/content/community.md
|
|
30
|
+
docs/locales/*/content/blog/.authors.yml
|
|
31
|
+
|
|
32
|
+
zensical.*.toml
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Jocelin Hounon
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: obox-builder
|
|
3
|
+
Version: 1.0.2
|
|
4
|
+
Summary: Fast, beautiful and extensible administrative interface framework for FastAPI & Starlette applications
|
|
5
|
+
Project-URL: Homepage, https://github.com/vinhgiga/obox-builder
|
|
6
|
+
Project-URL: Documentation, https://vinhgiga.github.io/obox-builder
|
|
7
|
+
Project-URL: Repository, https://github.com/vinhgiga/obox-builder
|
|
8
|
+
Project-URL: Changelog, https://vinhgiga.github.io/obox-builder/changelog/
|
|
9
|
+
Project-URL: Upstream, https://github.com/jowilf/starlette-admin
|
|
10
|
+
Author: vinhgiga
|
|
11
|
+
License-Expression: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: admin,admin-dashboard,admin-panel,asgi,beanie,crud,dashboard,fastapi,mongodb,mongoengine,odm,orm,sqlalchemy,sqlmodel,starlette,tortoise-orm
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Environment :: Web Environment
|
|
16
|
+
Classifier: Framework :: AsyncIO
|
|
17
|
+
Classifier: Framework :: FastAPI
|
|
18
|
+
Classifier: Intended Audience :: Developers
|
|
19
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
20
|
+
Classifier: Operating System :: OS Independent
|
|
21
|
+
Classifier: Programming Language :: Python
|
|
22
|
+
Classifier: Programming Language :: Python :: 3
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
27
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
28
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
|
+
Classifier: Typing :: Typed
|
|
30
|
+
Requires-Python: >=3.11
|
|
31
|
+
Requires-Dist: itsdangerous<2.3.0,>=2.2.0
|
|
32
|
+
Requires-Dist: jinja2<4.0.0,>=3.0.0
|
|
33
|
+
Requires-Dist: python-multipart>=0.0.18
|
|
34
|
+
Requires-Dist: starlette>=0.40.0
|
|
35
|
+
Provides-Extra: email
|
|
36
|
+
Requires-Dist: email-validator>=2.0.0; extra == 'email'
|
|
37
|
+
Provides-Extra: i18n
|
|
38
|
+
Requires-Dist: babel>=2.17.0; extra == 'i18n'
|
|
39
|
+
Provides-Extra: pdf
|
|
40
|
+
Requires-Dist: reportlab>=4.5.1; extra == 'pdf'
|
|
41
|
+
Provides-Extra: s3
|
|
42
|
+
Requires-Dist: aiobotocore>=2.5.0; extra == 's3'
|
|
43
|
+
Provides-Extra: tinymce
|
|
44
|
+
Requires-Dist: nh3>=0.2.14; extra == 'tinymce'
|
|
45
|
+
Description-Content-Type: text/markdown
|
|
46
|
+
|
|
47
|
+
# obox-builder
|
|
48
|
+
|
|
49
|
+
*An extensible administrative interface framework for FastAPI and Starlette applications.*
|
|
50
|
+
|
|
51
|
+
> **obox-builder** is a fork of [starlette-admin](https://github.com/jowilf/starlette-admin), originally created by
|
|
52
|
+
> [Jocelin Hounon](https://github.com/jowilf) and licensed under the MIT License. This fork uses the distribution name
|
|
53
|
+
> `obox-builder` on PyPI and the import package `obox_builder`.
|
|
54
|
+
|
|
55
|
+
<p align="center">
|
|
56
|
+
<a href="https://github.com/vinhgiga/obox-builder/actions/workflows/test.yml">
|
|
57
|
+
<img src="https://github.com/vinhgiga/obox-builder/actions/workflows/test.yml/badge.svg" alt="Tests">
|
|
58
|
+
</a>
|
|
59
|
+
<a href="https://codecov.io/gh/vinhgiga/obox-builder">
|
|
60
|
+
<img src="https://codecov.io/gh/vinhgiga/obox-builder/branch/main/graph/badge.svg" alt="Coverage">
|
|
61
|
+
</a>
|
|
62
|
+
<a href="https://pypi.org/project/obox-builder/">
|
|
63
|
+
<img src="https://badge.fury.io/py/obox-builder.svg" alt="PyPI version">
|
|
64
|
+
</a>
|
|
65
|
+
<a href="https://pypi.org/project/obox-builder/">
|
|
66
|
+
<img src="https://img.shields.io/pypi/pyversions/obox-builder?color=2334D058" alt="Python versions">
|
|
67
|
+
</a>
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
## Installation
|
|
73
|
+
```sh
|
|
74
|
+
# Using uv
|
|
75
|
+
uv add obox-builder
|
|
76
|
+
|
|
77
|
+
# Using pip
|
|
78
|
+
pip install obox-builder
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Quickstart
|
|
82
|
+
|
|
83
|
+
Get a fully functional administrative dashboard up and running in minutes. This example demonstrates an integration with FastAPI and SQLAlchemy.
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
from contextlib import asynccontextmanager
|
|
87
|
+
from datetime import datetime, timezone
|
|
88
|
+
|
|
89
|
+
from fastapi import FastAPI
|
|
90
|
+
from sqlalchemy import create_engine
|
|
91
|
+
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
|
92
|
+
from obox_builder.contrib.sqla import Admin, ModelView
|
|
93
|
+
|
|
94
|
+
engine = create_engine("sqlite:///blog.db", connect_args={"check_same_thread": False})
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class Base(DeclarativeBase):
|
|
98
|
+
pass
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class Post(Base):
|
|
102
|
+
__tablename__ = "posts"
|
|
103
|
+
|
|
104
|
+
id: Mapped[int] = mapped_column(primary_key=True)
|
|
105
|
+
title: Mapped[str]
|
|
106
|
+
content: Mapped[str]
|
|
107
|
+
published: Mapped[bool] = mapped_column(default=False)
|
|
108
|
+
created_at: Mapped[datetime] = mapped_column(
|
|
109
|
+
default=lambda: datetime.now(timezone.utc)
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class PostView(ModelView):
|
|
114
|
+
fields = ["id", "title", "content", "published", "created_at"]
|
|
115
|
+
searchable_fields = ("title", "content")
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@asynccontextmanager
|
|
119
|
+
async def lifespan(app: FastAPI):
|
|
120
|
+
Base.metadata.create_all(engine)
|
|
121
|
+
yield
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
app = FastAPI(lifespan=lifespan)
|
|
125
|
+
admin = Admin(engine, title="Blog Admin", secret_key="change-me")
|
|
126
|
+
admin.add_view(PostView(Post, icon="fa fa-newspaper"))
|
|
127
|
+
admin.mount_to(app)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Run with `fastapi dev` and open [http://127.0.0.1:8000/admin](http://127.0.0.1:8000/admin).
|
|
131
|
+
|
|
132
|
+
## Features
|
|
133
|
+
|
|
134
|
+
- Generated CRUD pages for your models
|
|
135
|
+
- Pagination, sorting, search, and shareable URLs
|
|
136
|
+
- Nested AND/OR filter builder
|
|
137
|
+
- Inline editing for related models
|
|
138
|
+
- Bulk actions and custom row actions
|
|
139
|
+
- CSV, Excel, JSON, and PDF export
|
|
140
|
+
- CSV, JSON and Excel import with dry-run validation
|
|
141
|
+
- Local and S3-compatible file storage (Amazon S3, MinIO, ...)
|
|
142
|
+
- Event hooks before and after CRUD operations
|
|
143
|
+
- Pluggable authentication, storage, fields, actions, and model views
|
|
144
|
+
- Theme customization, dark mode, internationalization, and timezone support
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
## Supported ORMs & Backends
|
|
149
|
+
|
|
150
|
+
`obox-builder` is built to be agnostic. It ships with built-in support for popular ORMs and databases:
|
|
151
|
+
|
|
152
|
+
| Backend | Package Path |
|
|
153
|
+
| --- | --- |
|
|
154
|
+
| **SQLAlchemy** | `obox_builder.contrib.sqla` |
|
|
155
|
+
| **SQLModel** | `obox_builder.contrib.sqlmodel` |
|
|
156
|
+
| **Tortoise ORM** | `obox_builder.contrib.tortoise` |
|
|
157
|
+
| **Beanie (MongoDB)** | `obox_builder.contrib.beanie` |
|
|
158
|
+
| **MongoEngine** | `obox_builder.contrib.mongoengine` |
|
|
159
|
+
| **Custom Data Sources** | Subclass `BaseModelView` |
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Documentation & Resources
|
|
164
|
+
|
|
165
|
+
* **[Full Documentation](https://vinhgiga.github.io/obox-builder)**
|
|
166
|
+
* **[Quickstart Guide](https://vinhgiga.github.io/obox-builder/getting-started/quickstart/)**
|
|
167
|
+
* **[User Guide](https://vinhgiga.github.io/obox-builder/user-guide/views/)** (Covers views, fields, filters, actions, and auth)
|
|
168
|
+
* **[API Reference](https://vinhgiga.github.io/obox-builder/api/admin/)**
|
|
169
|
+
|
|
170
|
+
## Live Demo
|
|
171
|
+
|
|
172
|
+
Explore the upstream interface in action: **[starlette-admin-demo.jowilf.com](https://starlette-admin-demo.jowilf.com/)**
|
|
173
|
+
|
|
174
|
+
## Contributing
|
|
175
|
+
|
|
176
|
+
Contributions are always welcome! Whether it is reporting a bug, discussing improvements, or submitting a pull request, your input helps make this project better.
|
|
177
|
+
|
|
178
|
+
Please review our **[CONTRIBUTING.md](https://github.com/vinhgiga/obox-builder/blob/main/CONTRIBUTING.md)** guidelines before opening a pull request.
|
|
179
|
+
|
|
180
|
+
## License
|
|
181
|
+
|
|
182
|
+
This project is licensed under the **MIT License**.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# obox-builder
|
|
2
|
+
|
|
3
|
+
*An extensible administrative interface framework for FastAPI and Starlette applications.*
|
|
4
|
+
|
|
5
|
+
> **obox-builder** is a fork of [starlette-admin](https://github.com/jowilf/starlette-admin), originally created by
|
|
6
|
+
> [Jocelin Hounon](https://github.com/jowilf) and licensed under the MIT License. This fork uses the distribution name
|
|
7
|
+
> `obox-builder` on PyPI and the import package `obox_builder`.
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://github.com/vinhgiga/obox-builder/actions/workflows/test.yml">
|
|
11
|
+
<img src="https://github.com/vinhgiga/obox-builder/actions/workflows/test.yml/badge.svg" alt="Tests">
|
|
12
|
+
</a>
|
|
13
|
+
<a href="https://codecov.io/gh/vinhgiga/obox-builder">
|
|
14
|
+
<img src="https://codecov.io/gh/vinhgiga/obox-builder/branch/main/graph/badge.svg" alt="Coverage">
|
|
15
|
+
</a>
|
|
16
|
+
<a href="https://pypi.org/project/obox-builder/">
|
|
17
|
+
<img src="https://badge.fury.io/py/obox-builder.svg" alt="PyPI version">
|
|
18
|
+
</a>
|
|
19
|
+
<a href="https://pypi.org/project/obox-builder/">
|
|
20
|
+
<img src="https://img.shields.io/pypi/pyversions/obox-builder?color=2334D058" alt="Python versions">
|
|
21
|
+
</a>
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+

|
|
25
|
+
|
|
26
|
+
## Installation
|
|
27
|
+
```sh
|
|
28
|
+
# Using uv
|
|
29
|
+
uv add obox-builder
|
|
30
|
+
|
|
31
|
+
# Using pip
|
|
32
|
+
pip install obox-builder
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Quickstart
|
|
36
|
+
|
|
37
|
+
Get a fully functional administrative dashboard up and running in minutes. This example demonstrates an integration with FastAPI and SQLAlchemy.
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from contextlib import asynccontextmanager
|
|
41
|
+
from datetime import datetime, timezone
|
|
42
|
+
|
|
43
|
+
from fastapi import FastAPI
|
|
44
|
+
from sqlalchemy import create_engine
|
|
45
|
+
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
|
46
|
+
from obox_builder.contrib.sqla import Admin, ModelView
|
|
47
|
+
|
|
48
|
+
engine = create_engine("sqlite:///blog.db", connect_args={"check_same_thread": False})
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class Base(DeclarativeBase):
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class Post(Base):
|
|
56
|
+
__tablename__ = "posts"
|
|
57
|
+
|
|
58
|
+
id: Mapped[int] = mapped_column(primary_key=True)
|
|
59
|
+
title: Mapped[str]
|
|
60
|
+
content: Mapped[str]
|
|
61
|
+
published: Mapped[bool] = mapped_column(default=False)
|
|
62
|
+
created_at: Mapped[datetime] = mapped_column(
|
|
63
|
+
default=lambda: datetime.now(timezone.utc)
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class PostView(ModelView):
|
|
68
|
+
fields = ["id", "title", "content", "published", "created_at"]
|
|
69
|
+
searchable_fields = ("title", "content")
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@asynccontextmanager
|
|
73
|
+
async def lifespan(app: FastAPI):
|
|
74
|
+
Base.metadata.create_all(engine)
|
|
75
|
+
yield
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
app = FastAPI(lifespan=lifespan)
|
|
79
|
+
admin = Admin(engine, title="Blog Admin", secret_key="change-me")
|
|
80
|
+
admin.add_view(PostView(Post, icon="fa fa-newspaper"))
|
|
81
|
+
admin.mount_to(app)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Run with `fastapi dev` and open [http://127.0.0.1:8000/admin](http://127.0.0.1:8000/admin).
|
|
85
|
+
|
|
86
|
+
## Features
|
|
87
|
+
|
|
88
|
+
- Generated CRUD pages for your models
|
|
89
|
+
- Pagination, sorting, search, and shareable URLs
|
|
90
|
+
- Nested AND/OR filter builder
|
|
91
|
+
- Inline editing for related models
|
|
92
|
+
- Bulk actions and custom row actions
|
|
93
|
+
- CSV, Excel, JSON, and PDF export
|
|
94
|
+
- CSV, JSON and Excel import with dry-run validation
|
|
95
|
+
- Local and S3-compatible file storage (Amazon S3, MinIO, ...)
|
|
96
|
+
- Event hooks before and after CRUD operations
|
|
97
|
+
- Pluggable authentication, storage, fields, actions, and model views
|
|
98
|
+
- Theme customization, dark mode, internationalization, and timezone support
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
## Supported ORMs & Backends
|
|
103
|
+
|
|
104
|
+
`obox-builder` is built to be agnostic. It ships with built-in support for popular ORMs and databases:
|
|
105
|
+
|
|
106
|
+
| Backend | Package Path |
|
|
107
|
+
| --- | --- |
|
|
108
|
+
| **SQLAlchemy** | `obox_builder.contrib.sqla` |
|
|
109
|
+
| **SQLModel** | `obox_builder.contrib.sqlmodel` |
|
|
110
|
+
| **Tortoise ORM** | `obox_builder.contrib.tortoise` |
|
|
111
|
+
| **Beanie (MongoDB)** | `obox_builder.contrib.beanie` |
|
|
112
|
+
| **MongoEngine** | `obox_builder.contrib.mongoengine` |
|
|
113
|
+
| **Custom Data Sources** | Subclass `BaseModelView` |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Documentation & Resources
|
|
118
|
+
|
|
119
|
+
* **[Full Documentation](https://vinhgiga.github.io/obox-builder)**
|
|
120
|
+
* **[Quickstart Guide](https://vinhgiga.github.io/obox-builder/getting-started/quickstart/)**
|
|
121
|
+
* **[User Guide](https://vinhgiga.github.io/obox-builder/user-guide/views/)** (Covers views, fields, filters, actions, and auth)
|
|
122
|
+
* **[API Reference](https://vinhgiga.github.io/obox-builder/api/admin/)**
|
|
123
|
+
|
|
124
|
+
## Live Demo
|
|
125
|
+
|
|
126
|
+
Explore the upstream interface in action: **[starlette-admin-demo.jowilf.com](https://starlette-admin-demo.jowilf.com/)**
|
|
127
|
+
|
|
128
|
+
## Contributing
|
|
129
|
+
|
|
130
|
+
Contributions are always welcome! Whether it is reporting a bug, discussing improvements, or submitting a pull request, your input helps make this project better.
|
|
131
|
+
|
|
132
|
+
Please review our **[CONTRIBUTING.md](https://github.com/vinhgiga/obox-builder/blob/main/CONTRIBUTING.md)** guidelines before opening a pull request.
|
|
133
|
+
|
|
134
|
+
## License
|
|
135
|
+
|
|
136
|
+
This project is licensed under the **MIT License**.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
__version__ = "1.0.2"
|
|
2
|
+
|
|
3
|
+
from .actions import ActionSelection as ActionSelection
|
|
4
|
+
from .actions import action as action
|
|
5
|
+
from .actions import link_row_action as link_row_action
|
|
6
|
+
from .actions import row_action as row_action
|
|
7
|
+
from .base import BaseAdmin as BaseAdmin
|
|
8
|
+
from .fields import ArrowField as ArrowField
|
|
9
|
+
from .fields import BaseField as BaseField
|
|
10
|
+
from .fields import BooleanField as BooleanField
|
|
11
|
+
from .fields import CollectionField as CollectionField
|
|
12
|
+
from .fields import ColorField as ColorField
|
|
13
|
+
from .fields import ComputedField as ComputedField
|
|
14
|
+
from .fields import CountryField as CountryField
|
|
15
|
+
from .fields import CurrencyField as CurrencyField
|
|
16
|
+
from .fields import DateField as DateField
|
|
17
|
+
from .fields import DateTimeField as DateTimeField
|
|
18
|
+
from .fields import DecimalField as DecimalField
|
|
19
|
+
from .fields import EmailField as EmailField
|
|
20
|
+
from .fields import EnumField as EnumField
|
|
21
|
+
from .fields import FileField as FileField
|
|
22
|
+
from .fields import FloatField as FloatField
|
|
23
|
+
from .fields import HasMany as HasMany
|
|
24
|
+
from .fields import HasOne as HasOne
|
|
25
|
+
from .fields import ImageField as ImageField
|
|
26
|
+
from .fields import IntegerField as IntegerField
|
|
27
|
+
from .fields import IPAddressField as IPAddressField
|
|
28
|
+
from .fields import JSONField as JSONField
|
|
29
|
+
from .fields import ListField as ListField
|
|
30
|
+
from .fields import NumberField as NumberField
|
|
31
|
+
from .fields import PasswordField as PasswordField
|
|
32
|
+
from .fields import PhoneField as PhoneField
|
|
33
|
+
from .fields import RelationField as RelationField
|
|
34
|
+
from .fields import SlugField as SlugField
|
|
35
|
+
from .fields import StringField as StringField
|
|
36
|
+
from .fields import TagsField as TagsField
|
|
37
|
+
from .fields import TextAreaField as TextAreaField
|
|
38
|
+
from .fields import TimeField as TimeField
|
|
39
|
+
from .fields import TimeZoneField as TimeZoneField
|
|
40
|
+
from .fields import TinyMCEEditorField as TinyMCEEditorField
|
|
41
|
+
from .fields import URLField as URLField
|
|
42
|
+
from .fields import UUIDField as UUIDField
|
|
43
|
+
from .flash import flash as flash
|
|
44
|
+
from .flash import get_flashed_messages as get_flashed_messages
|
|
45
|
+
from .i18n import I18nConfig as I18nConfig
|
|
46
|
+
from .i18n import TimezoneConfig as TimezoneConfig
|
|
47
|
+
from .plugins import BasePlugin as BasePlugin
|
|
48
|
+
from .plugins import PluginError as PluginError
|
|
49
|
+
from .routing import route as route
|
|
50
|
+
from .theme import BaseTheme as BaseTheme
|
|
51
|
+
from .theme import DefaultTheme as DefaultTheme
|
|
52
|
+
from .theme import TablerSettings as TablerSettings
|
|
53
|
+
from .types import RequestAction as RequestAction
|
|
54
|
+
from .types import RowActionsDisplayType as RowActionsDisplayType
|
|
55
|
+
from .types import RowActionsPosition as RowActionsPosition
|
|
56
|
+
from .views import BaseModelView as BaseModelView
|
|
57
|
+
from .views import CustomView as CustomView
|
|
58
|
+
from .views import DefaultIndexView as DefaultIndexView
|
|
59
|
+
from .views import DropDown as DropDown
|
|
60
|
+
from .views import InlineModelView as InlineModelView
|
|
61
|
+
from .views import Link as Link
|
|
62
|
+
from .widgets import BaseWidget as BaseWidget
|
|
63
|
+
from .widgets import Breakpoints as Breakpoints
|
|
64
|
+
from .widgets import CardRowWidget as CardRowWidget
|
|
65
|
+
from .widgets import ChartWidget as ChartWidget
|
|
66
|
+
from .widgets import Col as Col
|
|
67
|
+
from .widgets import ColumnWidget as ColumnWidget
|
|
68
|
+
from .widgets import DividerWidget as DividerWidget
|
|
69
|
+
from .widgets import FieldRef as FieldRef
|
|
70
|
+
from .widgets import FieldsetWidget as FieldsetWidget
|
|
71
|
+
from .widgets import GridWidget as GridWidget
|
|
72
|
+
from .widgets import HtmlWidget as HtmlWidget
|
|
73
|
+
from .widgets import PanelWidget as PanelWidget
|
|
74
|
+
from .widgets import RowWidget as RowWidget
|
|
75
|
+
from .widgets import StatWidget as StatWidget
|
|
76
|
+
from .widgets import TableWidget as TableWidget
|
|
77
|
+
from .widgets import TabsWidget as TabsWidget
|
|
78
|
+
from .widgets import TextWidget as TextWidget
|
|
79
|
+
|
|
80
|
+
__all__ = [
|
|
81
|
+
"ActionSelection",
|
|
82
|
+
"ArrowField",
|
|
83
|
+
"BaseAdmin",
|
|
84
|
+
"BaseField",
|
|
85
|
+
"BaseModelView",
|
|
86
|
+
"BaseTheme",
|
|
87
|
+
"BaseWidget",
|
|
88
|
+
"BooleanField",
|
|
89
|
+
"Breakpoints",
|
|
90
|
+
"CardRowWidget",
|
|
91
|
+
"ChartWidget",
|
|
92
|
+
"Col",
|
|
93
|
+
"CollectionField",
|
|
94
|
+
"ColorField",
|
|
95
|
+
"ColumnWidget",
|
|
96
|
+
"ComputedField",
|
|
97
|
+
"CountryField",
|
|
98
|
+
"CurrencyField",
|
|
99
|
+
"CustomView",
|
|
100
|
+
"DateField",
|
|
101
|
+
"DateTimeField",
|
|
102
|
+
"DecimalField",
|
|
103
|
+
"DefaultIndexView",
|
|
104
|
+
"DefaultTheme",
|
|
105
|
+
"DividerWidget",
|
|
106
|
+
"DropDown",
|
|
107
|
+
"EmailField",
|
|
108
|
+
"EnumField",
|
|
109
|
+
"FieldRef",
|
|
110
|
+
"FieldsetWidget",
|
|
111
|
+
"FileField",
|
|
112
|
+
"FloatField",
|
|
113
|
+
"GridWidget",
|
|
114
|
+
"HasMany",
|
|
115
|
+
"HasOne",
|
|
116
|
+
"HtmlWidget",
|
|
117
|
+
"I18nConfig",
|
|
118
|
+
"IPAddressField",
|
|
119
|
+
"ImageField",
|
|
120
|
+
"InlineModelView",
|
|
121
|
+
"IntegerField",
|
|
122
|
+
"JSONField",
|
|
123
|
+
"Link",
|
|
124
|
+
"ListField",
|
|
125
|
+
"NumberField",
|
|
126
|
+
"PanelWidget",
|
|
127
|
+
"PasswordField",
|
|
128
|
+
"PhoneField",
|
|
129
|
+
"RelationField",
|
|
130
|
+
"RequestAction",
|
|
131
|
+
"RowActionsDisplayType",
|
|
132
|
+
"RowActionsPosition",
|
|
133
|
+
"RowWidget",
|
|
134
|
+
"SlugField",
|
|
135
|
+
"StatWidget",
|
|
136
|
+
"StringField",
|
|
137
|
+
"TableWidget",
|
|
138
|
+
"TablerSettings",
|
|
139
|
+
"TabsWidget",
|
|
140
|
+
"TagsField",
|
|
141
|
+
"TextAreaField",
|
|
142
|
+
"TextWidget",
|
|
143
|
+
"TimeField",
|
|
144
|
+
"TimeZoneField",
|
|
145
|
+
"TimezoneConfig",
|
|
146
|
+
"TinyMCEEditorField",
|
|
147
|
+
"URLField",
|
|
148
|
+
"UUIDField",
|
|
149
|
+
"action",
|
|
150
|
+
"flash",
|
|
151
|
+
"get_flashed_messages",
|
|
152
|
+
"link_row_action",
|
|
153
|
+
"route",
|
|
154
|
+
"row_action",
|
|
155
|
+
]
|