zrb 0.6.0__py3-none-any.whl → 0.6.1__py3-none-any.whl
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.
- zrb/__init__.py +24 -20
- zrb/__main__.py +5 -5
- zrb/action/runner.py +22 -30
- zrb/advertisement.py +10 -9
- zrb/builtin/__init__.py +18 -16
- zrb/builtin/base64.py +13 -18
- zrb/builtin/devtool/__init__.py +14 -3
- zrb/builtin/devtool/devtool_install.py +207 -221
- zrb/builtin/env.py +9 -12
- zrb/builtin/eval.py +9 -9
- zrb/builtin/explain.py +73 -74
- zrb/builtin/generator/__init__.py +7 -11
- zrb/builtin/generator/app_generator/add.py +86 -87
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/add.py +78 -77
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +6 -6
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +32 -32
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +29 -30
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +1 -3
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +5 -4
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/add.py +89 -87
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +42 -54
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +34 -32
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +19 -22
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +18 -18
- zrb/builtin/generator/app_generator/template/http-port/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +10 -10
- zrb/builtin/generator/app_generator/template/http-port-build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +19 -19
- zrb/builtin/generator/app_generator/template/use-helm/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +12 -14
- zrb/builtin/generator/cmd_task/add.py +23 -25
- zrb/builtin/generator/cmd_task/template/_automate/snake_zrb_task_name.py +3 -5
- zrb/builtin/generator/common/helper.py +15 -20
- zrb/builtin/generator/common/task_factory.py +29 -26
- zrb/builtin/generator/common/task_input.py +97 -91
- zrb/builtin/generator/docker_compose_task/add.py +38 -39
- zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name.py +13 -19
- zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/image/main.py +18 -14
- zrb/builtin/generator/fastapp/add.py +94 -90
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_checker.py +28 -27
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_config.py +68 -39
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env.py +24 -22
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env_file.py +12 -12
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_get_start_microservices.py +43 -41
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_helper.py +23 -24
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_input.py +21 -20
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-load-test.sh +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-start.sh +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-test.sh +2 -2
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/container.py +46 -39
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/deployment.py +28 -20
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/frontend.py +21 -27
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/image.py +23 -18
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/load_test.py +35 -36
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local.py +68 -58
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/test.py +24 -38
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/__main__.py +23 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/_common.py +72 -75
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/app_helper.py +70 -75
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_postgresql_helper.py +18 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_rabbitmq_helper.py +11 -19
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_redpanda_helper.py +18 -15
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_signoz_helper.py +17 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.yml +12 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/loadtest/locustfile.py +10 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/Dockerfile +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app.py +35 -30
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_lifespan.py +21 -17
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_state.py +3 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/db_connection.py +18 -20
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/frontend_index.py +5 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/log.py +7 -15
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/messagebus.py +38 -34
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/rpc.py +19 -18
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/config.py +68 -103
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/error.py +11 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/__init__.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/admin.py +38 -35
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/consumer.py +38 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/publisher.py +26 -29
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/messagebus.py +8 -14
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/mock.py +12 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/admin.py +37 -44
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/consumer.py +42 -67
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/publisher.py +32 -55
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/model/repo_model.py +11 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/__init__.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_entity_mixin.py +3 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_repo.py +76 -83
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/repo.py +5 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/search_filter.py +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/__init__.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/caller.py +17 -19
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/server.py +14 -18
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/rpc.py +15 -28
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/__init__.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/base_schema.py +6 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/__init__.py +1 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/serializer.py +3 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/async_task.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/conversion.py +10 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/migration.py +6 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/migrate.py +3 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/api.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/__init__.py +4 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_scheme.py +9 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_util.py +6 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/authorizer.py +4 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/bearer_token_scheme.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/model/user_model.py +8 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/password_hasher.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/refresh_token_util.py +7 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/group_repo.py +3 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/permission_repo.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/user_repo.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/user.py +12 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/__init__.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/scheme.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/util.py +20 -30
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/authorizer.py +1 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/rpc_authorizer.py +5 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/bcrypt_password_hasher.py +3 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/password_hasher.py +0 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/refresh_token/util.py +15 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/api.py +42 -49
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/model.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +18 -16
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +26 -41
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/api.py +46 -51
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/model.py +5 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/repo.py +11 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +28 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/table.py +10 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +60 -72
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +32 -61
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +33 -36
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +42 -61
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/event.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +11 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +19 -26
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/rpc.py +5 -13
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +6 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +3 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/token.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +4 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/api.py +4 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/model/activity_model.py +3 -9
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/repo/activity_repo.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/core/historical_repo_model.py +13 -13
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/api.py +22 -23
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +5 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/model.py +2 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/repo.py +8 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +28 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/table.py +3 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/event.py +4 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/register_module.py +10 -11
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/rpc.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +3 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/requirements.txt +12 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +76 -106
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +73 -103
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +92 -122
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +107 -134
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/conftest.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +8 -15
- zrb/builtin/generator/fastapp_crud/add.py +74 -79
- zrb/builtin/generator/fastapp_crud/helper.py +51 -48
- zrb/builtin/generator/fastapp_crud/task_factory.py +17 -14
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/model/snake_zrb_entity_name_model.py +2 -2
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/repo/snake_zrb_entity_name_repo.py +3 -2
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/api.py +58 -40
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/model.py +7 -3
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/repo.py +9 -4
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/rpc.py +32 -39
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/schema/snake_zrb_entity_name.py +3 -1
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +68 -98
- zrb/builtin/generator/fastapp_field/add.py +143 -85
- zrb/builtin/generator/fastapp_field/helper.py +184 -125
- zrb/builtin/generator/fastapp_module/add.py +90 -67
- zrb/builtin/generator/fastapp_module/helper.py +141 -155
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/api.py +3 -2
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/table.py +3 -3
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/event.py +3 -5
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -4
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +10 -11
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/rpc.py +3 -5
- zrb/builtin/generator/pip_package/add.py +39 -40
- zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/local.py +30 -30
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__init__.py +1 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__main__.py +1 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/util.py +2 -2
- zrb/builtin/generator/plugin/create.py +39 -36
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__init__.py +1 -1
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__main__.py +1 -0
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/task/example_task.py +6 -4
- zrb/builtin/generator/plugin/template/zrb_init.py +27 -27
- zrb/builtin/generator/project/create.py +38 -46
- zrb/builtin/generator/project/template/.flake8 +3 -0
- zrb/builtin/generator/project/template/project.sh +19 -10
- zrb/builtin/generator/project_task/task_factory.py +60 -61
- zrb/builtin/generator/project_task/template/_automate/_project/__init__.py +2 -2
- zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +4 -4
- zrb/builtin/generator/python_task/add.py +25 -33
- zrb/builtin/generator/python_task/template/_automate/snake_zrb_task_name.py +8 -7
- zrb/builtin/generator/simple_python_app/add.py +81 -75
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/container.py +46 -61
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/deployment.py +34 -32
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/image.py +19 -22
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/local.py +23 -25
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/src/main.py +18 -14
- zrb/builtin/git.py +46 -46
- zrb/builtin/group.py +13 -34
- zrb/builtin/helper/reccuring_action.py +26 -29
- zrb/builtin/md5.py +17 -30
- zrb/builtin/process.py +19 -19
- zrb/builtin/project.py +13 -15
- zrb/builtin/say.py +69 -88
- zrb/builtin/schedule.py +15 -19
- zrb/builtin/ubuntu.py +44 -35
- zrb/builtin/update.py +5 -5
- zrb/builtin/version.py +3 -7
- zrb/builtin/watch_changes.py +24 -25
- zrb/config/config.py +19 -18
- zrb/helper/accessories/color.py +18 -6
- zrb/helper/accessories/icon.py +24 -3
- zrb/helper/accessories/name.py +120 -28
- zrb/helper/advertisement.py +9 -13
- zrb/helper/callable.py +2 -4
- zrb/helper/cli.py +27 -31
- zrb/helper/codemod/add_argument_to_function.py +3 -4
- zrb/helper/codemod/add_argument_to_function_call.py +4 -7
- zrb/helper/codemod/add_assert_resource.py +7 -7
- zrb/helper/codemod/add_function_call.py +3 -5
- zrb/helper/codemod/add_import_module.py +15 -26
- zrb/helper/codemod/add_key_value_to_dict.py +7 -10
- zrb/helper/codemod/add_property_to_class.py +10 -8
- zrb/helper/codemod/add_upstream_to_task.py +21 -33
- zrb/helper/codemod/append_code_to_function.py +6 -13
- zrb/helper/codemod/format_code.py +2 -1
- zrb/helper/default_env.py +25 -25
- zrb/helper/docker_compose/fetch_external_env.py +18 -18
- zrb/helper/docker_compose/file.py +5 -4
- zrb/helper/docstring.py +44 -47
- zrb/helper/env_map/fetch.py +7 -12
- zrb/helper/file/copy_tree.py +12 -17
- zrb/helper/file/match.py +6 -7
- zrb/helper/file/text.py +8 -6
- zrb/helper/git/detect_changes.py +9 -8
- zrb/helper/loader/load_module.py +14 -13
- zrb/helper/log.py +4 -3
- zrb/helper/map/conversion.py +4 -5
- zrb/helper/python_task.py +2 -4
- zrb/helper/render_data.py +25 -18
- zrb/helper/string/constant.py +2 -2
- zrb/helper/string/conversion.py +17 -16
- zrb/helper/string/jinja.py +2 -2
- zrb/helper/typecheck.py +6 -4
- zrb/helper/typing.py +10 -2
- zrb/helper/util.py +44 -40
- zrb/task/any_task.py +251 -251
- zrb/task/base_remote_cmd_task.py +76 -59
- zrb/task/base_task/base_task.py +95 -108
- zrb/task/base_task/component/base_task_model.py +73 -71
- zrb/task/base_task/component/common_task_model.py +42 -29
- zrb/task/base_task/component/pid_model.py +3 -5
- zrb/task/base_task/component/renderer.py +26 -36
- zrb/task/base_task/component/trackers.py +6 -9
- zrb/task/checker.py +14 -9
- zrb/task/cmd_task.py +102 -100
- zrb/task/decorator.py +19 -13
- zrb/task/docker_compose_task.py +127 -98
- zrb/task/flow_task.py +16 -19
- zrb/task/http_checker.py +40 -36
- zrb/task/notifier.py +50 -38
- zrb/task/parallel.py +3 -3
- zrb/task/path_checker.py +34 -27
- zrb/task/path_watcher.py +49 -40
- zrb/task/port_checker.py +33 -26
- zrb/task/recurring_task.py +36 -42
- zrb/task/remote_cmd_task.py +31 -28
- zrb/task/resource_maker.py +66 -52
- zrb/task/rsync_task.py +24 -21
- zrb/task/task.py +4 -3
- zrb/task/time_watcher.py +36 -31
- zrb/task_env/constant.py +1 -1
- zrb/task_env/env.py +33 -31
- zrb/task_env/env_file.py +24 -23
- zrb/task_group/group.py +27 -30
- zrb/task_input/any_input.py +18 -16
- zrb/task_input/base_input.py +26 -26
- zrb/task_input/bool_input.py +6 -6
- zrb/task_input/choice_input.py +11 -9
- zrb/task_input/constant.py +1 -1
- zrb/task_input/float_input.py +6 -5
- zrb/task_input/int_input.py +8 -8
- zrb/task_input/password_input.py +9 -9
- zrb/task_input/str_input.py +8 -8
- zrb/task_input/task_input.py +4 -2
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/METADATA +3 -1
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/RECORD +316 -315
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/LICENSE +0 -0
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/WHEEL +0 -0
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/entry_points.txt +0 -0
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py
CHANGED
@@ -1,116 +1,97 @@
|
|
1
|
-
from typing import Any, Mapping, List, Union
|
2
1
|
from logging import Logger
|
2
|
+
from typing import Any, List, Mapping, Union
|
3
|
+
|
3
4
|
from core.messagebus import Publisher
|
4
|
-
from core.rpc import Caller, Server
|
5
5
|
from core.repo import SearchFilter
|
6
|
+
from core.rpc import Caller, Server
|
6
7
|
from module.auth.component.model.user_model import user_model
|
7
|
-
from module.auth.schema.user import UserData, UserLogin
|
8
8
|
from module.auth.schema.token import AccessTokenData
|
9
|
+
from module.auth.schema.user import UserData, UserLogin
|
9
10
|
|
10
11
|
|
11
12
|
def register_rpc(
|
12
|
-
logger: Logger,
|
13
|
-
rpc_server: Server,
|
14
|
-
rpc_caller: Caller,
|
15
|
-
publisher: Publisher
|
13
|
+
logger: Logger, rpc_server: Server, rpc_caller: Caller, publisher: Publisher
|
16
14
|
):
|
17
15
|
logger.info('🥪 Register RPC handlers for "auth.user"')
|
18
16
|
|
19
|
-
@rpc_server.register(
|
17
|
+
@rpc_server.register("auth_user_is_admin")
|
20
18
|
async def user_is_admin(id: str) -> bool:
|
21
|
-
|
19
|
+
"""
|
22
20
|
Used by RPC Authenticator
|
23
|
-
|
21
|
+
"""
|
24
22
|
return await user_model.is_admin(id)
|
25
23
|
|
26
|
-
@rpc_server.register(
|
24
|
+
@rpc_server.register("auth_user_is_guest")
|
27
25
|
async def user_is_guest(id: str) -> bool:
|
28
|
-
|
26
|
+
"""
|
29
27
|
Used by RPC Authenticator
|
30
|
-
|
28
|
+
"""
|
31
29
|
return await user_model.is_guest(id)
|
32
30
|
|
33
|
-
@rpc_server.register(
|
31
|
+
@rpc_server.register("auth_is_user_authorized")
|
34
32
|
async def is_user_having_permission(
|
35
33
|
id: str, permission_name: Union[str, List[str]]
|
36
34
|
) -> Mapping[str, bool]:
|
37
|
-
|
35
|
+
"""
|
38
36
|
Used by RPC Authenticator
|
39
|
-
|
37
|
+
"""
|
40
38
|
if isinstance(permission_name, str):
|
41
39
|
return await user_model.is_authorized(id, permission_name)
|
42
40
|
return await user_model.is_authorized(id, *permission_name)
|
43
41
|
|
44
|
-
@rpc_server.register(
|
42
|
+
@rpc_server.register("auth_create_token")
|
45
43
|
async def create_token(login_data: Mapping[str, str]) -> Mapping[str, str]:
|
46
44
|
result = await user_model.create_auth_token(UserLogin(**login_data))
|
47
|
-
return result.
|
45
|
+
return result.model_dump()
|
48
46
|
|
49
|
-
@rpc_server.register(
|
50
|
-
async def refresh_token(
|
51
|
-
refresh_token
|
52
|
-
|
53
|
-
result = await user_model.refresh_auth_token(
|
54
|
-
refresh_token, access_token
|
55
|
-
)
|
56
|
-
return result.dict()
|
47
|
+
@rpc_server.register("auth_refresh_token")
|
48
|
+
async def refresh_token(refresh_token: str, access_token: str) -> Mapping[str, str]:
|
49
|
+
result = await user_model.refresh_auth_token(refresh_token, access_token)
|
50
|
+
return result.model_dump()
|
57
51
|
|
58
|
-
@rpc_server.register(
|
52
|
+
@rpc_server.register("auth_get_user")
|
59
53
|
async def get(
|
60
54
|
keyword: str,
|
61
55
|
criterion: Mapping[str, Any],
|
62
56
|
limit: int,
|
63
57
|
offset: int,
|
64
|
-
user_token_data: Mapping[str, Any]
|
58
|
+
user_token_data: Mapping[str, Any],
|
65
59
|
) -> Mapping[str, Any]:
|
66
60
|
result = await user_model.get(
|
67
|
-
search_filter=SearchFilter(
|
68
|
-
keyword=keyword, criterion=criterion
|
69
|
-
),
|
61
|
+
search_filter=SearchFilter(keyword=keyword, criterion=criterion),
|
70
62
|
limit=limit,
|
71
|
-
offset=offset
|
63
|
+
offset=offset,
|
72
64
|
)
|
73
|
-
return result.
|
65
|
+
return result.model_dump()
|
74
66
|
|
75
|
-
@rpc_server.register(
|
67
|
+
@rpc_server.register("auth_get_user_by_id")
|
76
68
|
async def get_by_id(
|
77
|
-
id: str,
|
78
|
-
user_token_data: Mapping[str, Any] = {}
|
69
|
+
id: str, user_token_data: Mapping[str, Any] = {}
|
79
70
|
) -> Mapping[str, Any]:
|
80
71
|
row = await user_model.get_by_id(id)
|
81
|
-
return row.
|
72
|
+
return row.model_dump()
|
82
73
|
|
83
|
-
@rpc_server.register(
|
74
|
+
@rpc_server.register("auth_insert_user")
|
84
75
|
async def insert(
|
85
|
-
data: Mapping[str, Any],
|
86
|
-
user_token_data: Mapping[str, Any]
|
76
|
+
data: Mapping[str, Any], user_token_data: Mapping[str, Any]
|
87
77
|
) -> Mapping[str, Any]:
|
88
78
|
user_token_data = AccessTokenData(**user_token_data)
|
89
|
-
data[
|
90
|
-
data[
|
91
|
-
row = await user_model.insert(
|
92
|
-
|
93
|
-
)
|
94
|
-
return row.dict()
|
79
|
+
data["created_by"] = user_token_data.user_id
|
80
|
+
data["updated_by"] = user_token_data.user_id
|
81
|
+
row = await user_model.insert(data=UserData(**data))
|
82
|
+
return row.model_dump()
|
95
83
|
|
96
|
-
@rpc_server.register(
|
84
|
+
@rpc_server.register("auth_update_user")
|
97
85
|
async def update(
|
98
|
-
id: str,
|
99
|
-
data: Mapping[str, Any],
|
100
|
-
user_token_data: Mapping[str, Any]
|
86
|
+
id: str, data: Mapping[str, Any], user_token_data: Mapping[str, Any]
|
101
87
|
) -> Mapping[str, Any]:
|
102
88
|
user_token_data = AccessTokenData(**user_token_data)
|
103
|
-
data[
|
104
|
-
row = await user_model.update(
|
105
|
-
|
106
|
-
)
|
107
|
-
return row.dict()
|
89
|
+
data["updated_by"] = user_token_data.user_id
|
90
|
+
row = await user_model.update(id=id, data=UserData(**data))
|
91
|
+
return row.model_dump()
|
108
92
|
|
109
|
-
@rpc_server.register(
|
110
|
-
async def delete(
|
111
|
-
id: str,
|
112
|
-
user_token_data: Mapping[str, Any]
|
113
|
-
) -> Mapping[str, Any]:
|
93
|
+
@rpc_server.register("auth_delete_user")
|
94
|
+
async def delete(id: str, user_token_data: Mapping[str, Any]) -> Mapping[str, Any]:
|
114
95
|
user_token_data = AccessTokenData(**user_token_data)
|
115
96
|
row = await user_model.delete(id=id)
|
116
|
-
return row.
|
97
|
+
return row.model_dump()
|
@@ -1,12 +1,10 @@
|
|
1
1
|
from logging import Logger
|
2
|
+
|
2
3
|
from core.messagebus import Consumer, Publisher
|
3
4
|
from core.rpc import Caller
|
4
5
|
|
5
6
|
|
6
7
|
def register_event(
|
7
|
-
logger: Logger,
|
8
|
-
consumer: Consumer,
|
9
|
-
rpc_caller: Caller,
|
10
|
-
publisher: Publisher
|
8
|
+
logger: Logger, consumer: Consumer, rpc_caller: Caller, publisher: Publisher
|
11
9
|
):
|
12
10
|
logger.info('🥪 Register event handlers for "auth"')
|
@@ -1,8 +1,6 @@
|
|
1
|
-
from config import (
|
2
|
-
app_enable_auth_module
|
3
|
-
)
|
4
|
-
from component.log import logger
|
5
1
|
from component.db_connection import engine
|
2
|
+
from component.log import logger
|
3
|
+
from config import app_enable_auth_module
|
6
4
|
from helper.migration import migrate
|
7
5
|
from module.auth.component import Base
|
8
6
|
from module.auth.register_permission import register_permission
|
@@ -14,5 +12,5 @@ async def migrate_auth():
|
|
14
12
|
return
|
15
13
|
logger.info('🥪 Perform DB migration for "auth"')
|
16
14
|
await migrate(engine=engine, Base=Base)
|
17
|
-
logger.info(
|
15
|
+
logger.info("🥪 Register permissions")
|
18
16
|
await register_permission()
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_module.py
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
from config import (
|
2
|
-
app_enable_rpc_server, app_enable_event_handler, app_enable_api,
|
3
|
-
app_enable_auth_module
|
4
|
-
)
|
5
|
-
from component.log import logger
|
6
1
|
from component.app import app
|
2
|
+
from component.log import logger
|
7
3
|
from component.messagebus import consumer, publisher
|
8
4
|
from component.rpc import rpc_caller, rpc_server
|
9
|
-
from
|
5
|
+
from config import (
|
6
|
+
app_enable_api,
|
7
|
+
app_enable_auth_module,
|
8
|
+
app_enable_event_handler,
|
9
|
+
app_enable_rpc_server,
|
10
|
+
)
|
10
11
|
from module.auth.api import register_api
|
12
|
+
from module.auth.component import authorizer
|
11
13
|
from module.auth.event import register_event
|
12
14
|
from module.auth.rpc import register_rpc
|
13
15
|
|
@@ -22,19 +24,16 @@ def register_auth():
|
|
22
24
|
app=app,
|
23
25
|
authorizer=authorizer,
|
24
26
|
rpc_caller=rpc_caller,
|
25
|
-
publisher=publisher
|
27
|
+
publisher=publisher,
|
26
28
|
)
|
27
29
|
if app_enable_event_handler:
|
28
30
|
register_event(
|
29
|
-
logger=logger,
|
30
|
-
consumer=consumer,
|
31
|
-
rpc_caller=rpc_caller,
|
32
|
-
publisher=publisher
|
31
|
+
logger=logger, consumer=consumer, rpc_caller=rpc_caller, publisher=publisher
|
33
32
|
)
|
34
33
|
if app_enable_rpc_server:
|
35
34
|
register_rpc(
|
36
35
|
logger=logger,
|
37
36
|
rpc_server=rpc_server,
|
38
37
|
rpc_caller=rpc_caller,
|
39
|
-
publisher=publisher
|
38
|
+
publisher=publisher,
|
40
39
|
)
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py
CHANGED
@@ -1,44 +1,37 @@
|
|
1
1
|
from typing import List, Optional
|
2
|
-
|
2
|
+
|
3
3
|
from module.auth.component.model.permission_model import permission_model
|
4
|
+
from module.auth.schema.permission import PermissionData
|
4
5
|
|
5
|
-
DEFAULT_ACTION_NAMES = [
|
6
|
+
DEFAULT_ACTION_NAMES = ["get", "get_by_id", "insert", "update", "delete"]
|
6
7
|
ACTION_DESCRIPTION = {
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
"get": "list all",
|
9
|
+
"get_by_id": "get single",
|
10
|
+
"insert": "insert new",
|
11
|
+
"update": "update",
|
12
|
+
"delete": "delete",
|
12
13
|
}
|
13
14
|
|
14
15
|
|
15
16
|
async def ensure_entity_permission(
|
16
|
-
module_name: str,
|
17
|
-
entity_name: str,
|
18
|
-
action_names: Optional[List[str]] = None
|
17
|
+
module_name: str, entity_name: str, action_names: Optional[List[str]] = None
|
19
18
|
):
|
20
19
|
if action_names is None:
|
21
20
|
action_names = DEFAULT_ACTION_NAMES
|
22
21
|
for action_name in action_names:
|
23
22
|
caption = ACTION_DESCRIPTION[action_name]
|
24
|
-
await permission_model.ensure_permission(
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
await permission_model.ensure_permission(
|
24
|
+
PermissionData(
|
25
|
+
name=f"{module_name}:{entity_name}:{action_name}",
|
26
|
+
description=f"Allow {caption} {entity_name} on {module_name}",
|
27
|
+
)
|
28
|
+
)
|
28
29
|
|
29
30
|
|
30
31
|
async def register_permission():
|
32
|
+
await ensure_entity_permission(module_name="auth", entity_name="group")
|
33
|
+
await ensure_entity_permission(module_name="auth", entity_name="permission")
|
34
|
+
await ensure_entity_permission(module_name="auth", entity_name="user")
|
31
35
|
await ensure_entity_permission(
|
32
|
-
module_name=
|
33
|
-
)
|
34
|
-
await ensure_entity_permission(
|
35
|
-
module_name='auth', entity_name='permission'
|
36
|
-
)
|
37
|
-
await ensure_entity_permission(
|
38
|
-
module_name='auth', entity_name='user'
|
39
|
-
)
|
40
|
-
await ensure_entity_permission(
|
41
|
-
module_name='log',
|
42
|
-
entity_name='activity',
|
43
|
-
action_names=['get', 'get_by_id']
|
36
|
+
module_name="log", entity_name="activity", action_names=["get", "get_by_id"]
|
44
37
|
)
|
@@ -1,22 +1,14 @@
|
|
1
1
|
from logging import Logger
|
2
|
+
|
2
3
|
from core.messagebus import Publisher
|
3
4
|
from core.rpc import Caller, Server
|
4
|
-
from module.auth.entity.
|
5
|
-
|
6
|
-
|
7
|
-
from module.auth.entity.group.rpc import (
|
8
|
-
register_rpc as register_group_rpc
|
9
|
-
)
|
10
|
-
from module.auth.entity.user.rpc import (
|
11
|
-
register_rpc as register_user_rpc
|
12
|
-
)
|
5
|
+
from module.auth.entity.group.rpc import register_rpc as register_group_rpc
|
6
|
+
from module.auth.entity.permission.rpc import register_rpc as register_permission_rpc
|
7
|
+
from module.auth.entity.user.rpc import register_rpc as register_user_rpc
|
13
8
|
|
14
9
|
|
15
10
|
def register_rpc(
|
16
|
-
logger: Logger,
|
17
|
-
rpc_server: Server,
|
18
|
-
rpc_caller: Caller,
|
19
|
-
publisher: Publisher
|
11
|
+
logger: Logger, rpc_server: Server, rpc_caller: Caller, publisher: Publisher
|
20
12
|
):
|
21
13
|
logger.info('🥪 Register RPC handlers for "auth"')
|
22
14
|
register_permission_rpc(logger, rpc_server, rpc_caller, publisher)
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
from typing import List
|
2
|
-
|
2
|
+
|
3
|
+
from core.schema import BaseCountSchema, BaseDateTimeSchema
|
3
4
|
from module.auth.schema.permission import Permission
|
4
5
|
|
5
6
|
|
@@ -13,11 +14,12 @@ class GroupData(GroupBase):
|
|
13
14
|
|
14
15
|
|
15
16
|
class Group(GroupBase):
|
16
|
-
id: str
|
17
|
-
permissions: List[Permission] = []
|
18
|
-
|
19
17
|
class Config:
|
20
18
|
orm_mode = True
|
19
|
+
from_attributes = True
|
20
|
+
|
21
|
+
id: str
|
22
|
+
permissions: List[Permission] = []
|
21
23
|
|
22
24
|
|
23
25
|
class GroupResult(BaseCountSchema):
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
from typing import List
|
2
|
-
|
2
|
+
|
3
|
+
from core.schema import BaseCountSchema, BaseDateTimeSchema
|
3
4
|
|
4
5
|
|
5
6
|
class PermissionData(BaseDateTimeSchema):
|
@@ -12,6 +13,7 @@ class Permission(PermissionData):
|
|
12
13
|
|
13
14
|
class Config:
|
14
15
|
orm_mode = True
|
16
|
+
from_attributes = True
|
15
17
|
|
16
18
|
|
17
19
|
class PermissionResult(BaseCountSchema):
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/token.py
CHANGED
@@ -4,12 +4,12 @@ from pydantic import BaseModel
|
|
4
4
|
class AccessTokenData(BaseModel):
|
5
5
|
user_id: str
|
6
6
|
username: str
|
7
|
-
expire_seconds: int
|
7
|
+
expire_seconds: int | float
|
8
8
|
|
9
9
|
|
10
10
|
class RefreshTokenData(BaseModel):
|
11
11
|
user_id: str
|
12
|
-
expire_seconds: int
|
12
|
+
expire_seconds: int | float
|
13
13
|
|
14
14
|
|
15
15
|
class TokenResponse(BaseModel):
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
from typing import List
|
2
|
-
|
3
|
-
from core.schema import
|
4
|
-
from module.auth.schema.permission import Permission
|
2
|
+
|
3
|
+
from core.schema import BaseCountSchema, BaseDateTimeSchema
|
5
4
|
from module.auth.schema.group import Group
|
5
|
+
from module.auth.schema.permission import Permission
|
6
|
+
from pydantic import BaseModel
|
6
7
|
|
7
8
|
|
8
9
|
class UserBase(BaseDateTimeSchema):
|
@@ -1,11 +1,10 @@
|
|
1
|
-
from fastapi import FastAPI
|
2
1
|
from logging import Logger
|
2
|
+
|
3
3
|
from core.messagebus import Publisher
|
4
4
|
from core.rpc import Caller
|
5
|
+
from fastapi import FastAPI
|
5
6
|
from module.auth.core import Authorizer
|
6
|
-
from module.log.entity.activity.api import
|
7
|
-
register_api as register_activity_api
|
8
|
-
)
|
7
|
+
from module.log.entity.activity.api import register_api as register_activity_api
|
9
8
|
|
10
9
|
|
11
10
|
def register_api(
|
@@ -13,7 +12,7 @@ def register_api(
|
|
13
12
|
app: FastAPI,
|
14
13
|
authorizer: Authorizer,
|
15
14
|
rpc_caller: Caller,
|
16
|
-
publisher: Publisher
|
15
|
+
publisher: Publisher,
|
17
16
|
):
|
18
17
|
logger.info('🥪 Register API for "log"')
|
19
18
|
register_activity_api(logger, app, authorizer, rpc_caller, publisher)
|
@@ -1,10 +1,4 @@
|
|
1
|
-
from module.log.component.repo.activity_repo import
|
2
|
-
|
3
|
-
)
|
4
|
-
from module.log.entity.activity.model import (
|
5
|
-
ActivityModel
|
6
|
-
)
|
1
|
+
from module.log.component.repo.activity_repo import activity_repo
|
2
|
+
from module.log.entity.activity.model import ActivityModel
|
7
3
|
|
8
|
-
activity_model: ActivityModel = ActivityModel(
|
9
|
-
activity_repo
|
10
|
-
)
|
4
|
+
activity_model: ActivityModel = ActivityModel(activity_repo)
|
@@ -1,9 +1,5 @@
|
|
1
|
-
from component.log import logger
|
2
1
|
from component.db_connection import engine
|
3
|
-
from
|
4
|
-
|
5
|
-
)
|
2
|
+
from component.log import logger
|
3
|
+
from module.log.entity.activity.repo import ActivityDBRepo, ActivityRepo
|
6
4
|
|
7
|
-
activity_repo: ActivityRepo = ActivityDBRepo(
|
8
|
-
logger=logger, engine=engine
|
9
|
-
)
|
5
|
+
activity_repo: ActivityRepo = ActivityDBRepo(logger=logger, engine=engine)
|
@@ -1,15 +1,15 @@
|
|
1
|
-
from typing import
|
2
|
-
|
3
|
-
|
1
|
+
from typing import Type, TypeVar
|
2
|
+
|
3
|
+
import jsons
|
4
4
|
from core.messagebus.messagebus import Publisher
|
5
5
|
from core.model.repo_model import RepoModel
|
6
|
+
from core.repo.repo import Repo
|
6
7
|
from module.log.schema.activity import ActivityData
|
7
|
-
import
|
8
|
-
|
8
|
+
from pydantic import BaseModel
|
9
9
|
|
10
|
-
Schema = TypeVar(
|
11
|
-
SchemaData = TypeVar(
|
12
|
-
SchemaResult = TypeVar(
|
10
|
+
Schema = TypeVar("Schema", bound=BaseModel)
|
11
|
+
SchemaData = TypeVar("SchemaData", bound=BaseModel)
|
12
|
+
SchemaResult = TypeVar("SchemaResult", bound=BaseModel)
|
13
13
|
|
14
14
|
|
15
15
|
class HistoricalRepoModel(RepoModel[Schema, SchemaData, SchemaResult]):
|
@@ -22,23 +22,23 @@ class HistoricalRepoModel(RepoModel[Schema, SchemaData, SchemaResult]):
|
|
22
22
|
|
23
23
|
async def insert(self, data: SchemaData) -> Schema:
|
24
24
|
result = await super().insert(data)
|
25
|
-
await self._publish_activity(action=
|
25
|
+
await self._publish_activity(action="insert", result=result)
|
26
26
|
return result
|
27
27
|
|
28
28
|
async def update(self, id: str, data: SchemaData) -> Schema:
|
29
29
|
result = await self.repo.update(id, data)
|
30
|
-
await self._publish_activity(action=
|
30
|
+
await self._publish_activity(action="update", result=result)
|
31
31
|
return result
|
32
32
|
|
33
33
|
async def delete(self, id: str) -> Schema:
|
34
34
|
result = await self.repo.delete(id)
|
35
|
-
await self._publish_activity(action=
|
35
|
+
await self._publish_activity(action="delete", result=result)
|
36
36
|
return result
|
37
37
|
|
38
38
|
async def _publish_activity(self, action: str, result: Schema):
|
39
39
|
activity_data = ActivityData(
|
40
40
|
action=action,
|
41
41
|
entity=self.log_entity_name,
|
42
|
-
data=jsons.dumps(result.
|
42
|
+
data=jsons.dumps(result.model_dump()),
|
43
43
|
)
|
44
|
-
await self.publisher.publish(
|
44
|
+
await self.publisher.publish("log_new_activity", activity_data.model_dump())
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/api.py
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
-
from fastapi import FastAPI, Depends
|
2
1
|
from logging import Logger
|
2
|
+
|
3
|
+
from core.error import HTTPAPIException
|
3
4
|
from core.messagebus import Publisher
|
4
5
|
from core.rpc import Caller
|
5
|
-
from
|
6
|
+
from fastapi import Depends, FastAPI
|
7
|
+
from module.auth.component import access_token_scheme
|
6
8
|
from module.auth.core import Authorizer
|
7
|
-
from module.log.schema.activity import Activity, ActivityResult
|
8
9
|
from module.auth.schema.token import AccessTokenData
|
9
|
-
from module.
|
10
|
+
from module.log.schema.activity import Activity, ActivityResult
|
10
11
|
|
11
12
|
|
12
13
|
def register_api(
|
@@ -14,49 +15,47 @@ def register_api(
|
|
14
15
|
app: FastAPI,
|
15
16
|
authorizer: Authorizer,
|
16
17
|
rpc_caller: Caller,
|
17
|
-
publisher: Publisher
|
18
|
+
publisher: Publisher,
|
18
19
|
):
|
19
20
|
logger.info('🥪 Register API for "log.activity"')
|
20
21
|
|
21
|
-
@app.get(
|
22
|
-
'/api/v1/log/activities', response_model=ActivityResult
|
23
|
-
)
|
22
|
+
@app.get("/api/v1/log/activities", response_model=ActivityResult)
|
24
23
|
async def get_activitys(
|
25
|
-
keyword: str =
|
26
|
-
|
24
|
+
keyword: str = "",
|
25
|
+
limit: int = 100,
|
26
|
+
offset: int = 0,
|
27
|
+
user_token_data: AccessTokenData = Depends(access_token_scheme),
|
27
28
|
):
|
28
29
|
if not await authorizer.is_having_permission(
|
29
|
-
user_token_data.user_id,
|
30
|
+
user_token_data.user_id, "log:activity:get"
|
30
31
|
):
|
31
|
-
raise HTTPAPIException(403,
|
32
|
+
raise HTTPAPIException(403, "Unauthorized")
|
32
33
|
try:
|
33
34
|
result_dict = await rpc_caller.call(
|
34
|
-
|
35
|
+
"log_get_activity",
|
35
36
|
keyword=keyword,
|
36
37
|
criterion={},
|
37
38
|
limit=limit,
|
38
39
|
offset=offset,
|
39
|
-
user_token_data=user_token_data.
|
40
|
+
user_token_data=user_token_data.model_dump(),
|
40
41
|
)
|
41
42
|
return ActivityResult(**result_dict)
|
42
43
|
except Exception as e:
|
43
44
|
raise HTTPAPIException(error=e)
|
44
45
|
|
45
|
-
@app.get(
|
46
|
-
'/api/v1/log/activities/{id}', response_model=Activity
|
47
|
-
)
|
46
|
+
@app.get("/api/v1/log/activities/{id}", response_model=Activity)
|
48
47
|
async def get_activity_by_id(
|
49
|
-
id: str,
|
50
|
-
user_token_data: AccessTokenData = Depends(access_token_scheme)
|
48
|
+
id: str, user_token_data: AccessTokenData = Depends(access_token_scheme)
|
51
49
|
):
|
52
50
|
if not await authorizer.is_having_permission(
|
53
|
-
user_token_data.user_id,
|
51
|
+
user_token_data.user_id, "log:activity:get_by_id"
|
54
52
|
):
|
55
|
-
raise HTTPAPIException(403,
|
53
|
+
raise HTTPAPIException(403, "Unauthorized")
|
56
54
|
try:
|
57
55
|
result_dict = await rpc_caller.call(
|
58
|
-
|
59
|
-
id=id,
|
56
|
+
"log_get_activity_by_id",
|
57
|
+
id=id,
|
58
|
+
user_token_data=user_token_data.model_dump(),
|
60
59
|
)
|
61
60
|
return Activity(**result_dict)
|
62
61
|
except Exception as e:
|
@@ -1,20 +1,18 @@
|
|
1
|
-
from typing import Any, Mapping
|
2
1
|
from logging import Logger
|
3
|
-
from
|
2
|
+
from typing import Any, Mapping
|
3
|
+
|
4
|
+
from core.messagebus import Consumer, Publisher
|
4
5
|
from core.rpc import Caller
|
5
6
|
from module.log.component.model.activity_model import activity_model
|
6
7
|
from module.log.schema.activity import ActivityData
|
7
8
|
|
8
9
|
|
9
10
|
def register_event(
|
10
|
-
logger: Logger,
|
11
|
-
consumer: Consumer,
|
12
|
-
rpc_caller: Caller,
|
13
|
-
publisher: Publisher
|
11
|
+
logger: Logger, consumer: Consumer, rpc_caller: Caller, publisher: Publisher
|
14
12
|
):
|
15
13
|
logger.info('🥪 Register event handlers for "log.activity"')
|
16
14
|
|
17
|
-
@consumer.register(
|
15
|
+
@consumer.register("log_new_activity")
|
18
16
|
async def insert(
|
19
17
|
data: Mapping[str, Any],
|
20
18
|
):
|
@@ -1,10 +1,6 @@
|
|
1
1
|
from core.model import RepoModel
|
2
|
-
from module.log.schema.activity import
|
3
|
-
Activity, ActivityData, ActivityResult
|
4
|
-
)
|
2
|
+
from module.log.schema.activity import Activity, ActivityData, ActivityResult
|
5
3
|
|
6
4
|
|
7
|
-
class ActivityModel(
|
8
|
-
RepoModel[Activity, ActivityData, ActivityResult]
|
9
|
-
):
|
5
|
+
class ActivityModel(RepoModel[Activity, ActivityData, ActivityResult]):
|
10
6
|
schema_result_cls = ActivityResult
|