flask-appbuilder 5.2.2rc2__tar.gz → 5.2.3__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_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/CHANGELOG.rst +8 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/Flask_AppBuilder.egg-info/PKG-INFO +1 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/PKG-INFO +1 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/__init__.py +1 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/_compat.py +6 -5
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/baseviews.py +1 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/cli.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/filemanager.py +1 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/generic/filters.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/mixins.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/decorators.py +6 -3
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/schemas.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/user/api.py +4 -8
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/views.py +15 -7
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/utils/base.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/views.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/widgets.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/setup.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/security/test_auth_ldap.py +45 -45
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/security/test_auth_oauth.py +9 -9
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/security/test_mvc_security.py +21 -2
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_addon.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_custom_indexview.py +3 -3
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_fab_cli.py +3 -3
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_hooks.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_mvc.py +1 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_security_api.py +0 -1
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/.coveragerc +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/.env +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/.github/ISSUE_TEMPLATE.md +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/.github/prlint.json +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/.github/stale.yml +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/.github/workflows/ci.yml +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/.github/workflows/odbcinst.ini +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/.gitignore +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/CONTRIBUTING.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/Flask_AppBuilder.egg-info/SOURCES.txt +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/Flask_AppBuilder.egg-info/dependency_links.txt +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/Flask_AppBuilder.egg-info/entry_points.txt +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/Flask_AppBuilder.egg-info/not-zip-safe +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/Flask_AppBuilder.egg-info/requires.txt +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/Flask_AppBuilder.egg-info/top_level.txt +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/LICENSE +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/MANIFEST.in +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/RELEASE.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/babel_extract.sh +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/babel_init.sh +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/bootswatch_update.sh +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/db_create.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/db_migrate.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/db_upgrade.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/hash_db_password.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/migrate_db_0.7.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/migrate_db_1.3.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/bin/sqlite_upgrade_1.3.sql +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docker-compose.yml +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/Makefile +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_static/Flask-AppBuilder.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_templates/layout.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/LICENSE +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/README +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/flask/layout.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/flask/relations.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/flask/static/Flask-AppBuilder.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/flask/static/flasky.css_t +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/flask/theme.conf +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/flask_small/layout.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/flask_small/static/flasky.css_t +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/flask_small/theme.conf +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/_themes/flask_theme_support.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/actions.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/addons.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/advanced.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/api.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/cli.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/conf.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/config.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/customizing.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/diagrams.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/generic_datasource.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/i18n.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/ListThumbnail.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/chart.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/chart_time1.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/chart_time2.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/charts.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/contact_list.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/contacts.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/direct_chart.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/fab.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/group_list.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/grouped_chart.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/groups.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/images_list.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/list_cascade.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/list_cascade_block.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/list_compact_inline.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/list_master_detail.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/login.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/login_db.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/oauth_login.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/oauth_login_one_provider.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/security.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/simpleview2.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/swagger001.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/images/swagger002.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/index.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/installation.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/intro.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/make.bat +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/multipledbs.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/quickcharts.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/quickfiles.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/quickhowto.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/quickminimal.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/relations.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/rest_api.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/security.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/templates.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/user_registration.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/versionmigration.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/docs/views.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/base_api/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/base_api/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/base_api/app/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/base_api/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/basefilter/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/composite_keys/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/composite_keys/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/composite_keys/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/composite_keys/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/composite_keys/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/composite_keys/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/app/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/crud_rest_api/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/employees/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/employees/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/employees/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/employees/app/security.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/employees/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/employees/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/employees/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/enums/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/app/sec.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/app/sec_forms.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/app/sec_views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/app/sec.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/app/sec_forms.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/app/sec_views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/extendsecurity2/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/factoryapp/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/masterdetail/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/.gitignore +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/app/forms.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/app/security.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/oauth/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/app/translations/es/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/app/translations/es/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/productsale/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/app/translations/es/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/app/translations/es/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickactions/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/app/data.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/build/bdist.linux-i686/egg/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/build/bdist.linux-i686/egg/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/build/bdist.linux-i686/egg/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/build/lib/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/build/lib/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/build/lib/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickcharts2/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/translations/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/translations/es/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/translations/es/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/translations/es/LC_MESSAGES/messages.po~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/translations/pt/LC_MESSAGES/messages.po~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickfiles/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/forms.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/indexview.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/sec.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/sec_models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/sec_views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abBtnAdd.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abBtnDelete.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abBtnEdit.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abBtnShow.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abDate.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abMenuPageSize.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abModalOkCancel.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abModelSearch.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abModelTable.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abPagination.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/angularAssets/abSelect.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/css/clean-blog.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/css/scrolling-nav.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/img/brand.jpg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/img/loading.gif +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/Controllers/alertsCtrl.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/Controllers/searchCtrl.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/Controllers/tableCtrl.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/Directives/bigDirectives.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/Directives/btnDirectives.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/Services/apiService.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/angular.min.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/app.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/clean-blog.min.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/static/js/scrolling-nav.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/appbuilder/index.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/index.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/list_angulajs.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/list_contacts.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/list_json.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/mylist.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/new_base.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/show_contacts.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/widgets/list.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/templates/widgets/list_override.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto2/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/.coverage +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/migrate_db_0.7.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickhowto3/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/app/translations/es/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/app/translations/es/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickimages/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickmigrate/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quickminimal/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/.idea/encodings.xml +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/.idea/misc.xml +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/.idea/modules.xml +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/.idea/quicksqlviews.iml +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/.idea/workspace.xml +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicksqlviews/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/app/static/css/landing-page.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/app/templates/mybase.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/quicktemplates/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/.babelrc +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/README.md +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/package-lock.json +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/package.json +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/package.json.react-original +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/public/favicon.ico +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/public/index.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/public/manifest.json +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/src/App.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/src/api/Api.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/src/components/CRUDButtons.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/src/components/Forms.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/src/components/Table.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/src/index.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/static/webpack.config.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/templates/base.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/templates/react.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/react-rest-api/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/related_fields/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/.gitignore +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/app/forms.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/app/templates/404.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleform/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview1/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview1/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview1/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview1/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview1/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview1/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview1/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview2/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview2/app/templates/method3.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview2/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview2/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview2/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview2/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/simpleview2/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/user_registration/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/NAMES.DIC +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/README.rst +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/app/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/app/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/app/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/app/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/app/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/babel/babel.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/babel/messages.pot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/babel/messages.pot~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/config.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/run.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/examples/widgets/testdata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/actions.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/api/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/api/convert.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/api/manager.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/api/schemas.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/babel/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/babel/manager.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/babel/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/base.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/basemanager.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/charts/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/charts/jsontools.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/charts/views.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/charts/widgets.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/const.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/exceptions.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/fields.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/fieldwidgets.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/filters.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/forms.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/hooks.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/menu.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/messages.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/base.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/decorators.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/filters.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/generic/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/generic/interface.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/group.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/sqla/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/sqla/base.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/sqla/base_legacy.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/sqla/filters.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/models/sqla/interface.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/events.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/forms.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/manager.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/registerviews.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/saml/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/saml/metadata.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/saml/types.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/saml/utils.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/signals.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/api_key/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/api_key/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/api_key/schema.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/group/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/group/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/group/schema.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/permission/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/permission/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/permission_view_menu/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/permission_view_menu/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/role/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/role/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/role/schema.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/user/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/user/schema.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/user/validator.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/view_menu/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/view_menu/api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/manager.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/utils.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/.DS_Store +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/ab.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/bootstrap-datepicker/bootstrap-datepicker3.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/bootstrap.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/bootstrap.min.css.map +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/flags/flags16.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/fontawesome/all.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/fontawesome/brands.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/fontawesome/fontawesome.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/fontawesome/regular.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/fontawesome/solid.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/fontawesome/svg-with-js.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/fontawesome/v4-font-face.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/fontawesome/v4-shims.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/fontawesome/v5-font-face.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/images/flags16.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/select2/select2-bootstrap.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/select2/select2.min.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/swagger/swagger-ui.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/amelia.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/cerulean.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/cosmo.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/cyborg.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/darkly.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/flatly.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/journal.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/lumen.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/paper.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/readable.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/sandstone.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/simplex.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/slate.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/solar.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/spacelab.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/superhero.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/united.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/themes/yeti.css +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/webfonts/fa-brands-400.ttf +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/webfonts/fa-brands-400.woff2 +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/webfonts/fa-regular-400.ttf +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/webfonts/fa-regular-400.woff2 +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/webfonts/fa-solid-900.ttf +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/webfonts/fa-solid-900.woff2 +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/webfonts/fa-v4compatibility.ttf +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/css/webfonts/fa-v4compatibility.woff2 +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.eot +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.svg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.ttf +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.woff +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/img/fab.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/img/glyphicons-halflings-white.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/img/glyphicons-halflings.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/ab.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/ab_actions.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/ab_filters.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/ab_keep_tab.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/bootstrap-datepicker/bootstrap-datepicker.min.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/bootstrap.min.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/google_charts.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/jquery-latest.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/select2/select2.min.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/static/appbuilder/js/swagger-ui-bundle.js +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/_formhelpers.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/base.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/baselayout.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/baselib.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/flash.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/footer.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/alert.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/charts/chart.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/charts/chart_time.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/charts/jsonchart.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/confirm.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/lib.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/model/add.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/model/edit.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/model/edit_cascade.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/model/left_master_detail.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/model/list.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/model/multiple_views.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/model/search.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/model/show.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/model/show_cascade.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/security/activation.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/security/login_db.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/security/login_ldap.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/security/login_oauth.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/security/login_saml.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/security/register_mail.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/security/register_oauth.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/base_list.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/chart.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/direct_chart.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/form.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/form_horizontal.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/form_inline.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/form_vertical.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/group_form_list.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/list.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/list_block.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/list_carousel.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/list_item.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/list_link.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/list_master.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/list_thumbnail.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/multiple_chart.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/roles/list.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/roles/show.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/search.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/show.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/show_block.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/general/widgets/show_vertical.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/index.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/init.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/navbar.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/navbar_menu.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/navbar_right.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/templates/appbuilder/swagger/swagger.html +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/de/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/de/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/el/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/el/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/es/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/es/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/fa/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/fa/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/fr/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/it/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/it/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/ja_JP/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/ja_JP/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/ko/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/ko/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/nl/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/nl/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/pl/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/pl/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/pt/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/pt/LC_MESSAGES/messages.po~ +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/ru/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/ru/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/sl/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/sl/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/tr/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/tr/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/zh/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/zh/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/zh_HK/LC_MESSAGES/messages.mo +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/translations/zh_HK/LC_MESSAGES/messages.po +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/upload.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/urltools.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/utils/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/utils/legacy.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/utils/limit.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/validators.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/ListThumbnail.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/chart.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/chart_time1.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/chart_time2.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/charts.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/contact_list.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/contacts.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/direct_chart.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/fab.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/group_list.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/grouped_chart.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/groups.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/images_list.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/list_cascade.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/list_cascade_block.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/list_compact_inline.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/list_master_detail.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/login.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/login_db.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/login_oauth.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/login_oid.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/security.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/images/simpleview2.png +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/release.sh +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/scripts/babel_extract.sh +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/scripts/babel_init.sh +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/setup.cfg +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/base.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/config_api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/config_oauth.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/config_security.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/config_security_api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/const.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/fixtures/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/fixtures/addon_manager.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/fixtures/data_models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/fixtures/users.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/security/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/security/test_base_security_manager.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/security/test_password_complexity.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/security/test_rate_limiter.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/sqla/__init__.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/sqla/models.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_api.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_detached_user.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_json_coverage_fixes.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_json_edge_cases.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_json_support.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_menu.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_mvc_oauth.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_security_manager.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_security_signals.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_sqlalchemy.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tests/test_urltools.py +0 -0
- {flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/tox.ini +0 -0
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
Flask-AppBuilder ChangeLog
|
|
2
2
|
==========================
|
|
3
3
|
|
|
4
|
-
Improvements and Bug fixes on 5.2.
|
|
4
|
+
Improvements and Bug fixes on 5.2.3
|
|
5
5
|
-----------------------------------
|
|
6
6
|
|
|
7
|
+
- fix: distinguish authentication from authorization redirects (#2479) [Amin Ghadersohi]
|
|
8
|
+
- fix: bump pinned dependencies to address vulnerabilities (#2474) [Daniel Vaz Gaspar]
|
|
9
|
+
|
|
10
|
+
Improvements and Bug fixes on 5.2.2
|
|
11
|
+
-----------------------------------
|
|
12
|
+
|
|
13
|
+
- fix: preserve safe login redirects for authenticated users and return 403 on authorization failures
|
|
7
14
|
- fix: anchor OAuth email whitelist regex to end of string (#2470) [Daniel Vaz Gaspar]
|
|
8
15
|
- fix: switch from uuid1 to uuid4 for better randomness (#2435) [Rin]
|
|
9
16
|
- fix: escape special characters in LDAP search filter username (#2469) [Daniel Vaz Gaspar]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: flask-appbuilder
|
|
3
|
-
Version: 5.2.
|
|
3
|
+
Version: 5.2.3
|
|
4
4
|
Summary: Simple and rapid application development framework, built on top of Flask. includes detailed security, auto CRUD generation for your models, google charts and much more.
|
|
5
5
|
Home-page: https://github.com/dpgaspar/flask-appbuilder/
|
|
6
6
|
Author: Daniel Vaz Gaspar
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: flask_appbuilder
|
|
3
|
-
Version: 5.2.
|
|
3
|
+
Version: 5.2.3
|
|
4
4
|
Summary: Simple and rapid application development framework, built on top of Flask. includes detailed security, auto CRUD generation for your models, google charts and much more.
|
|
5
5
|
Home-page: https://github.com/dpgaspar/flask-appbuilder/
|
|
6
6
|
Author: Daniel Vaz Gaspar
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Some py2/py3 compatibility support based on a stripped down
|
|
4
|
+
version of six so we don't have to depend on a specific version
|
|
5
|
+
of it.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
:copyright: (c) 2013 by Armin Ronacher.
|
|
8
|
+
:license: BSD, see LICENSE for more details.
|
|
9
9
|
"""
|
|
10
|
+
|
|
10
11
|
import sys
|
|
11
12
|
|
|
12
13
|
PY2 = sys.version_info[0] == 2
|
|
@@ -197,7 +197,7 @@ class ImageManager(FileManager):
|
|
|
197
197
|
:param image: The image object
|
|
198
198
|
:param size: size is PIL tuple (width, height, force) ex: (200,100,True)
|
|
199
199
|
"""
|
|
200
|
-
|
|
200
|
+
width, height, force = size
|
|
201
201
|
|
|
202
202
|
if image.size[0] > width or image.size[1] > height:
|
|
203
203
|
if force:
|
{flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/decorators.py
RENAMED
|
@@ -3,6 +3,7 @@ import logging
|
|
|
3
3
|
from typing import Callable, List, Optional, TypeVar, Union
|
|
4
4
|
|
|
5
5
|
from flask import (
|
|
6
|
+
abort,
|
|
6
7
|
current_app,
|
|
7
8
|
flash,
|
|
8
9
|
jsonify,
|
|
@@ -34,9 +35,9 @@ def no_cache(view: Callable[..., Response]) -> Callable[..., Response]:
|
|
|
34
35
|
@functools.wraps(view)
|
|
35
36
|
def wrapped_view(*args, **kwargs) -> Response:
|
|
36
37
|
response = make_response(view(*args, **kwargs))
|
|
37
|
-
response.headers[
|
|
38
|
-
"
|
|
39
|
-
|
|
38
|
+
response.headers["Cache-Control"] = (
|
|
39
|
+
"no-store, no-cache, must-revalidate, max-age=0"
|
|
40
|
+
)
|
|
40
41
|
response.headers["Pragma"] = "no-cache"
|
|
41
42
|
response.headers["Expires"] = "0"
|
|
42
43
|
return response
|
|
@@ -172,6 +173,8 @@ def has_access(f):
|
|
|
172
173
|
log.warning(
|
|
173
174
|
LOGMSG_ERR_SEC_ACCESS_DENIED, permission_str, self.__class__.__name__
|
|
174
175
|
)
|
|
176
|
+
if current_user.is_authenticated and current_user.is_active:
|
|
177
|
+
abort(403)
|
|
175
178
|
flash(as_unicode(FLAMSG_ERR_SEC_ACCESS_DENIED), "danger")
|
|
176
179
|
return redirect(
|
|
177
180
|
url_for(
|
{flask_appbuilder-5.2.2rc2 → flask_appbuilder-5.2.3}/flask_appbuilder/security/sqla/apis/user/api.py
RENAMED
|
@@ -229,18 +229,14 @@ class UserApi(ModelRestApi):
|
|
|
229
229
|
|
|
230
230
|
if item_roles == [] and (item_groups is None and not model.groups):
|
|
231
231
|
return self.response_400(
|
|
232
|
-
message=(
|
|
233
|
-
|
|
234
|
-
assigned!"
|
|
235
|
-
)
|
|
232
|
+
message=("Cannot clear all roles unless at least one group is \
|
|
233
|
+
assigned!")
|
|
236
234
|
)
|
|
237
235
|
|
|
238
236
|
if item_groups == [] and (item_roles is None and not model.roles):
|
|
239
237
|
return self.response_400(
|
|
240
|
-
message=(
|
|
241
|
-
|
|
242
|
-
assigned!"
|
|
243
|
-
)
|
|
238
|
+
message=("Cannot clear all groups unless at least one role is \
|
|
239
|
+
assigned!")
|
|
244
240
|
)
|
|
245
241
|
|
|
246
242
|
for key, value in item.items():
|
|
@@ -45,7 +45,6 @@ from werkzeug.wrappers import Response as WerkzeugResponse
|
|
|
45
45
|
from wtforms import PasswordField, validators
|
|
46
46
|
from wtforms.validators import EqualTo
|
|
47
47
|
|
|
48
|
-
|
|
49
48
|
log = logging.getLogger(__name__)
|
|
50
49
|
|
|
51
50
|
|
|
@@ -577,6 +576,11 @@ class AuthView(BaseView):
|
|
|
577
576
|
def login(self):
|
|
578
577
|
pass
|
|
579
578
|
|
|
579
|
+
def _get_safe_next_url(self) -> str:
|
|
580
|
+
"""Return the requested redirect target, or the application index."""
|
|
581
|
+
next_url = request.args.get("next", self.appbuilder.get_url_for_index)
|
|
582
|
+
return get_safe_redirect(next_url)
|
|
583
|
+
|
|
580
584
|
def _get_authenticated_user(self):
|
|
581
585
|
"""Resolve the current user before logout clears the session.
|
|
582
586
|
Returns a fresh User model from DB, or None if not authenticated.
|
|
@@ -618,7 +622,8 @@ class AuthDBView(AuthView):
|
|
|
618
622
|
@no_cache
|
|
619
623
|
def login(self):
|
|
620
624
|
if g.user is not None and g.user.is_authenticated:
|
|
621
|
-
|
|
625
|
+
# The target has been restricted by get_safe_redirect.
|
|
626
|
+
return redirect(self._get_safe_next_url()) # lgtm[py/url-redirection]
|
|
622
627
|
form = LoginForm_db()
|
|
623
628
|
if form.validate_on_submit():
|
|
624
629
|
next_url = get_safe_redirect(request.args.get("next", ""))
|
|
@@ -642,7 +647,8 @@ class AuthLDAPView(AuthView):
|
|
|
642
647
|
@no_cache
|
|
643
648
|
def login(self):
|
|
644
649
|
if g.user is not None and g.user.is_authenticated:
|
|
645
|
-
|
|
650
|
+
# The target has been restricted by get_safe_redirect.
|
|
651
|
+
return redirect(self._get_safe_next_url()) # lgtm[py/url-redirection]
|
|
646
652
|
form = LoginForm_db()
|
|
647
653
|
if form.validate_on_submit():
|
|
648
654
|
next_url = get_safe_redirect(request.args.get("next", ""))
|
|
@@ -668,7 +674,8 @@ class AuthOAuthView(AuthView):
|
|
|
668
674
|
log.debug("Provider: %s", provider)
|
|
669
675
|
if g.user is not None and g.user.is_authenticated:
|
|
670
676
|
log.debug("Already authenticated %s", g.user)
|
|
671
|
-
|
|
677
|
+
# The target has been restricted by get_safe_redirect.
|
|
678
|
+
return redirect(self._get_safe_next_url()) # lgtm[py/url-redirection]
|
|
672
679
|
|
|
673
680
|
if provider is None:
|
|
674
681
|
return self.render_template(
|
|
@@ -789,7 +796,8 @@ class AuthSAMLView(AuthView):
|
|
|
789
796
|
@no_cache
|
|
790
797
|
def login(self, idp: Optional[str] = None) -> WerkzeugResponse:
|
|
791
798
|
if g.user is not None and g.user.is_authenticated:
|
|
792
|
-
|
|
799
|
+
# The target has been restricted by get_safe_redirect.
|
|
800
|
+
return redirect(self._get_safe_next_url()) # lgtm[py/url-redirection]
|
|
793
801
|
|
|
794
802
|
sm = self.appbuilder.sm
|
|
795
803
|
providers = sm.saml_providers
|
|
@@ -984,8 +992,8 @@ class AuthRemoteUserView(AuthView):
|
|
|
984
992
|
def login(self) -> WerkzeugResponse:
|
|
985
993
|
username = request.environ.get(self.appbuilder.sm.auth_remote_user_env_var)
|
|
986
994
|
if g.user is not None and g.user.is_authenticated:
|
|
987
|
-
|
|
988
|
-
return redirect(
|
|
995
|
+
# The target has been restricted by get_safe_redirect.
|
|
996
|
+
return redirect(self._get_safe_next_url()) # lgtm[py/url-redirection]
|
|
989
997
|
if username:
|
|
990
998
|
user = self.appbuilder.sm.auth_user_remote_user(username)
|
|
991
999
|
if user is None:
|
|
@@ -98,9 +98,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
98
98
|
self.app.config["AUTH_LDAP_BIND_USER"] = "cn=admin,dc=example,dc=org"
|
|
99
99
|
self.app.config["AUTH_LDAP_BIND_PASSWORD"] = "admin_password"
|
|
100
100
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
101
|
-
self.app.config[
|
|
102
|
-
"
|
|
103
|
-
|
|
101
|
+
self.app.config["AUTH_LDAP_SEARCH_FILTER"] = (
|
|
102
|
+
"(memberOf=cn=staff,ou=groups,dc=example,dc=org)"
|
|
103
|
+
)
|
|
104
104
|
with self.app.app_context():
|
|
105
105
|
SQLA = get_sqla_class()
|
|
106
106
|
db = SQLA(self.app)
|
|
@@ -154,9 +154,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
154
154
|
self.app.config["AUTH_LDAP_BIND_USER"] = "cn=admin,dc=example,dc=org"
|
|
155
155
|
self.app.config["AUTH_LDAP_BIND_PASSWORD"] = "admin_password"
|
|
156
156
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
157
|
-
self.app.config[
|
|
158
|
-
"
|
|
159
|
-
|
|
157
|
+
self.app.config["AUTH_LDAP_SEARCH_FILTER"] = (
|
|
158
|
+
"(memberOf=cn=staff,ou=groups,dc=example,dc=org)"
|
|
159
|
+
)
|
|
160
160
|
with self.app.app_context():
|
|
161
161
|
SQLA = get_sqla_class()
|
|
162
162
|
db = SQLA(self.app)
|
|
@@ -258,9 +258,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
258
258
|
"""
|
|
259
259
|
LDAP: test login flow for - active user
|
|
260
260
|
"""
|
|
261
|
-
self.app.config[
|
|
262
|
-
"
|
|
263
|
-
|
|
261
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
262
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
263
|
+
)
|
|
264
264
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
265
265
|
with self.app.app_context():
|
|
266
266
|
SQLA = get_sqla_class()
|
|
@@ -297,9 +297,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
297
297
|
"""
|
|
298
298
|
LDAP: test login flow for - inactive user
|
|
299
299
|
"""
|
|
300
|
-
self.app.config[
|
|
301
|
-
"
|
|
302
|
-
|
|
300
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
301
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
302
|
+
)
|
|
303
303
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
304
304
|
with self.app.app_context():
|
|
305
305
|
SQLA = get_sqla_class()
|
|
@@ -340,9 +340,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
340
340
|
"cn=staff,ou=groups,dc=example,dc=org": ["Admin"],
|
|
341
341
|
"cn=readers,ou=groups,dc=example,dc=org": ["User"],
|
|
342
342
|
}
|
|
343
|
-
self.app.config[
|
|
344
|
-
"
|
|
345
|
-
|
|
343
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
344
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
345
|
+
)
|
|
346
346
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
347
347
|
self.app.config["AUTH_USER_REGISTRATION"] = True
|
|
348
348
|
self.app.config["AUTH_USER_REGISTRATION_ROLE"] = "Public"
|
|
@@ -381,9 +381,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
381
381
|
LDAP: test login flow for - direct bind - unregistered user
|
|
382
382
|
"""
|
|
383
383
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
384
|
-
self.app.config[
|
|
385
|
-
"
|
|
386
|
-
|
|
384
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
385
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
386
|
+
)
|
|
387
387
|
self.app.config["AUTH_USER_REGISTRATION"] = True
|
|
388
388
|
self.app.config["AUTH_USER_REGISTRATION_ROLE"] = "Public"
|
|
389
389
|
with self.app.app_context():
|
|
@@ -418,9 +418,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
418
418
|
LDAP: test login flow for - direct bind - unregistered user - no self-registration
|
|
419
419
|
"""
|
|
420
420
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
421
|
-
self.app.config[
|
|
422
|
-
"
|
|
423
|
-
|
|
421
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
422
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
423
|
+
)
|
|
424
424
|
self.app.config["AUTH_USER_REGISTRATION"] = False
|
|
425
425
|
with self.app.app_context():
|
|
426
426
|
SQLA = get_sqla_class()
|
|
@@ -446,9 +446,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
446
446
|
LDAP: test login flow for - direct bind - unregistered user - no ldap search
|
|
447
447
|
"""
|
|
448
448
|
self.app.config["AUTH_LDAP_SEARCH"] = None
|
|
449
|
-
self.app.config[
|
|
450
|
-
"
|
|
451
|
-
|
|
449
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
450
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
451
|
+
)
|
|
452
452
|
self.app.config["AUTH_USER_REGISTRATION"] = True
|
|
453
453
|
with self.app.app_context():
|
|
454
454
|
SQLA = get_sqla_class()
|
|
@@ -472,9 +472,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
472
472
|
LDAP: test login flow for - direct bind - registered user
|
|
473
473
|
"""
|
|
474
474
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
475
|
-
self.app.config[
|
|
476
|
-
"
|
|
477
|
-
|
|
475
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
476
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
477
|
+
)
|
|
478
478
|
with self.app.app_context():
|
|
479
479
|
SQLA = get_sqla_class()
|
|
480
480
|
db = SQLA(self.app)
|
|
@@ -508,9 +508,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
508
508
|
LDAP: test login flow for - direct bind - registered user - no ldap search
|
|
509
509
|
"""
|
|
510
510
|
self.app.config["AUTH_LDAP_SEARCH"] = None
|
|
511
|
-
self.app.config[
|
|
512
|
-
"
|
|
513
|
-
|
|
511
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
512
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
513
|
+
)
|
|
514
514
|
with self.app.app_context():
|
|
515
515
|
SQLA = get_sqla_class()
|
|
516
516
|
db = SQLA(self.app)
|
|
@@ -707,9 +707,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
707
707
|
"cn=staff,ou=groups,dc=example,dc=org": ["Admin"]
|
|
708
708
|
}
|
|
709
709
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
710
|
-
self.app.config[
|
|
711
|
-
"
|
|
712
|
-
|
|
710
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
711
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
712
|
+
)
|
|
713
713
|
self.app.config["AUTH_USER_REGISTRATION"] = True
|
|
714
714
|
self.app.config["AUTH_USER_REGISTRATION_ROLE"] = "Public"
|
|
715
715
|
with self.app.app_context():
|
|
@@ -750,9 +750,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
750
750
|
"cn=staff,ou=groups,dc=example,dc=org": ["Admin", "User"]
|
|
751
751
|
}
|
|
752
752
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
753
|
-
self.app.config[
|
|
754
|
-
"
|
|
755
|
-
|
|
753
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
754
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
755
|
+
)
|
|
756
756
|
self.app.config["AUTH_USER_REGISTRATION"] = True
|
|
757
757
|
self.app.config["AUTH_USER_REGISTRATION_ROLE"] = "Public"
|
|
758
758
|
with self.app.app_context():
|
|
@@ -793,9 +793,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
793
793
|
"cn=staff,ou=groups,dc=example,dc=org": ["Admin", "User"]
|
|
794
794
|
}
|
|
795
795
|
self.app.config["AUTH_ROLES_SYNC_AT_LOGIN"] = False
|
|
796
|
-
self.app.config[
|
|
797
|
-
"
|
|
798
|
-
|
|
796
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
797
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
798
|
+
)
|
|
799
799
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
800
800
|
with self.app.app_context():
|
|
801
801
|
SQLA = get_sqla_class()
|
|
@@ -839,9 +839,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
839
839
|
"cn=staff,ou=groups,dc=example,dc=org": ["Admin", "User"]
|
|
840
840
|
}
|
|
841
841
|
self.app.config["AUTH_ROLES_SYNC_AT_LOGIN"] = True
|
|
842
|
-
self.app.config[
|
|
843
|
-
"
|
|
844
|
-
|
|
842
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
843
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
844
|
+
)
|
|
845
845
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
846
846
|
with self.app.app_context():
|
|
847
847
|
SQLA = get_sqla_class()
|
|
@@ -1056,9 +1056,9 @@ class LDAPSearchTestCase(unittest.TestCase):
|
|
|
1056
1056
|
LDAP: Keeping next url after failed login attempt
|
|
1057
1057
|
"""
|
|
1058
1058
|
self.app.config["AUTH_LDAP_SEARCH"] = "ou=users,dc=example,dc=org"
|
|
1059
|
-
self.app.config[
|
|
1060
|
-
"
|
|
1061
|
-
|
|
1059
|
+
self.app.config["AUTH_LDAP_USERNAME_FORMAT"] = (
|
|
1060
|
+
"cn=%s,ou=users,dc=example,dc=org"
|
|
1061
|
+
)
|
|
1062
1062
|
self.app.config["AUTH_USER_REGISTRATION"] = True
|
|
1063
1063
|
self.app.config["AUTH_USER_REGISTRATION_ROLE"] = "Public"
|
|
1064
1064
|
self.app.config["WTF_CSRF_ENABLED"] = False
|
|
@@ -306,9 +306,9 @@ class OAuthRegistrationRoleTestCase(unittest.TestCase):
|
|
|
306
306
|
OAUTH: test login flow for - unregistered user - jmespath registration role
|
|
307
307
|
"""
|
|
308
308
|
self.app.config["AUTH_USER_REGISTRATION"] = True
|
|
309
|
-
self.app.config[
|
|
310
|
-
"
|
|
311
|
-
|
|
309
|
+
self.app.config["AUTH_USER_REGISTRATION_ROLE_JMESPATH"] = (
|
|
310
|
+
"contains(['alice'], username) && 'User' || 'Public'"
|
|
311
|
+
)
|
|
312
312
|
with self.app.app_context():
|
|
313
313
|
SQLA = get_sqla_class()
|
|
314
314
|
db = SQLA(self.app)
|
|
@@ -427,9 +427,9 @@ class OAuthRegistrationRoleTestCase(unittest.TestCase):
|
|
|
427
427
|
""" # noqa
|
|
428
428
|
self.app.config["AUTH_ROLES_SYNC_AT_LOGIN"] = False
|
|
429
429
|
self.app.config["AUTH_USER_REGISTRATION"] = True
|
|
430
|
-
self.app.config[
|
|
431
|
-
"
|
|
432
|
-
|
|
430
|
+
self.app.config["AUTH_USER_REGISTRATION_ROLE_JMESPATH"] = (
|
|
431
|
+
"contains(['alice'], username) && 'User' || 'Public'"
|
|
432
|
+
)
|
|
433
433
|
with self.app.app_context():
|
|
434
434
|
SQLA = get_sqla_class()
|
|
435
435
|
db = SQLA(self.app)
|
|
@@ -470,9 +470,9 @@ class OAuthRegistrationRoleTestCase(unittest.TestCase):
|
|
|
470
470
|
""" # noqa
|
|
471
471
|
self.app.config["AUTH_ROLES_SYNC_AT_LOGIN"] = True
|
|
472
472
|
self.app.config["AUTH_USER_REGISTRATION"] = True
|
|
473
|
-
self.app.config[
|
|
474
|
-
"
|
|
475
|
-
|
|
473
|
+
self.app.config["AUTH_USER_REGISTRATION_ROLE_JMESPATH"] = (
|
|
474
|
+
"contains(['alice'], username) && 'User' || 'Public'"
|
|
475
|
+
)
|
|
476
476
|
with self.app.app_context():
|
|
477
477
|
SQLA = get_sqla_class()
|
|
478
478
|
db = SQLA(self.app)
|
|
@@ -162,6 +162,25 @@ class MVCSecurityTestCase(BaseMVCTestCase):
|
|
|
162
162
|
)
|
|
163
163
|
assert response.location == "/users/list/"
|
|
164
164
|
|
|
165
|
+
def test_authenticated_db_login_valid_next_url(self):
|
|
166
|
+
"""An authenticated login request retains a safe next URL."""
|
|
167
|
+
self.browser_login(self.client, USERNAME_ADMIN, PASSWORD_ADMIN)
|
|
168
|
+
|
|
169
|
+
response = self.client.get("/login/?next=/users/list/", follow_redirects=False)
|
|
170
|
+
|
|
171
|
+
assert response.status_code == 302
|
|
172
|
+
assert response.location == "/users/list/"
|
|
173
|
+
|
|
174
|
+
def test_authenticated_access_denial_returns_forbidden(self):
|
|
175
|
+
"""A logged-in user lacking permission is not sent back to login."""
|
|
176
|
+
self.browser_login(self.client, USERNAME_ADMIN, PASSWORD_ADMIN)
|
|
177
|
+
|
|
178
|
+
with patch.object(self.appbuilder.sm, "has_access", return_value=False):
|
|
179
|
+
response = self.client.get("/model1view/list/", follow_redirects=False)
|
|
180
|
+
|
|
181
|
+
assert response.status_code == 403
|
|
182
|
+
assert response.location is None
|
|
183
|
+
|
|
165
184
|
def test_db_login_valid_http_scheme_url(self):
|
|
166
185
|
"""
|
|
167
186
|
Test Security valid http scheme next URL
|
|
@@ -371,10 +390,10 @@ class MVCSecurityTestCase(BaseMVCTestCase):
|
|
|
371
390
|
self.assertEqual(rv.status_code, 200)
|
|
372
391
|
# Test unauthorized EDIT
|
|
373
392
|
rv = client.get(f"/model1view/edit/{model_id}")
|
|
374
|
-
self.assertEqual(rv.status_code,
|
|
393
|
+
self.assertEqual(rv.status_code, 403)
|
|
375
394
|
# Test unauthorized DELETE
|
|
376
395
|
rv = client.get(f"/model1view/delete/{model_id}")
|
|
377
|
-
self.assertEqual(rv.status_code,
|
|
396
|
+
self.assertEqual(rv.status_code, 403)
|
|
378
397
|
|
|
379
398
|
def test_sec_reset_password(self):
|
|
380
399
|
"""
|
|
@@ -19,9 +19,9 @@ class FlaskTestCase(FABTestCase):
|
|
|
19
19
|
self.app = Flask(__name__, template_folder=".")
|
|
20
20
|
self.basedir = os.path.abspath(os.path.dirname(__file__))
|
|
21
21
|
self.app.config.from_object("tests.config_api")
|
|
22
|
-
self.app.config[
|
|
23
|
-
"
|
|
24
|
-
|
|
22
|
+
self.app.config["FAB_INDEX_VIEW"] = (
|
|
23
|
+
"tests.test_custom_indexview.CustomIndexView"
|
|
24
|
+
)
|
|
25
25
|
|
|
26
26
|
def test_custom_indexview(self):
|
|
27
27
|
"""
|
|
@@ -228,9 +228,9 @@ class SQLAlchemyImportExportTestCase(FABTestCase):
|
|
|
228
228
|
def test_import_roles(self):
|
|
229
229
|
with tempfile.TemporaryDirectory() as tmp_dir:
|
|
230
230
|
app = Flask("dst_app")
|
|
231
|
-
app.config[
|
|
232
|
-
"
|
|
233
|
-
|
|
231
|
+
app.config["SQLALCHEMY_DATABASE_URI"] = (
|
|
232
|
+
f"sqlite:///{os.path.join(tmp_dir, 'dst.db')}"
|
|
233
|
+
)
|
|
234
234
|
with app.app_context():
|
|
235
235
|
SQLA = get_sqla_class()
|
|
236
236
|
db = SQLA(app)
|
|
@@ -1550,7 +1550,7 @@ class MVCTestCase(BaseMVCTestCase):
|
|
|
1550
1550
|
)
|
|
1551
1551
|
pk = model1.id
|
|
1552
1552
|
rv = client.get(f"/model1permoverride/delete/{pk}")
|
|
1553
|
-
self.assertEqual(rv.status_code,
|
|
1553
|
+
self.assertEqual(rv.status_code, 403)
|
|
1554
1554
|
model = self.appbuilder.session.query(Model1).filter_by(id=pk).one_or_none()
|
|
1555
1555
|
self.assertEqual(model.field_string, "test1")
|
|
1556
1556
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|