fastapi-rtk 2.3.4__tar.gz → 2.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/PKG-INFO +1 -1
- fastapi_rtk-2.4.0/fastapi_rtk/_version.py +1 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/__init__.py +56 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_columns_mixin.py +26 -3
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_info_mixin.py +5 -1
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_typed_base.py +37 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/api/model_rest_api/test_columns.py +33 -0
- fastapi_rtk-2.3.4/fastapi_rtk/_version.py +0 -1
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/.gitignore +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/LICENSE +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/README.md +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/base_api.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_add_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_bulk_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_delete_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_download_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_edit_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_file_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_list_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_params.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_show_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/api/model_rest_api/_upload_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/apis/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/apis/info.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/apis/license.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/auth.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/hashers/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/hashers/pbkdf2.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/hashers/scrypt.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/ldap.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/password_helpers/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/password_helpers/fab.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/strategies/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/strategies/config.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/strategies/db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/auth/strategies/jwt.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/generic/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/generic/column.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/generic/db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/generic/exceptions.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/generic/filters.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/generic/interface.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/generic/model.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/generic/session.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/column.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/exceptions.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/audit/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/audit/_decorators_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/audit/_lifecycle_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/audit/_logger.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/audit/_processing_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/audit/audit.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/audit/types.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/filters.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/geometry_converter.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/filters.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/interface.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/model.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/session.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/bases/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/bases/db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/bases/file_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/bases/filter.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/bases/interface.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/bases/model.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/bases/session.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/cli.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/_security_crypto.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi/README +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi/alembic.ini.mako +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi/env.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi/script.py.mako +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/README +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/alembic.ini.mako +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/env.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/script.py.mako +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/export.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/security.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/translate.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/const.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/decorators.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/types.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/utils.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/config.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/const.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/decorators.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/dependencies.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/exceptions.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/fastapi_react_toolkit.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/file_managers/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/file_managers/file_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/file_managers/image_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/file_managers/s3_file_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/file_managers/s3_image_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/filters.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/globals.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/babel/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/babel/cli.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/babel/config.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/babel.cfg +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/lazy_text.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/messages.pot +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.mo +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.po +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.mo +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.po +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/middlewares.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/mixins.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/models.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/py.typed +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/registry.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/routers.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/schemas.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/apis.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/models.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_association_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_builtin_role_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_cleanup_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_exception_filters.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_export.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_import.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_role_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_user_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/setting.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/types.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/async_task_runner.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/class_factory.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/csv_json_converter.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/deep_merge.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/extender_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/flask_appbuilder_utils.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/formatter.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/hooks.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/lazy.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/merge_schema.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/multiple_async_contexts.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/pydantic.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/run_utils.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/self_dependencies.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/smartdefaultdict.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/sqla.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/timezone.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/update_signature.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/utils/use_default_when_none.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/version.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/pyproject.toml +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/conftest.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/docker-compose.gis.yml +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/api/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/api/test_model_rest_api.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/apis/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/apis/test_info_callable_schema.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/apis/test_info_contract.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/auth/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/auth/test_auth_flow.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/auth/test_oauth.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/conftest.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/file_managers/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/file_managers/test_file_routes.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/security/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/security/sqla/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/security/sqla/test_security_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/integration/test_app_smoke.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/api/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/api/conftest.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/api/model_rest_api/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/api/model_rest_api/test_file_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/api/model_rest_api/test_init.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/api/model_rest_api/test_typed_base_consistency.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/api/test_base_api.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/apis/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/apis/test_info.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/apis/test_license.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/hashers/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/hashers/test_pbkdf2.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/hashers/test_scrypt.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/password_helpers/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/password_helpers/test_fab.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/strategies/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/strategies/test_config.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/strategies/test_db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/strategies/test_jwt.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/auth/test_auth.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/generic/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/generic/test_column.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/generic/test_db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/generic/test_exceptions.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/generic/test_filters.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/generic/test_interface.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/generic/test_model.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/generic/test_session.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/conftest.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/test_audit.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/test_audit_types.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/test_column.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/test_db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/test_filters.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/test_geoalchemy2.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/test_interface.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/test_model.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/backends/sqla/test_session.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/bases/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/bases/test_db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/bases/test_file_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/bases/test_filter.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/bases/test_interface.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/bases/test_model.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/bases/test_session.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/commands/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/commands/conftest.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/commands/test_db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/commands/test_export.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/commands/test_security.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/commands/test_security_crypto.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/commands/test_translate.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/conftest.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/test_cli.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/test_decorators.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/test_types.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/cli/test_utils.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/file_managers/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/file_managers/conftest.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/file_managers/test_file_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/file_managers/test_image_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/file_managers/test_s3_file_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/file_managers/test_s3_image_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/lang/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/lang/test_babel_cli.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/lang/test_babel_config.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/lang/test_lazy_text.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/security/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/security/sqla/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/security/sqla/conftest.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/security/sqla/test_apis.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/security/sqla/test_models.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/security/sqla/test_security_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_config.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_const.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_db.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_decorators.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_dependencies.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_exceptions.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_fastapi_react_toolkit.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_filters.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_globals.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_manager.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_middlewares.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_mixins.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_models.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_registry.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_routers.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_schemas.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_setting.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_types.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/test_version.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/__init__.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_async_task_runner.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_class_factory.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_csv_json_converter.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_deep_merge.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_extender_mixin.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_flask_appbuilder_utils.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_formatter.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_hooks.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_lazy.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_merge_schema.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_multiple_async_contexts.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_pydantic.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_run_utils.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_self_dependencies.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_smartdefaultdict.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_sqla.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_timezone.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_update_signature.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/tests/unit/utils/test_use_default_when_none.py +0 -0
- {fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastapi-rtk
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: A package that provides a set of tools to build a FastAPI application with a Class-Based CRUD API.
|
|
5
5
|
Project-URL: Homepage, https://codeberg.org/datatactics/fastapi-rtk
|
|
6
6
|
Project-URL: Issues, https://codeberg.org/datatactics/fastapi-rtk/issues
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.4.0"
|
|
@@ -705,6 +705,34 @@ class ModelRestApi(
|
|
|
705
705
|
|
|
706
706
|
A workaround for issue https://github.com/eclipsesource/jsonforms/issues/2271
|
|
707
707
|
"""
|
|
708
|
+
add_jsonforms_list_as_object: (
|
|
709
|
+
bool
|
|
710
|
+
| collections.abc.Callable[
|
|
711
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
712
|
+
]
|
|
713
|
+
| dict[
|
|
714
|
+
str,
|
|
715
|
+
bool
|
|
716
|
+
| collections.abc.Callable[
|
|
717
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
718
|
+
],
|
|
719
|
+
]
|
|
720
|
+
) = False
|
|
721
|
+
"""
|
|
722
|
+
A flag or a callable or a dictionary to determine whether a list column (e.g. `ListColumn` / `JSONBListColumn`) is rendered as a single `object` control in the JSONForms schema for the add endpoint, instead of the default per-item `array` table. The callable receives the column's `ColumnInfo` when available, else `None`. Defaults to False (array).
|
|
723
|
+
|
|
724
|
+
Use this when a per-field `component` override should receive the whole list value once, rather than being re-applied per array item.
|
|
725
|
+
|
|
726
|
+
Example:
|
|
727
|
+
```python
|
|
728
|
+
# Can be a simple boolean (applies to every list column)
|
|
729
|
+
add_jsonforms_list_as_object = True
|
|
730
|
+
# Can be a callable that takes the column info and returns a boolean
|
|
731
|
+
add_jsonforms_list_as_object = lambda info: info.name == "tags"
|
|
732
|
+
# Can be a dictionary that maps column names to booleans or callables
|
|
733
|
+
add_jsonforms_list_as_object = {"tags": True}
|
|
734
|
+
```
|
|
735
|
+
"""
|
|
708
736
|
|
|
709
737
|
edit_jsonforms_schema: (
|
|
710
738
|
dict[str, typing.Any]
|
|
@@ -755,6 +783,34 @@ class ModelRestApi(
|
|
|
755
783
|
|
|
756
784
|
A workaround for issue https://github.com/eclipsesource/jsonforms/issues/2271
|
|
757
785
|
"""
|
|
786
|
+
edit_jsonforms_list_as_object: (
|
|
787
|
+
bool
|
|
788
|
+
| collections.abc.Callable[
|
|
789
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
790
|
+
]
|
|
791
|
+
| dict[
|
|
792
|
+
str,
|
|
793
|
+
bool
|
|
794
|
+
| collections.abc.Callable[
|
|
795
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
796
|
+
],
|
|
797
|
+
]
|
|
798
|
+
) = False
|
|
799
|
+
"""
|
|
800
|
+
A flag or a callable or a dictionary to determine whether a list column (e.g. `ListColumn` / `JSONBListColumn`) is rendered as a single `object` control in the JSONForms schema for the edit endpoint, instead of the default per-item `array` table. The callable receives the column's `ColumnInfo` when available, else `None`. Defaults to False (array).
|
|
801
|
+
|
|
802
|
+
Use this when a per-field `component` override should receive the whole list value once, rather than being re-applied per array item.
|
|
803
|
+
|
|
804
|
+
Example:
|
|
805
|
+
```python
|
|
806
|
+
# Can be a simple boolean (applies to every list column)
|
|
807
|
+
edit_jsonforms_list_as_object = True
|
|
808
|
+
# Can be a callable that takes the column info and returns a boolean
|
|
809
|
+
edit_jsonforms_list_as_object = lambda info: info.name == "tags"
|
|
810
|
+
# Can be a dictionary that maps column names to booleans or callables
|
|
811
|
+
edit_jsonforms_list_as_object = {"tags": True}
|
|
812
|
+
```
|
|
813
|
+
"""
|
|
758
814
|
|
|
759
815
|
"""
|
|
760
816
|
-------------
|
|
@@ -535,6 +535,17 @@ class ColumnsMixin(_TypedModelRestApi):
|
|
|
535
535
|
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo], bool
|
|
536
536
|
],
|
|
537
537
|
] = False,
|
|
538
|
+
list_as_object: bool
|
|
539
|
+
| collections.abc.Callable[
|
|
540
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
541
|
+
]
|
|
542
|
+
| dict[
|
|
543
|
+
str,
|
|
544
|
+
bool
|
|
545
|
+
| collections.abc.Callable[
|
|
546
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
547
|
+
],
|
|
548
|
+
] = False,
|
|
538
549
|
):
|
|
539
550
|
"""
|
|
540
551
|
Generate the JSONForms schema for the API.
|
|
@@ -543,6 +554,7 @@ class ColumnsMixin(_TypedModelRestApi):
|
|
|
543
554
|
schema (type[BaseModel]): The schema to generate the JSONForms schema from.
|
|
544
555
|
info_columns (list[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo]): The list of columns to include in the JSONForms schema.
|
|
545
556
|
use_enum (bool | Callable[[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo], bool] | dict[str, bool | Callable[[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo], bool]], optional): A flag or a callable or a dictionary to determine whether to use enum instead of oneOf. Defaults to False.
|
|
557
|
+
list_as_object (bool | Callable[[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool] | dict[str, bool | Callable[[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool]], optional): A flag or a callable or a dictionary to determine whether to render a list column as a single `object` control instead of the per-item `array` table. The callable receives the column's `ColumnInfo` when available, else `None`. Defaults to False.
|
|
546
558
|
|
|
547
559
|
Returns:
|
|
548
560
|
dict[str, typing.Any]: The generated JSONForms schema.
|
|
@@ -595,10 +607,21 @@ class ColumnsMixin(_TypedModelRestApi):
|
|
|
595
607
|
enum_val = [str(item.value) for item in enum_val]
|
|
596
608
|
value["enum"] = enum_val
|
|
597
609
|
elif self.datamodel.is_list(key):
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
610
|
+
col_list_as_object = list_as_object
|
|
611
|
+
if isinstance(col_list_as_object, dict):
|
|
612
|
+
col_list_as_object = col_list_as_object.get(key, False)
|
|
613
|
+
list_info = next((x for x in info_columns if x.name == key), None)
|
|
614
|
+
col_list_as_object = parse_from_values_or_func(
|
|
615
|
+
col_list_as_object, list_info
|
|
601
616
|
)
|
|
617
|
+
if col_list_as_object:
|
|
618
|
+
value["type"] = "object"
|
|
619
|
+
value.pop("items", None)
|
|
620
|
+
else:
|
|
621
|
+
value["type"] = "array"
|
|
622
|
+
value["items"] = self._jsonforms_list_items_schema(
|
|
623
|
+
self.datamodel.get_list_col_type(key)
|
|
624
|
+
)
|
|
602
625
|
elif self.datamodel.is_json(key) or self.datamodel.is_jsonb(key):
|
|
603
626
|
value["type"] = "object"
|
|
604
627
|
elif self.datamodel.is_relation(key):
|
|
@@ -146,7 +146,10 @@ class InfoMixin(_TypedModelRestApi):
|
|
|
146
146
|
if callable(add_jsonforms_schema):
|
|
147
147
|
add_jsonforms_schema = await smart_run(add_jsonforms_schema)
|
|
148
148
|
schema.add_schema = add_jsonforms_schema or self._generate_jsonforms_schema(
|
|
149
|
-
self.add_obj_schema,
|
|
149
|
+
self.add_obj_schema,
|
|
150
|
+
schema.add_columns,
|
|
151
|
+
self.add_jsonforms_use_enum,
|
|
152
|
+
self.add_jsonforms_list_as_object,
|
|
150
153
|
)
|
|
151
154
|
schema.add_uischema = self.add_jsonforms_uischema
|
|
152
155
|
|
|
@@ -190,6 +193,7 @@ class InfoMixin(_TypedModelRestApi):
|
|
|
190
193
|
self.edit_obj_schema,
|
|
191
194
|
schema.edit_columns,
|
|
192
195
|
self.edit_jsonforms_use_enum,
|
|
196
|
+
self.edit_jsonforms_list_as_object,
|
|
193
197
|
)
|
|
194
198
|
)
|
|
195
199
|
schema.edit_uischema = self.edit_jsonforms_uischema
|
|
@@ -100,6 +100,19 @@ class _TypedModelRestApi:
|
|
|
100
100
|
],
|
|
101
101
|
]
|
|
102
102
|
)
|
|
103
|
+
add_jsonforms_list_as_object: (
|
|
104
|
+
bool
|
|
105
|
+
| collections.abc.Callable[
|
|
106
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
107
|
+
]
|
|
108
|
+
| dict[
|
|
109
|
+
str,
|
|
110
|
+
bool
|
|
111
|
+
| collections.abc.Callable[
|
|
112
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
113
|
+
],
|
|
114
|
+
]
|
|
115
|
+
)
|
|
103
116
|
add_jsonforms_uischema: dict[str, typing.Any] | None
|
|
104
117
|
|
|
105
118
|
# -- edit --
|
|
@@ -129,6 +142,19 @@ class _TypedModelRestApi:
|
|
|
129
142
|
],
|
|
130
143
|
]
|
|
131
144
|
)
|
|
145
|
+
edit_jsonforms_list_as_object: (
|
|
146
|
+
bool
|
|
147
|
+
| collections.abc.Callable[
|
|
148
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
149
|
+
]
|
|
150
|
+
| dict[
|
|
151
|
+
str,
|
|
152
|
+
bool
|
|
153
|
+
| collections.abc.Callable[
|
|
154
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
155
|
+
],
|
|
156
|
+
]
|
|
157
|
+
)
|
|
132
158
|
edit_jsonforms_uischema: dict[str, typing.Any] | None
|
|
133
159
|
|
|
134
160
|
# -- search --
|
|
@@ -167,6 +193,17 @@ class _TypedModelRestApi:
|
|
|
167
193
|
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo], bool
|
|
168
194
|
],
|
|
169
195
|
] = False,
|
|
196
|
+
list_as_object: bool
|
|
197
|
+
| collections.abc.Callable[
|
|
198
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
199
|
+
]
|
|
200
|
+
| dict[
|
|
201
|
+
str,
|
|
202
|
+
bool
|
|
203
|
+
| collections.abc.Callable[
|
|
204
|
+
[ColumnInfo | ColumnEnumInfo | ColumnRelationInfo | None], bool
|
|
205
|
+
],
|
|
206
|
+
] = False,
|
|
170
207
|
) -> dict[str, typing.Any]: ...
|
|
171
208
|
|
|
172
209
|
def _get_datamodel_and_column(self, col: str) -> tuple[SQLAInterface, str]: ...
|
|
@@ -313,3 +313,36 @@ class TestGenerateJsonformsSchemaListBranch:
|
|
|
313
313
|
result = list_api._generate_jsonforms_schema(schema, [], False)
|
|
314
314
|
# Plain `sqlalchemy.JSON` (not a ListColumn) keeps the original behavior.
|
|
315
315
|
assert result["properties"]["payload"]["type"] == ["object", "null"]
|
|
316
|
+
|
|
317
|
+
def test_list_as_object_bool_true(self, list_api):
|
|
318
|
+
schema = list_api.add_obj_schema
|
|
319
|
+
result = list_api._generate_jsonforms_schema(
|
|
320
|
+
schema, [], False, list_as_object=True
|
|
321
|
+
)
|
|
322
|
+
assert result["properties"]["tags"]["type"] == ["object", "null"]
|
|
323
|
+
assert "items" not in result["properties"]["tags"]
|
|
324
|
+
|
|
325
|
+
def test_list_as_object_dict_targets_one_column(self, list_api):
|
|
326
|
+
schema = list_api.add_obj_schema
|
|
327
|
+
result = list_api._generate_jsonforms_schema(
|
|
328
|
+
schema, [], False, list_as_object={"tags": True}
|
|
329
|
+
)
|
|
330
|
+
assert result["properties"]["tags"]["type"] == ["object", "null"]
|
|
331
|
+
assert "items" not in result["properties"]["tags"]
|
|
332
|
+
# A column absent from the dict keeps the array rendering.
|
|
333
|
+
assert result["properties"]["nums"]["type"] == ["array", "null"]
|
|
334
|
+
assert result["properties"]["nums"]["items"] == {"type": "integer"}
|
|
335
|
+
|
|
336
|
+
def test_list_as_object_callable(self, list_api):
|
|
337
|
+
schema = list_api.add_obj_schema
|
|
338
|
+
result = list_api._generate_jsonforms_schema(
|
|
339
|
+
schema, [], False, list_as_object=lambda info: True
|
|
340
|
+
)
|
|
341
|
+
assert result["properties"]["tags"]["type"] == ["object", "null"]
|
|
342
|
+
assert "items" not in result["properties"]["tags"]
|
|
343
|
+
|
|
344
|
+
def test_list_as_object_default_keeps_array(self, list_api):
|
|
345
|
+
schema = list_api.add_obj_schema
|
|
346
|
+
result = list_api._generate_jsonforms_schema(schema, [], False)
|
|
347
|
+
assert result["properties"]["tags"]["type"] == ["array", "null"]
|
|
348
|
+
assert result["properties"]["tags"]["items"] == {"type": "string"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.3.4"
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/audit/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/audit/_logger.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/__init__.py
RENAMED
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/backends/sqla/extensions/geoalchemy2/filters.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi/README
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi/env.py
RENAMED
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi/script.py.mako
RENAMED
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/README
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/cli/commands/db/templates/fastapi-multidb/env.py
RENAMED
|
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
|
|
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
|
|
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
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.po
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_cleanup_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_export.py
RENAMED
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_import.py
RENAMED
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_role_mixin.py
RENAMED
|
File without changes
|
{fastapi_rtk-2.3.4 → fastapi_rtk-2.4.0}/fastapi_rtk/security/sqla/security_manager/_user_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|