arpakitlib 1.8.15__py3-none-any.whl → 1.8.16__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.
- arpakitlib/_arpakit_project_template_v_4/arpakitlib_project_template_info.json +3 -0
- arpakitlib/_arpakit_project_template_v_4/command/beautify_json.py +10 -0
- arpakitlib/_arpakit_project_template_v_4/command/demojize.py +9 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/drop_json_db.py +1 -1
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/drop_sqlalchemy_db.py +1 -1
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/generate_settings_env_example.py +2 -2
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/reinit_json_db.py +1 -1
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/reinit_sqlalchemy_db.py +1 -1
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/remove_operations.py +1 -1
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/remove_story_logs.py +1 -1
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/rm_all_records_in_json_db.py +1 -1
- arpakitlib/_arpakit_project_template_v_4/command/set_tg_bot_commands.py +16 -0
- arpakitlib/_arpakit_project_template_v_4/command/show_settings.py +10 -0
- arpakitlib/_arpakit_project_template_v_4/command/start_sqladmin.py +19 -0
- arpakitlib/_arpakit_project_template_v_4/command/start_sqladmin_for_prod.py +19 -0
- arpakitlib/_arpakit_project_template_v_4/command/start_sqladmin_with_reload.py +19 -0
- arpakitlib/_arpakit_project_template_v_4/command/start_tg_bot_for_prod.py +11 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/example.env +11 -5
- arpakitlib/_arpakit_project_template_v_4/project/additional_model/common.py +8 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/auth.py +111 -35
- arpakitlib/_arpakit_project_template_v_4/project/api/auth2.py +171 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/create_api_app.py +7 -7
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/event.py +8 -8
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/exception.py +1 -1
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/exception_handler.py +38 -36
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/openapi_ui.py +1 -1
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/response.py +5 -5
- arpakitlib/_arpakit_project_template_v_4/project/api/router/admin/get_arpakitlib_project_template_info.py +23 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/router/admin/get_auth_data.py +30 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/router/admin/main_router.py +3 -0
- arpakitlib/{_arpakit_project_template_v_2/project/api/router/general → _arpakit_project_template_v_4/project/api/router/client}/get_errors_info.py +3 -9
- arpakitlib/_arpakit_project_template_v_4/project/api/router/client/main_router.py +3 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/router/client/now_utc_datetime.py +22 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/router/general/healthcheck.py +21 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/router/general/main_router.py +10 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/router/main_router.py +23 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/admin/common.py +10 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/admin/operation.py +23 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/admin/story_log.py +17 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/client/common.py +10 -0
- arpakitlib/{_arpakit_project_template_v_2/project/api/schema/common/out.py → _arpakit_project_template_v_4/project/api/schema/out/common/datetime_.py} +2 -19
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/common/raw_data.py +7 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/common.py +5 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/general/error.py +11 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/general/errors_info_general.py +6 -0
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/general/healthcheck.py +5 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/const.py +2 -2
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/settings.py +43 -39
- arpakitlib/_arpakit_project_template_v_4/project/site/router/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/sqladmin_/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/admin_auth.py +17 -12
- arpakitlib/_arpakit_project_template_v_4/project/sqladmin_/asgi.py +3 -0
- arpakitlib/_arpakit_project_template_v_4/project/sqladmin_/create_sqladmin_app.py +49 -0
- arpakitlib/_arpakit_project_template_v_4/project/sqladmin_/event.py +40 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/model_view/operation.py +1 -1
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/model_view/story_log.py +1 -1
- arpakitlib/_arpakit_project_template_v_4/project/sqlalchemy_db_/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_model/__init__.py +4 -0
- arpakitlib/_arpakit_project_template_v_4/project/sqlalchemy_db_/sqlalchemy_model/api_key.py +44 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_model/common.py +29 -6
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_model/story_log.py +2 -1
- arpakitlib/_arpakit_project_template_v_4/project/sqlalchemy_db_/sqlalchemy_model/user.py +87 -0
- arpakitlib/_arpakit_project_template_v_4/project/sqlalchemy_db_/sqlalchemy_model/user_token.py +41 -0
- arpakitlib/_arpakit_project_template_v_4/project/test_data/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/blank/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/blank/admin.py +45 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/blank/client.py +44 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/blank/common.py +5 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/callback/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/callback/admin.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/callback/client.py +5 -0
- arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/kb/inline_/callback.py → _arpakit_project_template_v_4/project/tg_bot/callback/common.py} +7 -7
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/const.py +22 -6
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/error_handler.py +37 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/event.py +43 -13
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/is_private_chat.py +12 -0
- arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/filter_.py → _arpakit_project_template_v_4/project/tg_bot/filter_/message_text.py} +1 -22
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/not_prod_mode_filter.py +8 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/prod_mode_filter.py +8 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/user_roles_has_admin.py +27 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/user_roles_has_client.py +27 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/admin/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/admin/common.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/client/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/client/common.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/client/hello_world.py +16 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/common.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/admin/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/admin/common.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/client/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/client/common.py +0 -0
- arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/kb/static_/common.py → _arpakit_project_template_v_4/project/tg_bot/kb/static_/client/hello_world.py} +3 -3
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/common.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/middleware/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/middleware/common.py +13 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/middleware/init_user.py +84 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/middleware/middleware.py +1 -2
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/arpakitlib_project_template_info.py +25 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/main_router.py +15 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/me.py +20 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/raise_fake_error.py +20 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/reinit_sqlalchemy_db.py +27 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/healthcheck.py +16 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/hello_world.py +44 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/main_router.py +14 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/start.py +33 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/main_router.py +13 -0
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/start_tg_bot.py +2 -2
- arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/tg_bot.py +7 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/util/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/util/etc.py +0 -0
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/util/set_tg_bot_commands.py +76 -0
- arpakitlib/_arpakit_project_template_v_4/project/util/__init__.py +0 -0
- arpakitlib/ar_aiogram_util.py +0 -3
- arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +1 -65
- arpakitlib/ar_json_util.py +43 -12
- arpakitlib/ar_sqlalchemy_util.py +2 -2
- arpakitlib/ar_ssh_runner_util.py +2 -2
- arpakitlib/ar_str_util.py +15 -0
- {arpakitlib-1.8.15.dist-info → arpakitlib-1.8.16.dist-info}/METADATA +2 -1
- arpakitlib-1.8.16.dist-info/RECORD +330 -0
- arpakitlib/_arpakit_project_template_v_2/arpakitlib_project_template_info.json +0 -3
- arpakitlib/_arpakit_project_template_v_2/command/beautify_json.py +0 -10
- arpakitlib/_arpakit_project_template_v_2/command/show_settings.py +0 -10
- arpakitlib/_arpakit_project_template_v_2/project/additional_model/common.py +0 -1
- arpakitlib/_arpakit_project_template_v_2/project/api/router/general/get_auth_data.py +0 -31
- arpakitlib/_arpakit_project_template_v_2/project/api/router/general/healthcheck.py +0 -26
- arpakitlib/_arpakit_project_template_v_2/project/api/router/general/main_router.py +0 -24
- arpakitlib/_arpakit_project_template_v_2/project/api/router/general/now_utc_datetime.py +0 -26
- arpakitlib/_arpakit_project_template_v_2/project/api/router/main_router.py +0 -11
- arpakitlib/_arpakit_project_template_v_2/project/api/schema/common/in_.py +0 -5
- arpakitlib/_arpakit_project_template_v_2/project/api/schema/example/in_.py +0 -5
- arpakitlib/_arpakit_project_template_v_2/project/api/schema/example/out.py +0 -45
- arpakitlib/_arpakit_project_template_v_2/project/api/schema/general/in_.py +0 -5
- arpakitlib/_arpakit_project_template_v_2/project/api/schema/general/out.py +0 -14
- arpakitlib/_arpakit_project_template_v_2/project/tg_bot/blank/blank.py +0 -24
- arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/inline_/common.py +0 -15
- arpakitlib/_arpakit_project_template_v_2/project/tg_bot/middleware/init_user.py +0 -21
- arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/arpakitlib_project_template_info.py +0 -14
- arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/error.py +0 -16
- arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/healthcheck.py +0 -11
- arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/main_router.py +0 -12
- arpakitlib/_arpakit_project_template_v_2/project/tg_bot/util.py +0 -1
- arpakitlib-1.8.15.dist-info/RECORD +0 -265
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/.gitignore +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/.python-version +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/LICENSE +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/README.md +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic/README +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic/env.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic/script.py.mako +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic/versions/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic.ini +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/alembic_history.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/alembic_revision_autogenerate.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/alembic_upgrade_head.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/check_logging.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/check_sqlalchemy_db.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_ps_a.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_rm_postgres.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_run_postgres.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_start_postgres.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_stop_postgres.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_commit.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_push_arpakit_company_github_1.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_push_arpakit_company_gitlab_1.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_push_arpakit_github_1.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_push_arpakit_gitlab_1.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_remote_v.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_set_arpakit_company_origin.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_set_arpakit_origin.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_set_divarteam_origin.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_status.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/hello_world.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/init_json_db.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/init_sqlalchemy_db.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_check.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_clear_cache.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_config.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_install.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_lock.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_remove_and_add_arpakitlib.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_show.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_show_arpakitlib.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_update.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_update_arpakitlib.sh +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/command/start_api_for_not_prod.py → _arpakit_project_template_v_4/command/start_api.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/start_api_for_prod.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/command/start_api_with_reload_for_not_prod.py → _arpakit_project_template_v_4/command/start_api_with_reload.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/command/start_operation_executor_worker_for_not_prod.py → _arpakit_project_template_v_4/command/start_operation_executor_worker.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/command/start_operation_executor_workers_for_not_prod.py → _arpakit_project_template_v_4/command/start_operation_executor_workers.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/command/start_scheduled_operation_creator_worker_for_not_prod.py → _arpakit_project_template_v_4/command/start_scheduled_operation_creator_worker.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/command/start_tg_bot_for_prod.py → _arpakit_project_template_v_4/command/start_tg_bot.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_1.txt +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_2.txt +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_3.txt +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_4.txt +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_5.txt +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/additional_model/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/asgi.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/const.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/router/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/api/router/general → _arpakit_project_template_v_4/project/api/router/admin}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/api/schema → _arpakit_project_template_v_4/project/api/router/client}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/api/schema/common → _arpakit_project_template_v_4/project/api/router/general}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/api/schema/example → _arpakit_project_template_v_4/project/api/schema}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/api/schema/base_schema.py → _arpakit_project_template_v_4/project/api/schema/common.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/api/schema/general → _arpakit_project_template_v_4/project/api/schema/in_}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/business_service → _arpakit_project_template_v_4/project/api/schema/in_/admin}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/api/util.py → _arpakit_project_template_v_4/project/api/schema/in_/admin/common.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/celery_ → _arpakit_project_template_v_4/project/api/schema/in_/client}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/core/__init__.py → _arpakit_project_template_v_4/project/api/schema/in_/client/common.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/json_db → _arpakit_project_template_v_4/project/api/schema/in_/general}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/operation_execution/__init__.py → _arpakit_project_template_v_4/project/api/schema/in_/general/common.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/resource → _arpakit_project_template_v_4/project/api/schema/out}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/sandbox → _arpakit_project_template_v_4/project/api/schema/out/admin}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/site → _arpakit_project_template_v_4/project/api/schema/out/client}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/site/router → _arpakit_project_template_v_4/project/api/schema/out/common}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/sqladmin_ → _arpakit_project_template_v_4/project/api/schema/out/general}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/site/consts.py → _arpakit_project_template_v_4/project/api/schema/out/general/common.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/site/exception_handler.py → _arpakit_project_template_v_4/project/api/util.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/sqlalchemy_db_ → _arpakit_project_template_v_4/project/business_service}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/business_service/hello_world.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/business_service/remove_operations.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/test_data → _arpakit_project_template_v_4/project/celery_}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot → _arpakit_project_template_v_4/project/core}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/cache_file_storage_in_dir.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/dump_file_storage_in_dir.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/jinja2_templates.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/media_file_storage_in_dir.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/util.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/blank → _arpakit_project_template_v_4/project/json_db}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/json_db/json_db.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/more/helloworld +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/kb → _arpakit_project_template_v_4/project/operation_execution}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/const.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/operation_executor_worker.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/scheduled_operation_creator_worker.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/scheduled_operations.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/util.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/kb/inline_ → _arpakit_project_template_v_4/project/resource}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/1 +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/healthcheck +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/helloworld +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/openapi-favicon.png +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/redoc/redoc.standalone.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/favicon-16x16.png +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/favicon-32x32.png +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/index.css +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/index.html +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/oauth2-redirect.html +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-initializer.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-bundle.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-bundle.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-es-bundle.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui.css +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui.css.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/kb/static_ → _arpakit_project_template_v_4/project/sandbox}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_1.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_2.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_3.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_4.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_5.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_6.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_7.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/middleware → _arpakit_project_template_v_4/project/site}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/site/asgi.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/router/__init__.py → _arpakit_project_template_v_4/project/site/consts.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/site/create_site_app.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/site/event.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2/project/util/__init__.py → _arpakit_project_template_v_4/project/site/exception_handler.py} +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/site/router/main_router.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/add_admin_in_app.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/model_view/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/model_view/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/const.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_db.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_model/operation.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/util.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_1.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_2.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_3.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_4.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_5.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/tg_bot_dispatcher.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/util/arpakitlib_project_template.py +0 -0
- {arpakitlib-1.8.15.dist-info → arpakitlib-1.8.16.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.15.dist-info → arpakitlib-1.8.16.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.15.dist-info → arpakitlib-1.8.16.dist-info}/entry_points.txt +0 -0
@@ -5,7 +5,7 @@ from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
|
|
5
5
|
|
6
6
|
def __command():
|
7
7
|
setup_logging()
|
8
|
-
get_cached_settings().
|
8
|
+
get_cached_settings().raise_if_mode_prod()
|
9
9
|
get_cached_sqlalchemy_db().drop()
|
10
10
|
get_cached_sqlalchemy_db().drop_celery_tables()
|
11
11
|
get_cached_sqlalchemy_db().drop_alembic_tables()
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import os.path
|
2
2
|
|
3
|
-
from arpakitlib.ar_json_util import
|
3
|
+
from arpakitlib.ar_json_util import transfer_data_to_json_str
|
4
4
|
from project.core.const import ProjectPaths
|
5
5
|
from project.core.settings import get_cached_settings, Settings
|
6
6
|
|
7
7
|
|
8
8
|
def __command():
|
9
|
-
print(
|
9
|
+
print(transfer_data_to_json_str(get_cached_settings().model_dump(mode="json")))
|
10
10
|
Settings.save_env_example_to_file(filepath=os.path.join(ProjectPaths.base_dirpath, "example.env"))
|
11
11
|
|
12
12
|
|
@@ -6,7 +6,7 @@ from project.sqlalchemy_db_.sqlalchemy_model import StoryLogDBM
|
|
6
6
|
|
7
7
|
def __command():
|
8
8
|
setup_logging()
|
9
|
-
get_cached_settings().
|
9
|
+
get_cached_settings().raise_if_mode_prod()
|
10
10
|
with get_cached_sqlalchemy_db().new_session() as session:
|
11
11
|
session.query(StoryLogDBM).delete()
|
12
12
|
session.commit()
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import asyncio
|
2
|
+
|
3
|
+
from project.core.util import setup_logging
|
4
|
+
from project.tg_bot.tg_bot import get_cached_tg_bot
|
5
|
+
from project.tg_bot.util.set_tg_bot_commands import set_client_tg_bot_commands, set_admin_tg_bot_commands
|
6
|
+
|
7
|
+
|
8
|
+
async def __async_command():
|
9
|
+
setup_logging()
|
10
|
+
await set_client_tg_bot_commands()
|
11
|
+
await set_admin_tg_bot_commands()
|
12
|
+
await get_cached_tg_bot().session.close()
|
13
|
+
|
14
|
+
|
15
|
+
if __name__ == '__main__':
|
16
|
+
asyncio.run(__async_command())
|
@@ -0,0 +1,10 @@
|
|
1
|
+
from arpakitlib.ar_json_util import transfer_data_to_json_str
|
2
|
+
from project.core.settings import get_cached_settings
|
3
|
+
|
4
|
+
|
5
|
+
def __command():
|
6
|
+
print(transfer_data_to_json_str(get_cached_settings().model_dump(mode="json")))
|
7
|
+
|
8
|
+
|
9
|
+
if __name__ == '__main__':
|
10
|
+
__command()
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import uvicorn
|
2
|
+
|
3
|
+
from project.core.settings import get_cached_settings
|
4
|
+
from project.core.util import setup_logging
|
5
|
+
|
6
|
+
|
7
|
+
def __command():
|
8
|
+
setup_logging()
|
9
|
+
uvicorn.run(
|
10
|
+
"project.sqladmin_.asgi:app",
|
11
|
+
port=get_cached_settings().sqladmin_port,
|
12
|
+
host="localhost",
|
13
|
+
workers=1,
|
14
|
+
reload=False
|
15
|
+
)
|
16
|
+
|
17
|
+
|
18
|
+
if __name__ == '__main__':
|
19
|
+
__command()
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import uvicorn
|
2
|
+
|
3
|
+
from project.core.settings import get_cached_settings
|
4
|
+
from project.core.util import setup_logging
|
5
|
+
|
6
|
+
|
7
|
+
def __command():
|
8
|
+
setup_logging()
|
9
|
+
uvicorn.run(
|
10
|
+
"project.sqladmin_.asgi:app",
|
11
|
+
port=get_cached_settings().sqladmin_port,
|
12
|
+
host="localhost",
|
13
|
+
workers=1,
|
14
|
+
reload=False
|
15
|
+
)
|
16
|
+
|
17
|
+
|
18
|
+
if __name__ == '__main__':
|
19
|
+
__command()
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import uvicorn
|
2
|
+
|
3
|
+
from project.core.settings import get_cached_settings
|
4
|
+
from project.core.util import setup_logging
|
5
|
+
|
6
|
+
|
7
|
+
def __command():
|
8
|
+
setup_logging()
|
9
|
+
uvicorn.run(
|
10
|
+
"project.sqladmin_.asgi:app",
|
11
|
+
port=get_cached_settings().sqladmin_port,
|
12
|
+
host="localhost",
|
13
|
+
workers=1,
|
14
|
+
reload=True
|
15
|
+
)
|
16
|
+
|
17
|
+
|
18
|
+
if __name__ == '__main__':
|
19
|
+
__command()
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# prod_mode=
|
2
2
|
# project_name=
|
3
3
|
# sqlalchemy_db_user=
|
4
4
|
# sqlalchemy_db_password=
|
@@ -11,14 +11,15 @@
|
|
11
11
|
# api_port=
|
12
12
|
# api_init_sqlalchemy_db=
|
13
13
|
# api_init_json_db=
|
14
|
-
#
|
15
|
-
#
|
14
|
+
# api_api_keys=
|
15
|
+
# api_user_tokens=
|
16
16
|
# api_enable_sqladmin=
|
17
17
|
# api_start_operation_executor_worker=
|
18
18
|
# api_start_scheduled_operation_creator_worker=
|
19
|
-
#
|
19
|
+
# api_create_story_log_func_before_in_exception_handler=
|
20
20
|
# sqladmin_secret_key=
|
21
|
-
#
|
21
|
+
# sqladmin_auth_keys=
|
22
|
+
# sqladmin_port=
|
22
23
|
# tg_bot_token=
|
23
24
|
# tg_bot_proxy_url=
|
24
25
|
# tg_bot_init_sqlalchemy_db=
|
@@ -29,6 +30,11 @@
|
|
29
30
|
# tg_bot_webhook_secret=
|
30
31
|
# tg_bot_webhook_url=
|
31
32
|
# tg_bot_webhook_enabled=
|
33
|
+
# tg_bot_drop_pending_updates=
|
34
|
+
# tg_bot_start_operation_executor_worker=
|
35
|
+
# tg_bot_start_scheduled_operation_creator_worker=
|
36
|
+
# tg_bot_command_passwd=
|
37
|
+
# tg_bot_admin_tg_ids=
|
32
38
|
# var_dirpath=
|
33
39
|
# log_filepath=
|
34
40
|
# cache_dirpath=
|
arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/auth.py
RENAMED
@@ -4,16 +4,19 @@ import fastapi
|
|
4
4
|
import fastapi.exceptions
|
5
5
|
import fastapi.responses
|
6
6
|
import fastapi.security
|
7
|
+
import sqlalchemy
|
7
8
|
from fastapi import Security
|
8
9
|
from fastapi.security import APIKeyHeader
|
9
10
|
from pydantic import BaseModel, ConfigDict
|
10
11
|
|
11
12
|
from arpakitlib.ar_func_util import is_async_callable, is_sync_function
|
12
|
-
from arpakitlib.ar_json_util import
|
13
|
+
from arpakitlib.ar_json_util import transfer_data_to_json_str_to_data
|
13
14
|
from arpakitlib.ar_type_util import raise_for_type
|
14
15
|
from project.api.const import APIErrorCodes
|
15
16
|
from project.api.exception import APIException
|
16
17
|
from project.core.settings import get_cached_settings
|
18
|
+
from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
|
19
|
+
from project.sqlalchemy_db_.sqlalchemy_model import ApiKeyDBM, UserTokenDBM
|
17
20
|
|
18
21
|
|
19
22
|
class APIAuthData(BaseModel):
|
@@ -30,11 +33,14 @@ class APIAuthData(BaseModel):
|
|
30
33
|
|
31
34
|
current_mode_type: str | None = None
|
32
35
|
|
33
|
-
user_token_string: str | None = None
|
34
36
|
api_key_string: str | None = None
|
37
|
+
user_token_string: str | None = None
|
35
38
|
|
36
|
-
is_user_token_correct: bool | None = None
|
37
39
|
is_api_key_correct: bool | None = None
|
40
|
+
is_user_token_correct: bool | None = None
|
41
|
+
|
42
|
+
api_key_dbm: ApiKeyDBM | None = None
|
43
|
+
user_token_dbm: UserTokenDBM | None = None
|
38
44
|
|
39
45
|
|
40
46
|
def api_auth(
|
@@ -48,8 +54,8 @@ def api_auth(
|
|
48
54
|
require_mode_type: str | None = None,
|
49
55
|
require_not_mode_type: str | None = None,
|
50
56
|
|
51
|
-
|
52
|
-
|
57
|
+
is_api_key_correct_func: Callable | None = None,
|
58
|
+
is_user_token_correct_func: Callable | None = None,
|
53
59
|
correct_api_keys: str | list[str] | None = None,
|
54
60
|
correct_user_tokens: str | list[str] | None = None,
|
55
61
|
) -> Callable:
|
@@ -58,8 +64,8 @@ def api_auth(
|
|
58
64
|
if correct_api_keys is not None:
|
59
65
|
raise_for_type(correct_api_keys, list)
|
60
66
|
|
61
|
-
if
|
62
|
-
|
67
|
+
if is_api_key_correct_func is None and correct_api_keys is not None:
|
68
|
+
is_api_key_correct_func = (
|
63
69
|
lambda *args, **kwargs_: kwargs_["api_auth_data"].api_key_string in correct_api_keys
|
64
70
|
)
|
65
71
|
|
@@ -68,8 +74,8 @@ def api_auth(
|
|
68
74
|
if correct_user_tokens is not None:
|
69
75
|
raise_for_type(correct_user_tokens, list)
|
70
76
|
|
71
|
-
if
|
72
|
-
|
77
|
+
if is_user_token_correct_func is None and correct_user_tokens is not None:
|
78
|
+
is_user_token_correct_func = (
|
73
79
|
lambda *args, **kwargs_: kwargs_["api_auth_data"].user_token_string in correct_user_tokens
|
74
80
|
)
|
75
81
|
|
@@ -159,7 +165,7 @@ def api_auth(
|
|
159
165
|
raise APIException(
|
160
166
|
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
161
167
|
error_code=APIErrorCodes.cannot_authorize,
|
162
|
-
error_data=
|
168
|
+
error_data=transfer_data_to_json_str_to_data(api_auth_data.model_dump())
|
163
169
|
)
|
164
170
|
|
165
171
|
# require_not_mode_type
|
@@ -169,7 +175,7 @@ def api_auth(
|
|
169
175
|
raise APIException(
|
170
176
|
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
171
177
|
error_code=APIErrorCodes.cannot_authorize,
|
172
|
-
error_data=
|
178
|
+
error_data=transfer_data_to_json_str_to_data(api_auth_data.model_dump())
|
173
179
|
)
|
174
180
|
|
175
181
|
# require_api_key_string
|
@@ -178,7 +184,7 @@ def api_auth(
|
|
178
184
|
raise APIException(
|
179
185
|
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
180
186
|
error_code=APIErrorCodes.cannot_authorize,
|
181
|
-
error_data=
|
187
|
+
error_data=transfer_data_to_json_str_to_data(api_auth_data.model_dump())
|
182
188
|
)
|
183
189
|
|
184
190
|
# require_token_string
|
@@ -187,32 +193,38 @@ def api_auth(
|
|
187
193
|
raise APIException(
|
188
194
|
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
189
195
|
error_code=APIErrorCodes.cannot_authorize,
|
190
|
-
error_data=
|
196
|
+
error_data=transfer_data_to_json_str_to_data(api_auth_data.model_dump())
|
191
197
|
)
|
192
198
|
|
193
|
-
#
|
199
|
+
# is_api_key_correct_func
|
194
200
|
|
195
|
-
if
|
196
|
-
if is_async_callable(
|
197
|
-
|
201
|
+
if is_api_key_correct_func is not None:
|
202
|
+
if is_async_callable(is_api_key_correct_func):
|
203
|
+
await is_api_key_correct_func(
|
204
|
+
api_auth_data=api_auth_data,
|
205
|
+
request=request
|
206
|
+
)
|
207
|
+
elif is_sync_function(is_api_key_correct_func):
|
208
|
+
is_api_key_correct_func(
|
198
209
|
api_auth_data=api_auth_data,
|
199
210
|
request=request
|
200
211
|
)
|
201
|
-
elif is_sync_function(validate_api_key_func):
|
202
|
-
api_auth_data.is_api_key_correct = validate_api_key_func()
|
203
212
|
else:
|
204
213
|
raise TypeError("unknown validate_api_key_func type")
|
205
214
|
|
206
|
-
#
|
215
|
+
# is_user_token_correct_func
|
207
216
|
|
208
|
-
if
|
209
|
-
if is_async_callable(
|
210
|
-
|
217
|
+
if is_user_token_correct_func is not None:
|
218
|
+
if is_async_callable(is_user_token_correct_func):
|
219
|
+
await is_user_token_correct_func(
|
220
|
+
api_auth_data=api_auth_data,
|
221
|
+
request=request
|
222
|
+
)
|
223
|
+
elif is_sync_function(is_user_token_correct_func):
|
224
|
+
is_user_token_correct_func(
|
211
225
|
api_auth_data=api_auth_data,
|
212
226
|
request=request
|
213
227
|
)
|
214
|
-
elif is_sync_function(validate_user_token_func):
|
215
|
-
api_auth_data.is_user_token_correct = validate_user_token_func()
|
216
228
|
else:
|
217
229
|
raise TypeError("unknown validate_token_func type")
|
218
230
|
|
@@ -224,7 +236,7 @@ def api_auth(
|
|
224
236
|
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
225
237
|
error_code=APIErrorCodes.cannot_authorize,
|
226
238
|
error_description="not api_auth_data.is_api_key_correct",
|
227
|
-
error_data=
|
239
|
+
error_data=transfer_data_to_json_str_to_data(api_auth_data.model_dump()),
|
228
240
|
)
|
229
241
|
|
230
242
|
# require_correct_token
|
@@ -234,8 +246,8 @@ def api_auth(
|
|
234
246
|
raise APIException(
|
235
247
|
status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
|
236
248
|
error_code=APIErrorCodes.cannot_authorize,
|
237
|
-
error_description="not api_auth_data.
|
238
|
-
error_data=
|
249
|
+
error_description="not api_auth_data.is_user_token_correct",
|
250
|
+
error_data=transfer_data_to_json_str_to_data(api_auth_data.model_dump())
|
239
251
|
)
|
240
252
|
|
241
253
|
return api_auth_data
|
@@ -250,12 +262,16 @@ def correct_api_keys_from_settings__is_api_key_correct_func() -> Callable:
|
|
250
262
|
request: fastapi.requests.Request,
|
251
263
|
):
|
252
264
|
if get_cached_settings().api_correct_api_keys is None:
|
253
|
-
|
265
|
+
api_auth_data.is_api_key_correct = False
|
266
|
+
return
|
254
267
|
if api_auth_data.api_key_string is None:
|
255
|
-
|
268
|
+
api_auth_data.is_api_key_correct = False
|
269
|
+
return
|
256
270
|
if api_auth_data.api_key_string.strip() not in get_cached_settings().api_correct_api_keys:
|
257
|
-
|
258
|
-
|
271
|
+
api_auth_data.is_api_key_correct = False
|
272
|
+
return
|
273
|
+
api_auth_data.is_api_key_correct = True
|
274
|
+
return
|
259
275
|
|
260
276
|
return async_func
|
261
277
|
|
@@ -267,11 +283,71 @@ def correct_tokens_from_settings__is_user_token_correct_func() -> Callable:
|
|
267
283
|
request: fastapi.requests.Request,
|
268
284
|
):
|
269
285
|
if get_cached_settings().api_correct_tokens is None:
|
270
|
-
|
286
|
+
api_auth_data.is_api_key_correct = False
|
287
|
+
return
|
271
288
|
if api_auth_data.user_token_string is None:
|
272
|
-
|
289
|
+
api_auth_data.is_api_key_correct = False
|
290
|
+
return
|
273
291
|
if api_auth_data.user_token_string.strip() not in get_cached_settings().api_correct_tokens:
|
274
|
-
|
292
|
+
api_auth_data.is_api_key_correct = False
|
293
|
+
return
|
294
|
+
api_auth_data.is_api_key_correct = True
|
295
|
+
return
|
296
|
+
|
297
|
+
return async_func
|
298
|
+
|
299
|
+
|
300
|
+
def correct_api_key_from_sqlalchemy_db__is_api_key_correct_func() -> Callable:
|
301
|
+
async def async_func(
|
302
|
+
*,
|
303
|
+
api_auth_data: APIAuthData,
|
304
|
+
request: fastapi.requests.Request,
|
305
|
+
):
|
306
|
+
if api_auth_data.api_key_string is None:
|
307
|
+
api_auth_data.is_api_key_correct = False
|
308
|
+
return
|
309
|
+
|
310
|
+
async with get_cached_sqlalchemy_db().new_async_session() as session:
|
311
|
+
api_auth_data.api_key_dbm = await session.scalar(
|
312
|
+
sqlalchemy.select(ApiKeyDBM).where(ApiKeyDBM.value == api_auth_data.api_key_string)
|
313
|
+
)
|
314
|
+
|
315
|
+
if api_auth_data.api_key_dbm is None or not api_auth_data.api_key_dbm.is_enabled:
|
316
|
+
api_auth_data.is_api_key_correct = False
|
317
|
+
return
|
318
|
+
|
319
|
+
api_auth_data.is_api_key_correct = True
|
275
320
|
return True
|
276
321
|
|
277
322
|
return async_func
|
323
|
+
|
324
|
+
|
325
|
+
def correct_user_token_from_sqlalchemy_db__is_user_token_correct_func(
|
326
|
+
*, require_user_roles: list[str] | None = None
|
327
|
+
) -> Callable:
|
328
|
+
async def async_func(
|
329
|
+
*,
|
330
|
+
api_auth_data: APIAuthData,
|
331
|
+
request: fastapi.requests.Request,
|
332
|
+
):
|
333
|
+
if api_auth_data.user_token_string is None:
|
334
|
+
api_auth_data.is_user_token_correct = False
|
335
|
+
return
|
336
|
+
|
337
|
+
with get_cached_sqlalchemy_db().new_session() as session:
|
338
|
+
api_auth_data.user_token_dbm = session.query(
|
339
|
+
UserTokenDBM
|
340
|
+
).filter(
|
341
|
+
UserTokenDBM.value == api_auth_data.user_token_string
|
342
|
+
).one_or_none()
|
343
|
+
|
344
|
+
if api_auth_data.user_token_dbm is None:
|
345
|
+
api_auth_data.is_user_token_correct = False
|
346
|
+
return
|
347
|
+
if not api_auth_data.user_token_dbm.is_enabled:
|
348
|
+
pass
|
349
|
+
|
350
|
+
api_auth_data.is_user_token_correct = True
|
351
|
+
return
|
352
|
+
|
353
|
+
return async_func
|