Flask-Exts 0.2.6__tar.gz → 0.2.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.
- flask_exts-0.2.8/.djlintrc +8 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/.gitignore +4 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/CHANGES.rst +15 -3
- {flask_exts-0.2.6 → flask_exts-0.2.8}/PKG-INFO +10 -17
- {flask_exts-0.2.6 → flask_exts-0.2.8}/README.rst +5 -8
- {flask_exts-0.2.6 → flask_exts-0.2.8}/babel/babel.sh +1 -1
- flask_exts-0.2.8/babel/messages.pot +346 -0
- flask_exts-0.2.8/docs/advanced/bootstrap5.rst +429 -0
- flask_exts-0.2.8/docs/advanced/custom_fields.rst +384 -0
- flask_exts-0.2.8/docs/advanced/custom_plugins.rst +247 -0
- flask_exts-0.2.8/docs/advanced/custom_validators.rst +4 -0
- flask_exts-0.2.8/docs/advanced/index.rst +16 -0
- flask_exts-0.2.8/docs/advanced/modelview.rst +337 -0
- flask_exts-0.2.8/docs/advanced/performance.rst +493 -0
- flask_exts-0.2.8/docs/advanced/security.rst +498 -0
- flask_exts-0.2.8/docs/advanced/theming.rst +401 -0
- flask_exts-0.2.8/docs/api.rst +17 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/docs/conf.py +0 -1
- {flask_exts-0.2.6 → flask_exts-0.2.8}/docs/configure.rst +7 -10
- {flask_exts-0.2.6 → flask_exts-0.2.8}/docs/develop.rst +9 -15
- flask_exts-0.2.8/docs/examples.rst +6 -0
- flask_exts-0.2.8/docs/index.rst +44 -0
- flask_exts-0.2.8/docs/quickstart.rst +264 -0
- flask_exts-0.2.8/examples/README.rst +38 -0
- flask_exts-0.2.8/examples/demo/admin_views.py +12 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/build_sample.py +5 -29
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/make_app.py +11 -14
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/models/__init__.py +0 -3
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/models/author.py +9 -4
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/models/post.py +6 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/models/tag.py +2 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/models/tree.py +2 -0
- flask_exts-0.2.8/examples/demo/templates/field_list.html +12 -0
- flask_exts-0.2.8/examples/demo/templates/locations.html +10 -0
- flask_exts-0.2.8/examples/demo/templates/tree_list.html +14 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/views/author_view.py +34 -43
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/views/post_view.py +44 -26
- flask_exts-0.2.8/examples/demo/views/tag_view.py +7 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/views/tree_view.py +2 -4
- flask_exts-0.2.8/examples/simple/__init__.py +43 -0
- flask_exts-0.2.8/package.json +22 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/pyproject.toml +3 -8
- flask_exts-0.2.8/src/flask_exts/__about__.py +1 -0
- flask_exts-0.2.8/src/flask_exts/__init__.py +2 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/__init__.py +29 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/babel_ext.py +102 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/database_ext.py +15 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/email_ext.py +16 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/html_ext.py +45 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/login_ext.py +113 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/security_ext.py +23 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/startup_ext.py +41 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/usercenter_ext.py +20 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/userstore_ext.py +22 -0
- flask_exts-0.2.8/src/flask_exts/builtin_extensions/web_ext.py +19 -0
- flask_exts-0.2.8/src/flask_exts/commands.py +52 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/__init__.py +3 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/query.py +338 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/query_builders/__init__.py +24 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/query_builders/filter_builder.py +50 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/query_builders/join_builder.py +51 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/query_builders/pagination_builder.py +41 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/query_builders/sort_builder.py +40 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/sqla_db.py +82 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/utils/__init__.py +6 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/utils/model_mapper.py +142 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/utils/orm.py +40 -0
- flask_exts-0.2.8/src/flask_exts/datastore/sqla/utils/paginate.py +74 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/email/base.py +9 -8
- flask_exts-0.2.8/src/flask_exts/extension_core/base.py +127 -0
- flask_exts-0.2.8/src/flask_exts/extension_core/manager.py +143 -0
- flask_exts-0.2.8/src/flask_exts/extension_core/registry.py +263 -0
- flask_exts-0.2.8/src/flask_exts/forms/__init__.py +1 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/ajax_select.py +16 -15
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/datetime.py +4 -4
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/inline.py +4 -37
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/json.py +1 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/select.py +9 -7
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/sqla.py +32 -93
- flask_exts-0.2.8/src/flask_exts/forms/fields/sqla_fields/__init__.py +39 -0
- flask_exts-0.2.8/src/flask_exts/forms/fields/sqla_fields/checkbox_fields.py +9 -0
- flask_exts-0.2.8/src/flask_exts/forms/fields/sqla_fields/inline_fields.py +10 -0
- flask_exts-0.2.8/src/flask_exts/forms/fields/sqla_fields/query_fields.py +11 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/taglist.py +3 -0
- flask_exts-0.2.8/src/flask_exts/forms/form/__init__.py +1 -0
- flask_exts-0.2.8/src/flask_exts/forms/form/base_form.py +24 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/form/csrf.py +12 -16
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/form/meta.py +15 -5
- flask_exts-0.2.8/src/flask_exts/forms/form/utils.py +8 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/validators/sqla.py +11 -32
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/widgets/__init__.py +1 -1
- flask_exts-0.2.6/src/flask_exts/template/widgets/xeditable.py → flask_exts-0.2.8/src/flask_exts/forms/widgets/editable.py +14 -23
- flask_exts-0.2.8/src/flask_exts/forms/widgets/inline.py +14 -0
- flask_exts-0.2.8/src/flask_exts/html/plugin_base.py +32 -0
- flask_exts-0.2.8/src/flask_exts/html/plugin_manager.py +85 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/admin_detail_filter_plugin.py +11 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/admin_filters_plugin.py +11 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/admin_form_plugin.py +11 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/admin_list_action_plugin.py +11 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/admin_modal_plugin.py +11 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/admin_plugin.py +11 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/bootstrap4_plugin.py +19 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts/html}/plugins/bootstrap5_plugin.py +8 -6
- flask_exts-0.2.8/src/flask_exts/html/plugins/clipboard_plugin.py +11 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/copybutton_plugin.py +13 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/dayjs_plugin.py +73 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/editable_plugin.py +59 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/flatpickr_plugin.py +69 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/qrcode_plugin.py +11 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/rediscli_plugin.py +15 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/sphinx_copybutton_plugin.py +20 -0
- flask_exts-0.2.8/src/flask_exts/html/plugins/tom_select_plugin.py +68 -0
- flask_exts-0.2.8/src/flask_exts/html/template.py +18 -0
- flask_exts-0.2.8/src/flask_exts/html/theme.py +17 -0
- flask_exts-0.2.8/src/flask_exts/proxies.py +24 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/security/authorizer/base.py +0 -4
- flask_exts-0.2.8/src/flask_exts/security/authorizer/simple_authorizer.py +21 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/security/core.py +20 -20
- flask_exts-0.2.8/src/flask_exts/security/plugins/email_verification.py +48 -0
- flask_exts-0.2.8/src/flask_exts/security/plugins/reset_password.py +49 -0
- flask_exts-0.2.8/src/flask_exts/security/registry.py +34 -0
- flask_exts-0.2.8/src/flask_exts/security/token_action.py +138 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/signals.py +1 -1
- flask_exts-0.2.8/src/flask_exts/static/css/editable.css +13 -0
- flask_exts-0.2.8/src/flask_exts/static/js/editable.js +243 -0
- flask_exts-0.2.8/src/flask_exts/static/js/field-registry.js +241 -0
- flask_exts-0.2.8/src/flask_exts/static/js/filters.js +282 -0
- flask_exts-0.2.8/src/flask_exts/static/js/form.js +673 -0
- flask_exts-0.2.6/src/flask_exts/themes/static/js/model_action.js → flask_exts-0.2.8/src/flask_exts/static/js/list_action.js +10 -3
- flask_exts-0.2.8/src/flask_exts/static/js/modal.js +49 -0
- flask_exts-0.2.8/src/flask_exts/static/js/ui-factory.js +163 -0
- flask_exts-0.2.8/src/flask_exts/templates/admin/index.html +9 -0
- flask_exts-0.2.8/src/flask_exts/templates/admin/master.html +41 -0
- flask_exts-0.2.8/src/flask_exts/templates/admin/model/create.html +15 -0
- flask_exts-0.2.8/src/flask_exts/templates/admin/model/details.html +51 -0
- flask_exts-0.2.8/src/flask_exts/templates/admin/model/edit.html +24 -0
- flask_exts-0.2.8/src/flask_exts/templates/admin/model/list.html +220 -0
- flask_exts-0.2.8/src/flask_exts/templates/admin/model/modals/create.html +5 -0
- flask_exts-0.2.8/src/flask_exts/templates/admin/model/modals/details.html +37 -0
- flask_exts-0.2.8/src/flask_exts/templates/admin/model/modals/edit.html +5 -0
- flask_exts-0.2.8/src/flask_exts/templates/base.html +19 -0
- flask_exts-0.2.8/src/flask_exts/templates/index.html +44 -0
- flask_exts-0.2.8/src/flask_exts/templates/layout.html +7 -0
- flask_exts-0.2.8/src/flask_exts/templates/macro/form.html +83 -0
- flask_exts-0.2.8/src/flask_exts/templates/macro/icon.html +4 -0
- flask_exts-0.2.8/src/flask_exts/templates/macro/inline.html +44 -0
- flask_exts-0.2.8/src/flask_exts/templates/macro/layout.html +38 -0
- flask_exts-0.2.8/src/flask_exts/templates/macro/menu.html +85 -0
- flask_exts-0.2.8/src/flask_exts/templates/macro/message.html +22 -0
- flask_exts-0.2.8/src/flask_exts/templates/macro/modal.html +13 -0
- flask_exts-0.2.8/src/flask_exts/templates/macro/nav.html +18 -0
- flask_exts-0.2.8/src/flask_exts/templates/macro/pagination.html +90 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/change_password.html +10 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/forgot_password.html +10 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/index.html +53 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/list.html +5 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/login.html +29 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/recovery.html +11 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/recovery_codes.html +46 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/register.html +11 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/reset_password.html +11 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/setup_tfa.html +38 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/show_tfa.html +23 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/verify_email.html +5 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/verify_tfa.html +14 -0
- flask_exts-0.2.8/src/flask_exts/templates/user/verify_tfa_modal.html +13 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/translations/en/LC_MESSAGES/messages.mo +0 -0
- flask_exts-0.2.8/src/flask_exts/translations/en/LC_MESSAGES/messages.po +347 -0
- flask_exts-0.2.8/src/flask_exts/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
- flask_exts-0.2.8/src/flask_exts/translations/zh_CN/LC_MESSAGES/messages.po +345 -0
- flask_exts-0.2.6/src/flask_exts/utils/decorators.py → flask_exts-0.2.8/src/flask_exts/usercenter/auth_requires.py +5 -13
- flask_exts-0.2.8/src/flask_exts/usercenter/core.py +9 -0
- flask_exts-0.2.8/src/flask_exts/usercenter/forms/__init__.py +1 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/usercenter}/forms/change_password.py +2 -2
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/usercenter}/forms/forgot_password.py +4 -4
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/usercenter}/forms/login.py +2 -2
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/usercenter}/forms/profile.py +3 -3
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/usercenter}/forms/recovery.py +5 -3
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/usercenter}/forms/register.py +2 -2
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/usercenter}/forms/reset_password.py +2 -2
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/usercenter}/forms/two_factor.py +2 -2
- flask_exts-0.2.6/src/flask_exts/usercenter/base_user.py → flask_exts-0.2.8/src/flask_exts/usercenter/user.py +2 -2
- flask_exts-0.2.6/src/flask_exts/views/user/view.py → flask_exts-0.2.8/src/flask_exts/usercenter/user_view.py +89 -93
- flask_exts-0.2.8/src/flask_exts/userstore/models/__init__.py +1 -0
- {flask_exts-0.2.6/src/flask_exts/usercenter → flask_exts-0.2.8/src/flask_exts/userstore}/models/role.py +6 -4
- {flask_exts-0.2.6/src/flask_exts/usercenter → flask_exts-0.2.8/src/flask_exts/userstore}/models/user.py +18 -34
- {flask_exts-0.2.6/src/flask_exts/usercenter → flask_exts-0.2.8/src/flask_exts/userstore}/models/user_profile.py +7 -8
- flask_exts-0.2.8/src/flask_exts/userstore/models/user_role.py +11 -0
- {flask_exts-0.2.6/src/flask_exts/usercenter → flask_exts-0.2.8/src/flask_exts/userstore}/sqla_user_store.py +13 -11
- flask_exts-0.2.8/src/flask_exts/userstore/store.py +50 -0
- flask_exts-0.2.8/src/flask_exts/web/__init__.py +3 -0
- {flask_exts-0.2.6/src/flask_exts/admin → flask_exts-0.2.8/src/flask_exts/web}/admin.py +27 -8
- flask_exts-0.2.6/src/flask_exts/views/index/view.py → flask_exts-0.2.8/src/flask_exts/web/default_views/index_view.py +7 -8
- flask_exts-0.2.8/src/flask_exts/web/exposer.py +36 -0
- {flask_exts-0.2.6/src/flask_exts/admin → flask_exts-0.2.8/src/flask_exts/web}/menu.py +12 -4
- flask_exts-0.2.8/src/flask_exts/web/model/__init__.py +65 -0
- flask_exts-0.2.8/src/flask_exts/web/model/actions_mixin.py +126 -0
- {flask_exts-0.2.6/src/flask_exts/admin → flask_exts-0.2.8/src/flask_exts/web}/model/ajax.py +0 -2
- flask_exts-0.2.8/src/flask_exts/web/model/base.py +469 -0
- flask_exts-0.2.8/src/flask_exts/web/model/core/__init__.py +13 -0
- flask_exts-0.2.8/src/flask_exts/web/model/core/columns.py +169 -0
- flask_exts-0.2.8/src/flask_exts/web/model/core/forms.py +227 -0
- flask_exts-0.2.8/src/flask_exts/web/model/core/pagination.py +125 -0
- flask_exts-0.2.8/src/flask_exts/web/model/core/sorting.py +79 -0
- flask_exts-0.2.8/src/flask_exts/web/model/core/values.py +170 -0
- flask_exts-0.2.6/src/flask_exts/admin/model/filters.py → flask_exts-0.2.8/src/flask_exts/web/model/filter.py +71 -109
- flask_exts-0.2.8/src/flask_exts/web/model/filter_mixin.py +190 -0
- flask_exts-0.2.8/src/flask_exts/web/model/operations/__init__.py +19 -0
- flask_exts-0.2.8/src/flask_exts/web/model/operations/create.py +34 -0
- flask_exts-0.2.8/src/flask_exts/web/model/operations/delete.py +31 -0
- flask_exts-0.2.8/src/flask_exts/web/model/operations/export.py +179 -0
- flask_exts-0.2.8/src/flask_exts/web/model/operations/read.py +57 -0
- flask_exts-0.2.8/src/flask_exts/web/model/operations/update.py +31 -0
- flask_exts-0.2.8/src/flask_exts/web/model/row_actions.py +104 -0
- flask_exts-0.2.6/src/flask_exts/admin/model/typefmt.py → flask_exts-0.2.8/src/flask_exts/web/model/type_formatters.py +27 -28
- flask_exts-0.2.8/src/flask_exts/web/model/types.py +4 -0
- flask_exts-0.2.8/src/flask_exts/web/model/view.py +464 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/ajax.py +78 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/filter/__init__.py +1 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/filter/filter_converter.py +221 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/filter/filters.py +391 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/form/__init__.py +1 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/form/field_converters.py +177 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/form/inline_form.py +32 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/form/inline_model_convert.py +347 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/form/model_field_convert.py +218 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/form/utils.py +79 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/sqla_view/__init__.py +24 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/sqla_view/pagination_handler.py +22 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/sqla_view/query_handler.py +29 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/sqla_view/relationships_handler.py +41 -0
- flask_exts-0.2.8/src/flask_exts/web/sqla/sqla_view/sorting_handler.py +23 -0
- flask_exts-0.2.6/src/flask_exts/admin/sqla/typefmt.py → flask_exts-0.2.8/src/flask_exts/web/sqla/type_formatters.py +2 -6
- flask_exts-0.2.8/src/flask_exts/web/sqla/view.py +504 -0
- {flask_exts-0.2.6/src/flask_exts/admin → flask_exts-0.2.8/src/flask_exts/web}/view.py +81 -102
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/conftest.py +11 -10
- flask_exts-0.2.8/tests/datastore/sqla/test_db.py +82 -0
- flask_exts-0.2.8/tests/datastore/sqla/test_query.py +175 -0
- flask_exts-0.2.8/tests/forms/common.py +6 -0
- flask_exts-0.2.8/tests/forms/fields/test_datetime.py +26 -0
- {flask_exts-0.2.6/tests/template/forms → flask_exts-0.2.8/tests/forms/fields}/test_filefield.py +1 -1
- flask_exts-0.2.8/tests/forms/fields/test_json.py +34 -0
- {flask_exts-0.2.6/tests/template/forms → flask_exts-0.2.8/tests/forms/fields}/test_uploadfile.py +3 -3
- flask_exts-0.2.8/tests/forms/fields/test_wtforms.py +127 -0
- flask_exts-0.2.8/tests/forms/form/test_form.py +46 -0
- {flask_exts-0.2.6/tests/template → flask_exts-0.2.8/tests/html}/conftest.py +1 -1
- {flask_exts-0.2.6/tests/template → flask_exts-0.2.8/tests/html}/macros/test_render_breadcrumb_item.py +3 -3
- flask_exts-0.2.8/tests/html/macros/test_render_nav_item.py +30 -0
- flask_exts-0.2.8/tests/html/test_base.py +28 -0
- flask_exts-0.2.8/tests/models/__init__.py +16 -0
- flask_exts-0.2.8/tests/models/demo.py +140 -0
- flask_exts-0.2.8/tests/models/multpk.py +16 -0
- flask_exts-0.2.8/tests/models/primary_string_model.py +10 -0
- flask_exts-0.2.8/tests/models/relations.py +144 -0
- flask_exts-0.2.8/tests/models/simple.py +10 -0
- flask_exts-0.2.8/tests/models/tree.py +21 -0
- flask_exts-0.2.8/tests/models/unique.py +9 -0
- flask_exts-0.2.8/tests/security/test_authorizer.py +116 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/security/test_core.py +13 -11
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/security/test_tfa.py +1 -1
- flask_exts-0.2.8/tests/templates/method.html +1 -0
- flask_exts-0.2.8/tests/templates/mock.html +5 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/test_babel.py +51 -14
- flask_exts-0.2.8/tests/test_base.py +9 -0
- flask_exts-0.2.8/tests/test_db.py +19 -0
- flask_exts-0.2.8/tests/test_exts_base.py +38 -0
- flask_exts-0.2.6/tests/utils/test_request_user.py → flask_exts-0.2.8/tests/test_login.py +42 -38
- flask_exts-0.2.8/tests/translations/en/LC_MESSAGES/messages.mo +0 -0
- flask_exts-0.2.8/tests/translations/en/LC_MESSAGES/messages.po +38 -0
- flask_exts-0.2.8/tests/translations/messages.pot +32 -0
- flask_exts-0.2.8/tests/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
- flask_exts-0.2.8/tests/translations/zh_CN/LC_MESSAGES/messages.po +31 -0
- flask_exts-0.2.8/tests/usercenter/test_sqla_usercenter.py +50 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/views/test_user_view.py +32 -25
- flask_exts-0.2.8/tests/web/model/core/test_columns.py +19 -0
- flask_exts-0.2.8/tests/web/model/test_action_mixin.py +36 -0
- flask_exts-0.2.6/tests/admin/test_model.py → flask_exts-0.2.8/tests/web/model/test_model_view.py +187 -310
- flask_exts-0.2.8/tests/web/model/test_model_view_csrf.py +168 -0
- flask_exts-0.2.8/tests/web/sqla/__init__.py +1 -0
- flask_exts-0.2.8/tests/web/sqla/custom_sqla_model_view.py +18 -0
- {flask_exts-0.2.6/tests/admin → flask_exts-0.2.8/tests/web}/sqla/templates/another_macro.html +1 -1
- {flask_exts-0.2.6/tests/admin → flask_exts-0.2.8/tests/web}/sqla/templates/macro.html +3 -5
- flask_exts-0.2.8/tests/web/sqla/test_basic.py +1151 -0
- flask_exts-0.2.8/tests/web/sqla/test_filter.py +172 -0
- flask_exts-0.2.8/tests/web/sqla/test_form.py +96 -0
- flask_exts-0.2.8/tests/web/sqla/test_inline_model.py +288 -0
- flask_exts-0.2.8/tests/web/sqla/test_multi_pk.py +39 -0
- flask_exts-0.2.8/tests/web/sqla/test_primary_string.py +24 -0
- {flask_exts-0.2.6/tests/admin → flask_exts-0.2.8/tests/web}/sqla/test_translation.py +19 -24
- flask_exts-0.2.6/tests/admin/test_base.py → flask_exts-0.2.8/tests/web/test_admin.py +74 -36
- flask_exts-0.2.8/tests/web/test_view.py +30 -0
- flask_exts-0.2.6/babel/messages.pot +0 -567
- flask_exts-0.2.6/docs/api.rst +0 -9
- flask_exts-0.2.6/docs/examples.rst +0 -1
- flask_exts-0.2.6/docs/index.rst +0 -65
- flask_exts-0.2.6/examples/README.rst +0 -80
- flask_exts-0.2.6/examples/bootstrap/forms.py +0 -113
- flask_exts-0.2.6/examples/bootstrap/make_app.py +0 -46
- flask_exts-0.2.6/examples/bootstrap/models.py +0 -19
- flask_exts-0.2.6/examples/bootstrap/static/favicon.ico +0 -0
- flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/bootswatch.html +0 -7
- flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/flash.html +0 -6
- flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/form.html +0 -91
- flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/icon.html +0 -34
- flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/icons.html +0 -16411
- flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/index.html +0 -16
- flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/nav.html +0 -43
- flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/pagination.html +0 -17
- flask_exts-0.2.6/examples/bootstrap/templates/bootstrap/table.html +0 -51
- flask_exts-0.2.6/examples/bootstrap/templates/mybase.html +0 -34
- flask_exts-0.2.6/examples/bootstrap/view.py +0 -151
- flask_exts-0.2.6/examples/bootstrap5/static/favicon.ico +0 -0
- flask_exts-0.2.6/examples/bootstrap5/templates/bootswatch.html +0 -7
- flask_exts-0.2.6/examples/bootstrap5/templates/flash.html +0 -6
- flask_exts-0.2.6/examples/bootstrap5/templates/form.html +0 -91
- flask_exts-0.2.6/examples/bootstrap5/templates/icon.html +0 -28
- flask_exts-0.2.6/examples/bootstrap5/templates/icons.html +0 -16411
- flask_exts-0.2.6/examples/bootstrap5/templates/index.html +0 -16
- flask_exts-0.2.6/examples/bootstrap5/templates/mybase.html +0 -59
- flask_exts-0.2.6/examples/bootstrap5/templates/nav.html +0 -43
- flask_exts-0.2.6/examples/bootstrap5/templates/pagination.html +0 -17
- flask_exts-0.2.6/examples/bootstrap5/templates/table.html +0 -51
- flask_exts-0.2.6/examples/demo/__init__.py +0 -1
- flask_exts-0.2.6/examples/demo/admin_views.py +0 -31
- flask_exts-0.2.6/examples/demo/models/keyword.py +0 -15
- flask_exts-0.2.6/examples/demo/models/location_image.py +0 -58
- flask_exts-0.2.6/examples/demo/models/user.py +0 -38
- flask_exts-0.2.6/examples/demo/models/user_keyword.py +0 -26
- flask_exts-0.2.6/examples/demo/templates/field_list.html +0 -13
- flask_exts-0.2.6/examples/demo/templates/locations.html +0 -14
- flask_exts-0.2.6/examples/demo/templates/my/index.html +0 -7
- flask_exts-0.2.6/examples/demo/templates/tree_list.html +0 -14
- flask_exts-0.2.6/examples/demo/views/keyword_view.py +0 -9
- flask_exts-0.2.6/examples/demo/views/location_image_view.py +0 -77
- flask_exts-0.2.6/examples/demo/views/my_view.py +0 -10
- flask_exts-0.2.6/examples/demo/views/tag_view.py +0 -4
- flask_exts-0.2.6/examples/demo/views/user_view.py +0 -13
- flask_exts-0.2.6/examples/fileadmin/__init__.py +0 -1
- flask_exts-0.2.6/examples/fileadmin/file_view.py +0 -12
- flask_exts-0.2.6/examples/fileadmin/make_app.py +0 -23
- flask_exts-0.2.6/examples/instance/config.py +0 -3
- flask_exts-0.2.6/examples/rediscli.py +0 -26
- flask_exts-0.2.6/examples/simple.py +0 -32
- flask_exts-0.2.6/src/flask_exts/__about__.py +0 -1
- flask_exts-0.2.6/src/flask_exts/__init__.py +0 -1
- flask_exts-0.2.6/src/flask_exts/admin/__init__.py +0 -2
- flask_exts-0.2.6/src/flask_exts/admin/actions.py +0 -117
- flask_exts-0.2.6/src/flask_exts/admin/model/__init__.py +0 -2
- flask_exts-0.2.6/src/flask_exts/admin/model/form.py +0 -251
- flask_exts-0.2.6/src/flask_exts/admin/model/view.py +0 -2494
- flask_exts-0.2.6/src/flask_exts/admin/row_action.py +0 -67
- flask_exts-0.2.6/src/flask_exts/admin/sqla/__init__.py +0 -1
- flask_exts-0.2.6/src/flask_exts/admin/sqla/ajax.py +0 -126
- flask_exts-0.2.6/src/flask_exts/admin/sqla/filters.py +0 -625
- flask_exts-0.2.6/src/flask_exts/admin/sqla/form.py +0 -884
- flask_exts-0.2.6/src/flask_exts/admin/sqla/view.py +0 -1323
- flask_exts-0.2.6/src/flask_exts/babel/__init__.py +0 -44
- flask_exts-0.2.6/src/flask_exts/babel/selector.py +0 -35
- flask_exts-0.2.6/src/flask_exts/commands.py +0 -34
- flask_exts-0.2.6/src/flask_exts/datastore/sqla/__init__.py +0 -9
- flask_exts-0.2.6/src/flask_exts/datastore/sqla/orm.py +0 -11
- flask_exts-0.2.6/src/flask_exts/exts.py +0 -70
- flask_exts-0.2.6/src/flask_exts/proxies.py +0 -19
- flask_exts-0.2.6/src/flask_exts/security/__init__.py +0 -6
- flask_exts-0.2.6/src/flask_exts/security/authorizer/casbin_authorizer.py +0 -108
- flask_exts-0.2.6/src/flask_exts/security/authorizer/sqlalchemy_adapter.py +0 -245
- flask_exts-0.2.6/src/flask_exts/security/email_verification.py +0 -84
- flask_exts-0.2.6/src/flask_exts/security/principal/identity.py +0 -37
- flask_exts-0.2.6/src/flask_exts/security/principal/identity_context.py +0 -52
- flask_exts-0.2.6/src/flask_exts/security/principal/permission.py +0 -297
- flask_exts-0.2.6/src/flask_exts/security/principal/principal.py +0 -197
- flask_exts-0.2.6/src/flask_exts/security/reset_password.py +0 -78
- flask_exts-0.2.6/src/flask_exts/template/base.py +0 -18
- flask_exts-0.2.6/src/flask_exts/template/form/base_form.py +0 -16
- flask_exts-0.2.6/src/flask_exts/template/form/form_opts.py +0 -6
- flask_exts-0.2.6/src/flask_exts/template/form/utils.py +0 -48
- flask_exts-0.2.6/src/flask_exts/template/funcs.py +0 -39
- flask_exts-0.2.6/src/flask_exts/template/rules.py +0 -396
- flask_exts-0.2.6/src/flask_exts/template/widgets/inline.py +0 -15
- flask_exts-0.2.6/src/flask_exts/template/widgets/render_template.py +0 -25
- flask_exts-0.2.6/src/flask_exts/themes/plugins/base_plugin.py +0 -9
- flask_exts-0.2.6/src/flask_exts/themes/plugins/bootstrap4_plugin.py +0 -17
- flask_exts-0.2.6/src/flask_exts/themes/plugins/clipboard_plugin.py +0 -10
- flask_exts-0.2.6/src/flask_exts/themes/plugins/copybutton_plugin.py +0 -12
- flask_exts-0.2.6/src/flask_exts/themes/plugins/detail_filter_plugin.py +0 -10
- flask_exts-0.2.6/src/flask_exts/themes/plugins/jquery_plugin.py +0 -10
- flask_exts-0.2.6/src/flask_exts/themes/plugins/list_action_plugin.py +0 -10
- flask_exts-0.2.6/src/flask_exts/themes/plugins/plugin_manager.py +0 -83
- flask_exts-0.2.6/src/flask_exts/themes/plugins/qrcode_plugin.py +0 -10
- flask_exts-0.2.6/src/flask_exts/themes/plugins/rediscli_plugin.py +0 -13
- flask_exts-0.2.6/src/flask_exts/themes/plugins/sphinx_copybutton_plugin.py +0 -13
- flask_exts-0.2.6/src/flask_exts/themes/static/js/filters.js +0 -205
- flask_exts-0.2.6/src/flask_exts/themes/static/js/form.js +0 -680
- flask_exts-0.2.6/src/flask_exts/themes/static/js/modal.js +0 -8
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap-icons/bootstrap-icons.svg +0 -1
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap-icons/font/bootstrap-icons.css +0 -2078
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap-icons/font/bootstrap-icons.json +0 -2052
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap-icons/font/bootstrap-icons.min.css +0 -5
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap-icons/font/bootstrap-icons.scss +0 -2090
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff +0 -0
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff2 +0 -0
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap4/bootstrap.bundle.min.js +0 -7
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap4/bootstrap.min.css +0 -7
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap5/bootstrap.bundle.min.js +0 -7
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/bootstrap5/bootstrap.min.css +0 -6
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/clipboard/clipboard.min.js +0 -7
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/daterangepicker/daterangepicker.css +0 -410
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/daterangepicker/daterangepicker.js +0 -1578
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/jquery/jquery.min.js +0 -2
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/moment.min.js +0 -1
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/select2/select2.min.css +0 -1
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/select2/select2.min.js +0 -2
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/vanilla-editor/css/bootstrap-editable.css +0 -670
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/vanilla-editor/img/clear.png +0 -0
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/vanilla-editor/img/loading.gif +0 -0
- flask_exts-0.2.6/src/flask_exts/themes/static/vendor/vanilla-editor/js/bootstrap-editable.min.js +0 -1
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/index.html +0 -11
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/master.html +0 -47
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/model/create.html +0 -31
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/model/details.html +0 -57
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/model/edit.html +0 -41
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/model/list.html +0 -205
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/model/modals/create.html +0 -12
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/model/modals/details.html +0 -42
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/admin/model/modals/edit.html +0 -14
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/base.html +0 -15
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/bootstrap4/form.html +0 -313
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/bootstrap4/message.html +0 -37
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/bootstrap4/pagination.html +0 -79
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/bootstrap5/form.html +0 -303
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/bootstrap5/message.html +0 -38
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/index.html +0 -22
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/layout.html +0 -11
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/actions.html +0 -42
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/form.html +0 -168
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/icon.html +0 -16
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/inline.html +0 -45
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/layout.html +0 -107
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/menu.html +0 -98
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/message.html +0 -17
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/nav.html +0 -17
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/pagination.html +0 -95
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/row_actions.html +0 -40
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/table.html +0 -141
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/macro/vendor.html +0 -17
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/file/form.html +0 -9
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/file/list.html +0 -202
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/file/modals/form.html +0 -9
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/rediscli/console.html +0 -29
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/rediscli/response.html +0 -32
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/change_password.html +0 -11
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/forgot_password.html +0 -11
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/index.html +0 -24
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/list.html +0 -7
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/login.html +0 -14
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/recovery.html +0 -10
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/recovery_codes.html +0 -50
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/register.html +0 -14
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/reset_password.html +0 -11
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/setup_tfa.html +0 -45
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/show_tfa.html +0 -18
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/verify_email.html +0 -9
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/verify_tfa.html +0 -11
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/views/user/verify_tfa_modal.html +0 -17
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/widgets/inline_field_list.html +0 -4
- flask_exts-0.2.6/src/flask_exts/themes/templates/default/widgets/inline_form.html +0 -5
- flask_exts-0.2.6/src/flask_exts/themes/theme.py +0 -49
- flask_exts-0.2.6/src/flask_exts/translations/en/LC_MESSAGES/messages.po +0 -577
- flask_exts-0.2.6/src/flask_exts/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
- flask_exts-0.2.6/src/flask_exts/translations/zh_CN/LC_MESSAGES/messages.po +0 -564
- flask_exts-0.2.6/src/flask_exts/types.py +0 -8
- flask_exts-0.2.6/src/flask_exts/usercenter/base_user_store.py +0 -29
- flask_exts-0.2.6/src/flask_exts/usercenter/core.py +0 -43
- flask_exts-0.2.6/src/flask_exts/usercenter/models/webauthn.py +0 -41
- flask_exts-0.2.6/src/flask_exts/utils/__init__.py +0 -5
- flask_exts-0.2.6/src/flask_exts/utils/flask.py +0 -16
- flask_exts-0.2.6/src/flask_exts/utils/image.py +0 -12
- flask_exts-0.2.6/src/flask_exts/utils/jwt.py +0 -34
- flask_exts-0.2.6/src/flask_exts/utils/request_user.py +0 -64
- flask_exts-0.2.6/src/flask_exts/utils/sqla.py +0 -220
- flask_exts-0.2.6/src/flask_exts/utils/tools.py +0 -177
- flask_exts-0.2.6/src/flask_exts/utils/url.py +0 -38
- flask_exts-0.2.6/src/flask_exts/views/file/__init__.py +0 -1
- flask_exts-0.2.6/src/flask_exts/views/file/base_file_view.py +0 -1161
- flask_exts-0.2.6/src/flask_exts/views/file/local_file_storage.py +0 -122
- flask_exts-0.2.6/src/flask_exts/views/file/local_file_view.py +0 -15
- flask_exts-0.2.6/src/flask_exts/views/rediscli/mock_redis.py +0 -155
- flask_exts-0.2.6/src/flask_exts/views/rediscli/view.py +0 -185
- flask_exts-0.2.6/tests/__init__.py +0 -1
- flask_exts-0.2.6/tests/admin/customer/conftest.py +0 -37
- flask_exts-0.2.6/tests/admin/customer/templates/mock.html +0 -1
- flask_exts-0.2.6/tests/admin/customer/test_admin.py +0 -96
- flask_exts-0.2.6/tests/admin/sqla/__init__.py +0 -0
- flask_exts-0.2.6/tests/admin/sqla/test_basic.py +0 -2511
- flask_exts-0.2.6/tests/admin/sqla/test_form_rules.py +0 -86
- flask_exts-0.2.6/tests/admin/sqla/test_inlineform.py +0 -196
- flask_exts-0.2.6/tests/admin/sqla/test_multi_pk.py +0 -132
- flask_exts-0.2.6/tests/models/__init__.py +0 -6
- flask_exts-0.2.6/tests/models/message.py +0 -15
- flask_exts-0.2.6/tests/models/model1.py +0 -175
- flask_exts-0.2.6/tests/models/multpk.py +0 -7
- flask_exts-0.2.6/tests/models/polymorphic.py +0 -35
- flask_exts-0.2.6/tests/models/tree.py +0 -7
- flask_exts-0.2.6/tests/models/user.py +0 -41
- flask_exts-0.2.6/tests/security/authorizer/__init__.py +0 -0
- flask_exts-0.2.6/tests/security/authorizer/casbin_adapter/rbac_model.conf +0 -14
- flask_exts-0.2.6/tests/security/authorizer/casbin_adapter/rbac_policy.csv +0 -6
- flask_exts-0.2.6/tests/security/authorizer/casbin_adapter/test_sqlalchemy_adapter.py +0 -392
- flask_exts-0.2.6/tests/security/authorizer/casbin_files/authz_policy.csv +0 -11
- flask_exts-0.2.6/tests/security/authorizer/casbin_files/rbac_model.conf +0 -14
- flask_exts-0.2.6/tests/security/authorizer/casbin_files/rbac_policy.csv +0 -8
- flask_exts-0.2.6/tests/security/authorizer/test_casbin_auth.py +0 -148
- flask_exts-0.2.6/tests/security/test_principal.py +0 -705
- flask_exts-0.2.6/tests/template/__init__.py +0 -0
- flask_exts-0.2.6/tests/template/bootstrap4/__init__.py +0 -0
- flask_exts-0.2.6/tests/template/bootstrap4/test_render_field.py +0 -94
- flask_exts-0.2.6/tests/template/bootstrap4/test_render_form.py +0 -241
- flask_exts-0.2.6/tests/template/bootstrap4/test_render_form_row.py +0 -67
- flask_exts-0.2.6/tests/template/bootstrap4/test_render_hidden_errors.py +0 -30
- flask_exts-0.2.6/tests/template/bootstrap4/test_render_icon.py +0 -88
- flask_exts-0.2.6/tests/template/bootstrap4/test_render_messages.py +0 -59
- flask_exts-0.2.6/tests/template/bootstrap4/test_render_pager.py +0 -35
- flask_exts-0.2.6/tests/template/bootstrap4/test_render_pagination.py +0 -35
- flask_exts-0.2.6/tests/template/bootstrap4/test_render_table.py +0 -334
- flask_exts-0.2.6/tests/template/bootstrap5/__init__.py +0 -0
- flask_exts-0.2.6/tests/template/bootstrap5/_test_base.py +0 -16
- flask_exts-0.2.6/tests/template/bootstrap5/_test_render_form.py +0 -152
- flask_exts-0.2.6/tests/template/bootstrap5/_test_render_form_row.py +0 -19
- flask_exts-0.2.6/tests/template/bootstrap5/_test_render_messages.py +0 -16
- flask_exts-0.2.6/tests/template/bootstrap5/_test_render_pagination.py +0 -33
- flask_exts-0.2.6/tests/template/bootstrap5/conftest.py +0 -15
- flask_exts-0.2.6/tests/template/forms/test_csrf.py +0 -38
- flask_exts-0.2.6/tests/template/forms/test_fields.py +0 -76
- flask_exts-0.2.6/tests/template/macros/test_render_nav_item.py +0 -22
- flask_exts-0.2.6/tests/template/test_base.py +0 -16
- flask_exts-0.2.6/tests/templates/method.html +0 -1
- flask_exts-0.2.6/tests/templates/mock.html +0 -1
- flask_exts-0.2.6/tests/test_base.py +0 -29
- flask_exts-0.2.6/tests/test_flask.py +0 -34
- flask_exts-0.2.6/tests/translations/en/LC_MESSAGES/messages.mo +0 -0
- flask_exts-0.2.6/tests/translations/en/LC_MESSAGES/messages.po +0 -24
- flask_exts-0.2.6/tests/translations/zh_CN/LC_MESSAGES/messages.po +0 -24
- flask_exts-0.2.6/tests/usercenter/test_sqla_usercenter.py +0 -34
- flask_exts-0.2.6/tests/utils/test_image.py +0 -7
- flask_exts-0.2.6/tests/utils/test_url.py +0 -19
- flask_exts-0.2.6/tests/views/files/dummy.txt +0 -0
- flask_exts-0.2.6/tests/views/test_file_view.py +0 -219
- flask_exts-0.2.6/tests/views/test_rediscli_view.py +0 -12
- {flask_exts-0.2.6 → flask_exts-0.2.8}/.github/workflows/release.yml +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/.readthedocs.yaml +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/LICENSE.rst +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/babel/babel.cfg +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/docs/Makefile +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/docs/_static/logo.png +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/docs/changes.rst +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/docs/make.bat +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/docs/requirements.txt +0 -0
- {flask_exts-0.2.6/examples/bootstrap → flask_exts-0.2.8/examples/demo}/__init__.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/file_op.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/models/post_tag.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/examples/demo/static/favicon.ico +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/requirements/build.in +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/requirements/test.in +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/constants.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/datastore/__init__.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/email/__init__.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/email/reset_password_sender.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/email/sender.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/email/smtp.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/email/verify_email_sender.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/security/authorizer → flask_exts-0.2.8/src/flask_exts/extension_core}/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/file.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/recaptcha.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/fields/switch.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/form/flask_form.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/form/session_csrf.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/validators/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/validators/field_list.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/validators/file.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/validators/recaptcha.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/widgets/checkbox.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/widgets/datetime.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/widgets/file.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/widgets/recaptcha.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/src/flask_exts/forms}/widgets/select.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template/form → flask_exts-0.2.8/src/flask_exts/html}/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template/forms → flask_exts-0.2.8/src/flask_exts/html/plugins}/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes/plugins → flask_exts-0.2.8/src/flask_exts/security}/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/translations → flask_exts-0.2.8/src/flask_exts/security/authorizer}/__init__.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/security/hasher.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/security → flask_exts-0.2.8/src/flask_exts/security/plugins}/two_factor_authentication.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/src/flask_exts/security/serializer.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/css/admin.css +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/css/rediscli.css +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/js/copybutton.js +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/js/detail_filter.js +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/js/qrcode.js +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/js/rediscli.js +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/js/security/base64.js +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/js/security/webauthn.js +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/logo.png +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/vendor/sphinx-copybutton/sphinx-copybutton.css +0 -0
- {flask_exts-0.2.6/src/flask_exts/themes → flask_exts-0.2.8/src/flask_exts}/static/vendor/sphinx-copybutton/sphinx-copybutton.js +0 -0
- {flask_exts-0.2.6/src/flask_exts/usercenter → flask_exts-0.2.8/src/flask_exts/translations}/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/usercenter/models → flask_exts-0.2.8/src/flask_exts/usercenter}/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/views/index → flask_exts-0.2.8/src/flask_exts/web/default_views}/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/views/rediscli → flask_exts-0.2.8/src/flask_exts/web/sqla}/__init__.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/template → flask_exts-0.2.8/tests}/__init__.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/data/copyleft.gif +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/data/copyleft.jpeg +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/data/copyleft.jpg +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/data/copyleft.png +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/data/copyleft.tiff +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/email/test_base.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/email/test_smtp.py +0 -0
- /flask_exts-0.2.6/examples/fileadmin/tmp/bbb/a.txt → /flask_exts-0.2.8/tests/forms/fields/test_inline.py +0 -0
- {flask_exts-0.2.6 → flask_exts-0.2.8}/tests/helper.py +0 -0
- {flask_exts-0.2.6/src/flask_exts/views/user → flask_exts-0.2.8/tests/html}/__init__.py +0 -0
- {flask_exts-0.2.6/tests/admin → flask_exts-0.2.8/tests/web}/__init__.py +0 -0
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
v0.2.8
|
|
2
|
+
------
|
|
3
|
+
|
|
4
|
+
Released 2026-09-27
|
|
5
|
+
|
|
6
|
+
- rewrite extension
|
|
7
|
+
- rewrite editable.js
|
|
8
|
+
|
|
9
|
+
v0.2.7
|
|
10
|
+
------
|
|
11
|
+
|
|
12
|
+
Released 2026-08-14
|
|
13
|
+
|
|
14
|
+
- rewrite db
|
|
15
|
+
|
|
1
16
|
v0.2.6
|
|
2
17
|
------
|
|
3
18
|
|
|
@@ -40,11 +55,8 @@ v0.2.2
|
|
|
40
55
|
Released 2025-04-09
|
|
41
56
|
|
|
42
57
|
- fix datetimepicker
|
|
43
|
-
- set session = db.session as default if ModelView of sqla init session is None
|
|
44
|
-
- set session = db.session as default if QueryAjaxModelLoader init session is None
|
|
45
58
|
- fix select.ajax for select2@4.1.0
|
|
46
59
|
- fix select in modal
|
|
47
|
-
- add casbin
|
|
48
60
|
- add module: security
|
|
49
61
|
|
|
50
62
|
v0.2.1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: Flask-Exts
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.8
|
|
4
4
|
Summary: Flask extensions with admin, SQLAlchemy, babel, forms, fields, widgets, and so on.
|
|
5
5
|
Project-URL: Documentation, https://flask-exts.readthedocs.io
|
|
6
6
|
Project-URL: Source, https://github.com/ojso/flask-exts
|
|
@@ -39,22 +39,18 @@ Classifier: Programming Language :: Python
|
|
|
39
39
|
Classifier: Programming Language :: Python :: 3
|
|
40
40
|
Classifier: Programming Language :: Python :: 3.10
|
|
41
41
|
Classifier: Programming Language :: Python :: 3.11
|
|
42
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
43
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
42
44
|
Classifier: Topic :: Software Development :: Build Tools
|
|
43
45
|
Requires-Python: >=3.10
|
|
44
|
-
Requires-Dist: casbin>=1.0
|
|
45
46
|
Requires-Dist: flask-babel>=4.0
|
|
46
47
|
Requires-Dist: flask-login>=0.6
|
|
47
|
-
Requires-Dist: flask-sqlalchemy>=3.0
|
|
48
48
|
Requires-Dist: flask>=3.0
|
|
49
|
-
Requires-Dist: pillow>=11.0
|
|
50
49
|
Requires-Dist: pyjwt>=2.0
|
|
51
50
|
Requires-Dist: pyotp>=2.0
|
|
52
|
-
Requires-Dist:
|
|
51
|
+
Requires-Dist: sqlalchemy>=2.0
|
|
53
52
|
Requires-Dist: tablib>=3.0
|
|
54
|
-
Requires-Dist: webauthn>=2.0
|
|
55
53
|
Requires-Dist: wtforms>=3.0
|
|
56
|
-
Provides-Extra: rediscli
|
|
57
|
-
Requires-Dist: redis>=4.0.0; extra == 'rediscli'
|
|
58
54
|
Description-Content-Type: text/x-rst
|
|
59
55
|
|
|
60
56
|
Flask Exts
|
|
@@ -62,11 +58,10 @@ Flask Exts
|
|
|
62
58
|
|
|
63
59
|
Flask-Exts is mainly inspired by:
|
|
64
60
|
|
|
65
|
-
- `Bootstrap <https://getbootstrap.com/>`_
|
|
66
61
|
- `Flask-Admin <https://github.com/pallets-eco/flask-admin/>`_
|
|
67
|
-
- `
|
|
62
|
+
- `Bootstrap <https://getbootstrap.com/>`_
|
|
68
63
|
|
|
69
|
-
Flask-Exts is
|
|
64
|
+
Flask-Exts is a Flask extension toolkit that combines SQLAlchemy, forms, Babel, and admin features to help developers build modern web applications quickly.
|
|
70
65
|
|
|
71
66
|
License
|
|
72
67
|
-------
|
|
@@ -81,7 +76,7 @@ Install and update using pip:
|
|
|
81
76
|
|
|
82
77
|
.. code-block:: console
|
|
83
78
|
|
|
84
|
-
$ pip install
|
|
79
|
+
$ pip install Flask-Exts
|
|
85
80
|
|
|
86
81
|
Examples
|
|
87
82
|
----------
|
|
@@ -89,14 +84,12 @@ Examples
|
|
|
89
84
|
.. code-block:: python
|
|
90
85
|
|
|
91
86
|
from flask import Flask
|
|
92
|
-
from flask_exts import
|
|
87
|
+
from flask_exts import ExtensionManager
|
|
93
88
|
|
|
94
89
|
app = Flask(__name__)
|
|
95
90
|
app.config["SECRET_KEY"] = "dev"
|
|
96
|
-
|
|
97
|
-
exts = Exts()
|
|
91
|
+
exts = ExtensionManager()
|
|
98
92
|
exts.init_app(app)
|
|
99
93
|
|
|
100
94
|
if __name__ == "__main__":
|
|
101
95
|
app.run(debug=True)
|
|
102
|
-
|
|
@@ -3,11 +3,10 @@ Flask Exts
|
|
|
3
3
|
|
|
4
4
|
Flask-Exts is mainly inspired by:
|
|
5
5
|
|
|
6
|
-
- `Bootstrap <https://getbootstrap.com/>`_
|
|
7
6
|
- `Flask-Admin <https://github.com/pallets-eco/flask-admin/>`_
|
|
8
|
-
- `
|
|
7
|
+
- `Bootstrap <https://getbootstrap.com/>`_
|
|
9
8
|
|
|
10
|
-
Flask-Exts is
|
|
9
|
+
Flask-Exts is a Flask extension toolkit that combines SQLAlchemy, forms, Babel, and admin features to help developers build modern web applications quickly.
|
|
11
10
|
|
|
12
11
|
License
|
|
13
12
|
-------
|
|
@@ -22,7 +21,7 @@ Install and update using pip:
|
|
|
22
21
|
|
|
23
22
|
.. code-block:: console
|
|
24
23
|
|
|
25
|
-
$ pip install
|
|
24
|
+
$ pip install Flask-Exts
|
|
26
25
|
|
|
27
26
|
Examples
|
|
28
27
|
----------
|
|
@@ -30,14 +29,12 @@ Examples
|
|
|
30
29
|
.. code-block:: python
|
|
31
30
|
|
|
32
31
|
from flask import Flask
|
|
33
|
-
from flask_exts import
|
|
32
|
+
from flask_exts import ExtensionManager
|
|
34
33
|
|
|
35
34
|
app = Flask(__name__)
|
|
36
35
|
app.config["SECRET_KEY"] = "dev"
|
|
37
|
-
|
|
38
|
-
exts = Exts()
|
|
36
|
+
exts = ExtensionManager()
|
|
39
37
|
exts.init_app(app)
|
|
40
38
|
|
|
41
39
|
if __name__ == "__main__":
|
|
42
40
|
app.run(debug=True)
|
|
43
|
-
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# extract messages from source files and generate a POT file
|
|
2
|
-
pybabel extract -F babel/babel.cfg -k lazy_gettext -o babel/messages.pot --project Flask-Exts src/flask_exts/
|
|
2
|
+
pybabel extract -F babel/babel.cfg -k lazy_gettext -o babel/messages.pot --project Flask-Exts src/flask_exts/
|
|
3
3
|
|
|
4
4
|
# update PO files from a POT file
|
|
5
5
|
pybabel update -i babel/messages.pot -d src/flask_exts/translations -D messages
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
# Translations template for Flask-Exts.
|
|
2
|
+
# Copyright (C) 2026 ORGANIZATION
|
|
3
|
+
# This file is distributed under the same license as the Flask-Exts project.
|
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2026.
|
|
5
|
+
#
|
|
6
|
+
#, fuzzy
|
|
7
|
+
msgid ""
|
|
8
|
+
msgstr ""
|
|
9
|
+
"Project-Id-Version: Flask-Exts VERSION\n"
|
|
10
|
+
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
|
11
|
+
"POT-Creation-Date: 2026-05-24 22:01+0800\n"
|
|
12
|
+
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
13
|
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
14
|
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
15
|
+
"MIME-Version: 1.0\n"
|
|
16
|
+
"Content-Type: text/plain; charset=utf-8\n"
|
|
17
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
18
|
+
"Generated-By: Babel 2.17.0\n"
|
|
19
|
+
|
|
20
|
+
#: src/flask_exts/admin/model/actions.py:114
|
|
21
|
+
msgid "Delete"
|
|
22
|
+
msgstr ""
|
|
23
|
+
|
|
24
|
+
#: src/flask_exts/admin/model/actions.py:115
|
|
25
|
+
msgid "Are you sure you want to delete selected records?"
|
|
26
|
+
msgstr ""
|
|
27
|
+
|
|
28
|
+
#: src/flask_exts/admin/model/actions.py:121
|
|
29
|
+
#: src/flask_exts/admin/model/view.py:1417
|
|
30
|
+
#, python-format
|
|
31
|
+
msgid "Record was successfully deleted."
|
|
32
|
+
msgid_plural "%(count)s records were successfully deleted."
|
|
33
|
+
msgstr[0] ""
|
|
34
|
+
msgstr[1] ""
|
|
35
|
+
|
|
36
|
+
#: src/flask_exts/admin/model/filter.py:88
|
|
37
|
+
#: src/flask_exts/template/forms/widgets/xeditable.py:53
|
|
38
|
+
msgid "Yes"
|
|
39
|
+
msgstr ""
|
|
40
|
+
|
|
41
|
+
#: src/flask_exts/admin/model/filter.py:88
|
|
42
|
+
#: src/flask_exts/template/forms/widgets/xeditable.py:52
|
|
43
|
+
msgid "No"
|
|
44
|
+
msgstr ""
|
|
45
|
+
|
|
46
|
+
#: src/flask_exts/admin/model/filter.py:178
|
|
47
|
+
msgid "between"
|
|
48
|
+
msgstr ""
|
|
49
|
+
|
|
50
|
+
#: src/flask_exts/admin/model/filter_mixin.py:182
|
|
51
|
+
#, python-format
|
|
52
|
+
msgid "Invalid Filter Value: %(value)s"
|
|
53
|
+
msgstr ""
|
|
54
|
+
|
|
55
|
+
#: src/flask_exts/admin/model/rowaction.py:15
|
|
56
|
+
#: src/flask_exts/admin/model/rowaction.py:22
|
|
57
|
+
msgid "View Record"
|
|
58
|
+
msgstr ""
|
|
59
|
+
|
|
60
|
+
#: src/flask_exts/admin/model/rowaction.py:29
|
|
61
|
+
#: src/flask_exts/admin/model/rowaction.py:36
|
|
62
|
+
#: src/flask_exts/templates/admin/model/modals/edit.html:2
|
|
63
|
+
msgid "Edit Record"
|
|
64
|
+
msgstr ""
|
|
65
|
+
|
|
66
|
+
#: src/flask_exts/admin/model/rowaction.py:43
|
|
67
|
+
msgid "Delete Record"
|
|
68
|
+
msgstr ""
|
|
69
|
+
|
|
70
|
+
#: src/flask_exts/admin/model/rowaction.py:45
|
|
71
|
+
msgid "Are you sure you want to delete this record?"
|
|
72
|
+
msgstr ""
|
|
73
|
+
|
|
74
|
+
#: src/flask_exts/admin/model/view.py:1295
|
|
75
|
+
msgid "Record was successfully created."
|
|
76
|
+
msgstr ""
|
|
77
|
+
|
|
78
|
+
#: src/flask_exts/admin/model/view.py:1340
|
|
79
|
+
#: src/flask_exts/admin/model/view.py:1383
|
|
80
|
+
#: src/flask_exts/admin/model/view.py:1411
|
|
81
|
+
#: src/flask_exts/admin/model/view.py:1595
|
|
82
|
+
msgid "Record does not exist."
|
|
83
|
+
msgstr ""
|
|
84
|
+
|
|
85
|
+
#: src/flask_exts/admin/model/view.py:1347
|
|
86
|
+
#: src/flask_exts/admin/model/view.py:1599
|
|
87
|
+
msgid "Record was successfully saved."
|
|
88
|
+
msgstr ""
|
|
89
|
+
|
|
90
|
+
#: src/flask_exts/admin/model/view.py:1470
|
|
91
|
+
msgid "Permission denied."
|
|
92
|
+
msgstr ""
|
|
93
|
+
|
|
94
|
+
#: src/flask_exts/admin/model/view.py:1549
|
|
95
|
+
#, python-format
|
|
96
|
+
msgid "Export type \"%(type)s not supported."
|
|
97
|
+
msgstr ""
|
|
98
|
+
|
|
99
|
+
#: src/flask_exts/admin/model/view.py:1603
|
|
100
|
+
#: src/flask_exts/admin/model/view.py:1610
|
|
101
|
+
#: src/flask_exts/admin/model/view.py:1617
|
|
102
|
+
#: src/flask_exts/admin/sqla/view.py:474
|
|
103
|
+
#, python-format
|
|
104
|
+
msgid "Failed to update record. %(error)s"
|
|
105
|
+
msgstr ""
|
|
106
|
+
|
|
107
|
+
#: src/flask_exts/admin/sqla/filter.py:43
|
|
108
|
+
msgid "equals"
|
|
109
|
+
msgstr ""
|
|
110
|
+
|
|
111
|
+
#: src/flask_exts/admin/sqla/filter.py:51
|
|
112
|
+
msgid "not equal"
|
|
113
|
+
msgstr ""
|
|
114
|
+
|
|
115
|
+
#: src/flask_exts/admin/sqla/filter.py:59
|
|
116
|
+
msgid "greater than"
|
|
117
|
+
msgstr ""
|
|
118
|
+
|
|
119
|
+
#: src/flask_exts/admin/sqla/filter.py:67
|
|
120
|
+
msgid "smaller than"
|
|
121
|
+
msgstr ""
|
|
122
|
+
|
|
123
|
+
#: src/flask_exts/admin/sqla/filter.py:75
|
|
124
|
+
msgid "contains"
|
|
125
|
+
msgstr ""
|
|
126
|
+
|
|
127
|
+
#: src/flask_exts/admin/sqla/filter.py:83
|
|
128
|
+
msgid "not contains"
|
|
129
|
+
msgstr ""
|
|
130
|
+
|
|
131
|
+
#: src/flask_exts/admin/sqla/filter.py:91
|
|
132
|
+
msgid "empty"
|
|
133
|
+
msgstr ""
|
|
134
|
+
|
|
135
|
+
#: src/flask_exts/admin/sqla/filter.py:105
|
|
136
|
+
msgid "in list"
|
|
137
|
+
msgstr ""
|
|
138
|
+
|
|
139
|
+
#: src/flask_exts/admin/sqla/filter.py:116
|
|
140
|
+
msgid "not in list"
|
|
141
|
+
msgstr ""
|
|
142
|
+
|
|
143
|
+
#: src/flask_exts/admin/sqla/filter.py:204
|
|
144
|
+
#: src/flask_exts/admin/sqla/filter.py:236
|
|
145
|
+
#: src/flask_exts/admin/sqla/filter.py:268
|
|
146
|
+
msgid "not between"
|
|
147
|
+
msgstr ""
|
|
148
|
+
|
|
149
|
+
#: src/flask_exts/admin/sqla/view.py:453
|
|
150
|
+
#, python-format
|
|
151
|
+
msgid "Failed to create record. %(error)s"
|
|
152
|
+
msgstr ""
|
|
153
|
+
|
|
154
|
+
#: src/flask_exts/admin/sqla/view.py:487
|
|
155
|
+
#, python-format
|
|
156
|
+
msgid "Failed to delete record. %(error)s"
|
|
157
|
+
msgstr ""
|
|
158
|
+
|
|
159
|
+
#: src/flask_exts/template/forms/fields/ajax_select.py:60
|
|
160
|
+
#: src/flask_exts/template/forms/fields/ajax_select.py:110
|
|
161
|
+
#: src/flask_exts/template/forms/fields/sqla.py:118
|
|
162
|
+
#: src/flask_exts/template/forms/fields/sqla.py:170
|
|
163
|
+
#: src/flask_exts/template/forms/fields/sqla.py:175
|
|
164
|
+
msgid "Not a valid choice"
|
|
165
|
+
msgstr ""
|
|
166
|
+
|
|
167
|
+
#: src/flask_exts/template/forms/fields/datetime.py:102
|
|
168
|
+
msgid "Invalid time format"
|
|
169
|
+
msgstr ""
|
|
170
|
+
|
|
171
|
+
#: src/flask_exts/template/forms/fields/file.py:66
|
|
172
|
+
#: src/flask_exts/template/forms/fields/file.py:76
|
|
173
|
+
#, python-format
|
|
174
|
+
msgid "File \"%s\" already exists."
|
|
175
|
+
msgstr ""
|
|
176
|
+
|
|
177
|
+
#: src/flask_exts/template/forms/fields/json.py:13
|
|
178
|
+
msgid "Invalid JSON"
|
|
179
|
+
msgstr ""
|
|
180
|
+
|
|
181
|
+
#: src/flask_exts/template/forms/fields/select.py:62
|
|
182
|
+
msgid "Invalid Choice: could not coerce"
|
|
183
|
+
msgstr ""
|
|
184
|
+
|
|
185
|
+
#: src/flask_exts/template/forms/form/csrf.py:57
|
|
186
|
+
msgid "CSRF token expired."
|
|
187
|
+
msgstr ""
|
|
188
|
+
|
|
189
|
+
#: src/flask_exts/template/forms/validators/field_list.py:11
|
|
190
|
+
msgid "This field requires at least one item."
|
|
191
|
+
msgstr ""
|
|
192
|
+
|
|
193
|
+
#: src/flask_exts/template/forms/validators/file.py:18
|
|
194
|
+
msgid "This field is required."
|
|
195
|
+
msgstr ""
|
|
196
|
+
|
|
197
|
+
#: src/flask_exts/template/forms/validators/file.py:50
|
|
198
|
+
#, python-brace-format
|
|
199
|
+
msgid "File does not have an approved extension: {extensions}"
|
|
200
|
+
msgstr ""
|
|
201
|
+
|
|
202
|
+
#: src/flask_exts/template/forms/validators/file.py:85
|
|
203
|
+
#, python-brace-format
|
|
204
|
+
msgid "File must be between {min_size} and {max_size} bytes."
|
|
205
|
+
msgstr ""
|
|
206
|
+
|
|
207
|
+
#: src/flask_exts/template/forms/validators/sqla.py:38
|
|
208
|
+
msgid "Already exists."
|
|
209
|
+
msgstr ""
|
|
210
|
+
|
|
211
|
+
#: src/flask_exts/template/forms/validators/sqla.py:56
|
|
212
|
+
#, python-format
|
|
213
|
+
msgid "At least %(num)d item is required"
|
|
214
|
+
msgid_plural "At least %(num)d items are required"
|
|
215
|
+
msgstr[0] ""
|
|
216
|
+
msgstr[1] ""
|
|
217
|
+
|
|
218
|
+
#: src/flask_exts/template/forms/widgets/select.py:72
|
|
219
|
+
msgid "Please select model"
|
|
220
|
+
msgstr ""
|
|
221
|
+
|
|
222
|
+
#: src/flask_exts/templates/admin/model/create.html:8
|
|
223
|
+
#: src/flask_exts/templates/admin/model/edit.html:7
|
|
224
|
+
msgid "List"
|
|
225
|
+
msgstr ""
|
|
226
|
+
|
|
227
|
+
#: src/flask_exts/templates/admin/model/create.html:11
|
|
228
|
+
#: src/flask_exts/templates/admin/model/edit.html:11
|
|
229
|
+
msgid "Create"
|
|
230
|
+
msgstr ""
|
|
231
|
+
|
|
232
|
+
#: src/flask_exts/templates/admin/model/edit.html:15
|
|
233
|
+
msgid "Edit"
|
|
234
|
+
msgstr ""
|
|
235
|
+
|
|
236
|
+
#: src/flask_exts/templates/admin/model/edit.html:18
|
|
237
|
+
msgid "Details"
|
|
238
|
+
msgstr ""
|
|
239
|
+
|
|
240
|
+
#: src/flask_exts/templates/admin/model/modals/create.html:2
|
|
241
|
+
msgid "Create New Record"
|
|
242
|
+
msgstr ""
|
|
243
|
+
|
|
244
|
+
#: src/flask_exts/templates/macro/form.html:62
|
|
245
|
+
#: src/flask_exts/templates/macro/form.html:75
|
|
246
|
+
msgid "Save"
|
|
247
|
+
msgstr ""
|
|
248
|
+
|
|
249
|
+
#: src/flask_exts/templates/macro/form.html:74
|
|
250
|
+
msgid "Cancel"
|
|
251
|
+
msgstr ""
|
|
252
|
+
|
|
253
|
+
#: src/flask_exts/templates/macro/form.html:81
|
|
254
|
+
msgid "Save and Add Another"
|
|
255
|
+
msgstr ""
|
|
256
|
+
|
|
257
|
+
#: src/flask_exts/templates/macro/form.html:82
|
|
258
|
+
msgid "Save and Continue Editing"
|
|
259
|
+
msgstr ""
|
|
260
|
+
|
|
261
|
+
#: src/flask_exts/templates/macro/layout.html:4
|
|
262
|
+
#: src/flask_exts/templates/macro/layout.html:7
|
|
263
|
+
#: src/flask_exts/templates/macro/layout.html:13
|
|
264
|
+
msgid "Export"
|
|
265
|
+
msgstr ""
|
|
266
|
+
|
|
267
|
+
#: src/flask_exts/templates/macro/layout.html:20
|
|
268
|
+
msgid "Add Filter"
|
|
269
|
+
msgstr ""
|
|
270
|
+
|
|
271
|
+
#: src/flask_exts/templates/macro/layout.html:29
|
|
272
|
+
msgid "items"
|
|
273
|
+
msgstr ""
|
|
274
|
+
|
|
275
|
+
#: src/flask_exts/templates/user/index.html:10
|
|
276
|
+
msgid "User ID"
|
|
277
|
+
msgstr ""
|
|
278
|
+
|
|
279
|
+
#: src/flask_exts/templates/user/index.html:11
|
|
280
|
+
msgid "Account Name"
|
|
281
|
+
msgstr ""
|
|
282
|
+
|
|
283
|
+
#: src/flask_exts/templates/user/index.html:12
|
|
284
|
+
msgid "Email Address"
|
|
285
|
+
msgstr ""
|
|
286
|
+
|
|
287
|
+
#: src/flask_exts/templates/user/index.html:14
|
|
288
|
+
msgid "Security Status"
|
|
289
|
+
msgstr ""
|
|
290
|
+
|
|
291
|
+
#: src/flask_exts/templates/user/index.html:15
|
|
292
|
+
msgid "Verified"
|
|
293
|
+
msgstr ""
|
|
294
|
+
|
|
295
|
+
#: src/flask_exts/templates/user/index.html:15
|
|
296
|
+
msgid "Pending Verification"
|
|
297
|
+
msgstr ""
|
|
298
|
+
|
|
299
|
+
#: src/flask_exts/templates/user/index.html:26
|
|
300
|
+
msgid "Action Required"
|
|
301
|
+
msgstr ""
|
|
302
|
+
|
|
303
|
+
#: src/flask_exts/templates/user/index.html:27
|
|
304
|
+
msgid "Verify Now"
|
|
305
|
+
msgstr ""
|
|
306
|
+
|
|
307
|
+
#: src/flask_exts/templates/user/index.html:33
|
|
308
|
+
msgid "Password Management"
|
|
309
|
+
msgstr ""
|
|
310
|
+
|
|
311
|
+
#: src/flask_exts/templates/user/index.html:34
|
|
312
|
+
msgid "Change Password"
|
|
313
|
+
msgstr ""
|
|
314
|
+
|
|
315
|
+
#: src/flask_exts/templates/user/index.html:39
|
|
316
|
+
msgid "Two-Factor Auth"
|
|
317
|
+
msgstr ""
|
|
318
|
+
|
|
319
|
+
#: src/flask_exts/templates/user/index.html:40
|
|
320
|
+
msgid "Set Up 2FA"
|
|
321
|
+
msgstr ""
|
|
322
|
+
|
|
323
|
+
#: src/flask_exts/templates/user/index.html:45
|
|
324
|
+
msgid "Session Control"
|
|
325
|
+
msgstr ""
|
|
326
|
+
|
|
327
|
+
#: src/flask_exts/templates/user/index.html:46
|
|
328
|
+
msgid "Log Out"
|
|
329
|
+
msgstr ""
|
|
330
|
+
|
|
331
|
+
#: src/flask_exts/templates/user/login.html:18
|
|
332
|
+
msgid "Don't have an account?"
|
|
333
|
+
msgstr ""
|
|
334
|
+
|
|
335
|
+
#: src/flask_exts/templates/user/login.html:19
|
|
336
|
+
msgid "Sign Up"
|
|
337
|
+
msgstr ""
|
|
338
|
+
|
|
339
|
+
#: src/flask_exts/templates/user/login.html:22
|
|
340
|
+
msgid "Forgot your password?"
|
|
341
|
+
msgstr ""
|
|
342
|
+
|
|
343
|
+
#: src/flask_exts/templates/user/login.html:23
|
|
344
|
+
msgid "Reset It"
|
|
345
|
+
msgstr ""
|
|
346
|
+
|