arpakitlib 1.8.18__py3-none-any.whl → 1.8.20__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_5/arpakitlib_project_template_info.json +3 -0
- arpakitlib/_arpakit_project_template_v_5/command/alembic_revision_autogenerate.sh +2 -0
- arpakitlib/_arpakit_project_template_v_5/command/reinit_all_sqlalchemy_db.py +13 -0
- arpakitlib/{_arpakit_project_template_v_4/project/api/auth2.py → _arpakit_project_template_v_5/project/api/auth.py} +133 -26
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/exception_handler.py +11 -12
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/router/admin/get_arpakitlib_project_template_info.py +9 -3
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/router/admin/get_auth_data.py +7 -9
- arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/main_router.py +20 -0
- arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/raise_fake_error.py +27 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/router/client/get_errors_info.py +8 -2
- arpakitlib/_arpakit_project_template_v_5/project/api/router/client/main_router.py +10 -0
- arpakitlib/_arpakit_project_template_v_5/project/api/router/general/main_router.py +14 -0
- arpakitlib/{_arpakit_project_template_v_4/project/api/router/client → _arpakit_project_template_v_5/project/api/router/general}/now_utc_datetime.py +3 -3
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/out/admin/common.py +1 -1
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/out/admin/operation.py +2 -2
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/out/admin/story_log.py +2 -2
- arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/user.py +22 -0
- arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/user_token.py +14 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/out/client/common.py +1 -1
- arpakitlib/{_arpakit_project_template_v_4/project/api/schema/out/general → _arpakit_project_template_v_5/project/api/schema/out/common}/error.py +1 -1
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/core/settings.py +3 -17
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/operation_execution/operation_executor_worker.py +2 -2
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sandbox/sandbox_1.py +3 -1
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/sqlalchemy_model/api_key.py +1 -1
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/sqlalchemy_model/user.py +2 -2
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/sqlalchemy_model/user_token.py +1 -1
- arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_api_keys.py +35 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/test_data/make_test_data_1.py +4 -2
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/test_data/make_test_data_2.py +4 -2
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/test_data/make_test_data_3.py +4 -2
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/test_data/make_test_data_4.py +4 -2
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/test_data/make_test_data_5.py +4 -2
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/blank/admin.py +2 -8
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/client.py +69 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/callback/client.py +4 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/const.py +7 -6
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/user_roles_has_admin.py +18 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/user_roles_has_client.py +18 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/middleware/init_user.py +9 -8
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/router/admin/arpakitlib_project_template_info.py +6 -4
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/clear_log_file.py +33 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/drop_sqlalchemy_db.py +31 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/init_sqlalchemy_db.py +28 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_not_modified.py +59 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_old_cd.py +40 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_raise_error.py +48 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_remove_message.py +35 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/log_file.py +37 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/router/admin/me.py +4 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/router/admin/raise_fake_error.py +5 -1
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/router/admin/reinit_sqlalchemy_db.py +7 -3
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/set_tg_bot_commands.py +28 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/about.py +30 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/error_handler.py +91 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/router/client/healthcheck.py +3 -1
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/router/client/hello_world.py +5 -2
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/raw_callback_query.py +30 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/raw_inline_query.py +14 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/raw_message.py +15 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/remove_message.py +28 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/router/client/start.py +3 -2
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/support.py +30 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/main_router.py +36 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/notify_admins.py +58 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/util/set_tg_bot_commands.py +26 -4
- arpakitlib/_arpakit_project_template_v_5/project/util/__init__.py +0 -0
- arpakitlib/ar_base_worker_util.py +7 -7
- arpakitlib/ar_blank_util.py +2 -2
- arpakitlib/ar_func_util.py +21 -14
- arpakitlib/ar_sqlalchemy_util.py +9 -3
- {arpakitlib-1.8.18.dist-info → arpakitlib-1.8.20.dist-info}/METADATA +1 -1
- arpakitlib-1.8.20.dist-info/RECORD +348 -0
- arpakitlib/_arpakit_project_template_v_4/arpakitlib_project_template_info.json +0 -3
- arpakitlib/_arpakit_project_template_v_4/command/alembic_revision_autogenerate.sh +0 -2
- arpakitlib/_arpakit_project_template_v_4/project/api/auth.py +0 -353
- arpakitlib/_arpakit_project_template_v_4/project/api/router/admin/main_router.py +0 -3
- arpakitlib/_arpakit_project_template_v_4/project/api/router/client/main_router.py +0 -3
- arpakitlib/_arpakit_project_template_v_4/project/api/router/general/main_router.py +0 -10
- arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/common.py +0 -5
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/blank/client.py +0 -44
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/error_handler.py +0 -37
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/user_roles_has_admin.py +0 -27
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/user_roles_has_client.py +0 -27
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/main_router.py +0 -15
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/main_router.py +0 -14
- arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/main_router.py +0 -13
- arpakitlib-1.8.18.dist-info/RECORD +0 -330
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/.gitignore +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/.python-version +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/LICENSE +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/README.md +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/alembic/README +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/alembic/env.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/alembic/script.py.mako +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/alembic/versions/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/alembic.ini +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/alembic_history.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/alembic_upgrade_head.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/beautify_json.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/check_logging.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/check_sqlalchemy_db.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/demojize.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/docker_ps_a.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/docker_rm_postgres.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/docker_run_postgres.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/docker_start_postgres.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/docker_stop_postgres.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/drop_json_db.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/drop_sqlalchemy_db.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/generate_settings_env_example.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_commit.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_push_arpakit_company_github_1.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_push_arpakit_company_gitlab_1.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_push_arpakit_github_1.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_push_arpakit_gitlab_1.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_remote_v.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_set_arpakit_company_origin.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_set_arpakit_origin.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_set_divarteam_origin.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/git_status.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/hello_world.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/init_json_db.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/init_sqlalchemy_db.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_check.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_clear_cache.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_config.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_install.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_lock.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_remove_and_add_arpakitlib.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_show.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_show_arpakitlib.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_update.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/poetry_update_arpakitlib.sh +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/reinit_json_db.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/reinit_sqlalchemy_db.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/remove_operations.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/remove_story_logs.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/rm_all_records_in_json_db.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/set_tg_bot_commands.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/show_settings.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_api.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_api_for_prod.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_api_with_reload.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_operation_executor_worker.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_operation_executor_workers.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_scheduled_operation_creator_worker.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_sqladmin.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_sqladmin_for_prod.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_sqladmin_with_reload.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_tg_bot.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/command/start_tg_bot_for_prod.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/example.env +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/note/note_1.txt +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/note/note_2.txt +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/note/note_3.txt +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/note/note_4.txt +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/note/note_5.txt +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/additional_model/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/additional_model/common.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/asgi.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/const.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/create_api_app.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/event.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/exception.py +1 -1
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/openapi_ui.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/response.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/router/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/router/admin/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/router/client/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/router/general/__init__.py +0 -0
- arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/router/general/healthcheck.py +1 -1
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/router/main_router.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/in_/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/in_/admin/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/in_/admin/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/in_/client/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/in_/client/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/api/schema/in_/general → _arpakit_project_template_v_5/project/api/schema/in_/common}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/api/schema/out → _arpakit_project_template_v_5/project/api/schema/in_/general}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/in_/general/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/api/schema/out/admin → _arpakit_project_template_v_5/project/api/schema/out}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/api/schema/out/client → _arpakit_project_template_v_5/project/api/schema/out/admin}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/api/schema/out/common → _arpakit_project_template_v_5/project/api/schema/out/client}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/api/schema/out/general → _arpakit_project_template_v_5/project/api/schema/out/common}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/out/common/datetime_.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/out/common/raw_data.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/business_service → _arpakit_project_template_v_5/project/api/schema/out/general}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/out/general/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/out/general/errors_info_general.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/schema/out/general/healthcheck.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/api/util.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/celery_ → _arpakit_project_template_v_5/project/business_service}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/business_service/hello_world.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/business_service/remove_operations.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/core → _arpakit_project_template_v_5/project/celery_}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/json_db → _arpakit_project_template_v_5/project/core}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/core/cache_file_storage_in_dir.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/core/const.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/core/dump_file_storage_in_dir.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/core/jinja2_templates.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/core/media_file_storage_in_dir.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/core/util.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/operation_execution → _arpakit_project_template_v_5/project/json_db}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/json_db/json_db.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/more/helloworld +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/resource → _arpakit_project_template_v_5/project/operation_execution}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/operation_execution/const.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/operation_execution/scheduled_operation_creator_worker.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/operation_execution/scheduled_operations.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/operation_execution/util.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/sandbox → _arpakit_project_template_v_5/project/resource}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/1 +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/healthcheck +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/helloworld +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/openapi-favicon.png +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/redoc/redoc.standalone.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/favicon-16x16.png +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/favicon-32x32.png +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/index.css +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/index.html +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/oauth2-redirect.html +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-initializer.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui-bundle.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui-bundle.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui-es-bundle.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui.css +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui.css.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui.js +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/resource/static/swagger-ui/swagger-ui.js.map +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/site → _arpakit_project_template_v_5/project/sandbox}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sandbox/sandbox_2.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sandbox/sandbox_3.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sandbox/sandbox_4.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sandbox/sandbox_5.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sandbox/sandbox_6.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sandbox/sandbox_7.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/site/router → _arpakit_project_template_v_5/project/site}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/site/asgi.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/site/consts.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/site/create_site_app.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/site/event.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/site/exception_handler.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/sqladmin_ → _arpakit_project_template_v_5/project/site/router}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/site/router/main_router.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/sqlalchemy_db_ → _arpakit_project_template_v_5/project/sqladmin_}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqladmin_/add_admin_in_app.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqladmin_/admin_auth.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqladmin_/asgi.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqladmin_/create_sqladmin_app.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqladmin_/event.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqladmin_/model_view/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqladmin_/model_view/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqladmin_/model_view/operation.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqladmin_/model_view/story_log.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/test_data → _arpakit_project_template_v_5/project/sqlalchemy_db_}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/const.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/sqlalchemy_db.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/sqlalchemy_model/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/sqlalchemy_model/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/sqlalchemy_model/operation.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/sqlalchemy_model/story_log.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/sqlalchemy_db_/util.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot → _arpakit_project_template_v_5/project/test_data}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/blank → _arpakit_project_template_v_5/project/tg_bot}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/callback → _arpakit_project_template_v_5/project/tg_bot/blank}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/blank/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/filter_ → _arpakit_project_template_v_5/project/tg_bot/callback}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/callback/admin.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/callback/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/event.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/kb → _arpakit_project_template_v_5/project/tg_bot/filter_}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/filter_/is_private_chat.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/filter_/message_text.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/filter_/not_prod_mode_filter.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/filter_/prod_mode_filter.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/kb/inline_ → _arpakit_project_template_v_5/project/tg_bot/kb}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/kb/inline_/admin → _arpakit_project_template_v_5/project/tg_bot/kb/inline_}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/kb/inline_/client → _arpakit_project_template_v_5/project/tg_bot/kb/inline_/admin}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/kb/inline_/admin/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/kb/static_ → _arpakit_project_template_v_5/project/tg_bot/kb/inline_/client}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/kb/inline_/client/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/kb/inline_/client/hello_world.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/kb/inline_/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/kb/static_/admin → _arpakit_project_template_v_5/project/tg_bot/kb/static_}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/kb/static_/client → _arpakit_project_template_v_5/project/tg_bot/kb/static_/admin}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/kb/static_/admin/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/middleware → _arpakit_project_template_v_5/project/tg_bot/kb/static_/client}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/kb/static_/client/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/kb/static_/client/hello_world.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/kb/static_/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/router → _arpakit_project_template_v_5/project/tg_bot/middleware}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/middleware/common.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/middleware/middleware.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/router/admin → _arpakit_project_template_v_5/project/tg_bot/router}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/router/client → _arpakit_project_template_v_5/project/tg_bot/router/admin}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project/tg_bot/util → _arpakit_project_template_v_5/project/tg_bot/router/client}/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/start_tg_bot.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/tg_bot.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/tg_bot_dispatcher.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4/project → _arpakit_project_template_v_5/project/tg_bot}/util/__init__.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/util/etc.py +0 -0
- /arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/util/arpakitlib_project_template.py +0 -0
- {arpakitlib-1.8.18.dist-info → arpakitlib-1.8.20.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.18.dist-info → arpakitlib-1.8.20.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.18.dist-info → arpakitlib-1.8.20.dist-info}/entry_points.txt +0 -0
arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/core/settings.py
RENAMED
@@ -84,24 +84,10 @@ class Settings(SimpleSettings):
|
|
84
84
|
|
85
85
|
api_init_json_db: bool = False
|
86
86
|
|
87
|
-
|
87
|
+
api_correct_api_keys: list[str] | None = ["1"]
|
88
88
|
|
89
|
-
@field_validator("
|
90
|
-
def
|
91
|
-
if isinstance(v, str):
|
92
|
-
v = [v]
|
93
|
-
if isinstance(v, int):
|
94
|
-
v = [str(v)]
|
95
|
-
if isinstance(v, list):
|
96
|
-
for i, v_ in enumerate(v):
|
97
|
-
if isinstance(v_, int):
|
98
|
-
v[i] = str(v_)
|
99
|
-
return v
|
100
|
-
|
101
|
-
api_user_tokens: list[str] | None = ["1"]
|
102
|
-
|
103
|
-
@field_validator("api_user_tokens", mode="before")
|
104
|
-
def validate_api_tokens(cls, v: Any, validation_info: ValidationInfo, **kwargs) -> list[str] | None:
|
89
|
+
@field_validator("api_correct_api_keys", mode="before")
|
90
|
+
def validate_api_correct_api_keys(cls, v: Any, validation_info: ValidationInfo, **kwargs) -> list[str] | None:
|
105
91
|
if isinstance(v, str):
|
106
92
|
v = [v]
|
107
93
|
if isinstance(v, int):
|
@@ -113,7 +113,7 @@ class OperationExecutorWorker(BaseWorker):
|
|
113
113
|
operation_dbm.error_data,
|
114
114
|
{
|
115
115
|
"exception_in_execute_operation": str(exception_in_execute_operation),
|
116
|
-
"
|
116
|
+
"traceback_in_execute_operation": exception_to_traceback_str(
|
117
117
|
exception=exception_in_execute_operation
|
118
118
|
),
|
119
119
|
}
|
@@ -208,7 +208,7 @@ class OperationExecutorWorker(BaseWorker):
|
|
208
208
|
operation_dbm.error_data = combine_dicts(
|
209
209
|
{
|
210
210
|
"exception_in_execute_operation": str(exception_in_execute_operation),
|
211
|
-
"
|
211
|
+
"traceback_in_execute_operation": exception_to_traceback_str(
|
212
212
|
exception=exception_in_execute_operation
|
213
213
|
)
|
214
214
|
},
|
@@ -21,7 +21,7 @@ class UserDBM(SimpleDBM):
|
|
21
21
|
admin = "admin"
|
22
22
|
client = "client"
|
23
23
|
|
24
|
-
mail: Mapped[str] = mapped_column(
|
24
|
+
mail: Mapped[str | None] = mapped_column(
|
25
25
|
sqlalchemy.TEXT,
|
26
26
|
index=True,
|
27
27
|
insert_default=None,
|
@@ -33,7 +33,7 @@ class UserDBM(SimpleDBM):
|
|
33
33
|
index=True,
|
34
34
|
nullable=False
|
35
35
|
)
|
36
|
-
|
36
|
+
is_active: Mapped[bool] = mapped_column(
|
37
37
|
sqlalchemy.Boolean,
|
38
38
|
index=True,
|
39
39
|
insert_default=True,
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import asyncio
|
2
|
+
import logging
|
3
|
+
|
4
|
+
from project.core.settings import get_cached_settings
|
5
|
+
from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
|
6
|
+
from project.sqlalchemy_db_.sqlalchemy_model import ApiKeyDBM
|
7
|
+
|
8
|
+
_logger = logging.getLogger(__name__)
|
9
|
+
|
10
|
+
|
11
|
+
def make_test_data_1():
|
12
|
+
get_cached_settings().raise_if_prod_mode()
|
13
|
+
with get_cached_sqlalchemy_db().new_session() as session:
|
14
|
+
for i in range(10):
|
15
|
+
api_key = ApiKeyDBM(value=str(i))
|
16
|
+
session.add(api_key)
|
17
|
+
_logger.info(api_key)
|
18
|
+
session.commit()
|
19
|
+
|
20
|
+
|
21
|
+
async def async_make_test_data_1():
|
22
|
+
get_cached_settings().raise_if_prod_mode()
|
23
|
+
|
24
|
+
|
25
|
+
def __example():
|
26
|
+
make_test_data_1()
|
27
|
+
|
28
|
+
|
29
|
+
async def __async_example():
|
30
|
+
await async_make_test_data_1()
|
31
|
+
|
32
|
+
|
33
|
+
if __name__ == '__main__':
|
34
|
+
__example()
|
35
|
+
asyncio.run(__async_example())
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
|
+
from project.core.settings import get_cached_settings
|
4
|
+
|
3
5
|
|
4
6
|
def make_test_data_1():
|
5
|
-
|
7
|
+
get_cached_settings().raise_if_prod_mode()
|
6
8
|
|
7
9
|
|
8
10
|
async def async_make_test_data_1():
|
9
|
-
|
11
|
+
get_cached_settings().raise_if_prod_mode()
|
10
12
|
|
11
13
|
|
12
14
|
def __example():
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
|
+
from project.core.settings import get_cached_settings
|
4
|
+
|
3
5
|
|
4
6
|
def make_test_data_2():
|
5
|
-
|
7
|
+
get_cached_settings().raise_if_prod_mode()
|
6
8
|
|
7
9
|
|
8
10
|
async def async_make_test_data_2():
|
9
|
-
|
11
|
+
get_cached_settings().raise_if_prod_mode()
|
10
12
|
|
11
13
|
|
12
14
|
def __example():
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
|
+
from project.core.settings import get_cached_settings
|
4
|
+
|
3
5
|
|
4
6
|
def make_test_data_3():
|
5
|
-
|
7
|
+
get_cached_settings().raise_if_prod_mode()
|
6
8
|
|
7
9
|
|
8
10
|
async def async_make_test_data_3():
|
9
|
-
|
11
|
+
get_cached_settings().raise_if_prod_mode()
|
10
12
|
|
11
13
|
|
12
14
|
def __example():
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
|
+
from project.core.settings import get_cached_settings
|
4
|
+
|
3
5
|
|
4
6
|
def make_test_data_4():
|
5
|
-
|
7
|
+
get_cached_settings().raise_if_prod_mode()
|
6
8
|
|
7
9
|
|
8
10
|
async def async_make_test_data_4():
|
9
|
-
|
11
|
+
get_cached_settings().raise_if_prod_mode()
|
10
12
|
|
11
13
|
|
12
14
|
def __example():
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
|
+
from project.core.settings import get_cached_settings
|
4
|
+
|
3
5
|
|
4
6
|
def make_test_data_5():
|
5
|
-
|
7
|
+
get_cached_settings().raise_if_prod_mode()
|
6
8
|
|
7
9
|
|
8
10
|
async def async_make_test_data_5():
|
9
|
-
|
11
|
+
get_cached_settings().raise_if_prod_mode()
|
10
12
|
|
11
13
|
|
12
14
|
def __example():
|
@@ -1,21 +1,15 @@
|
|
1
1
|
from functools import lru_cache
|
2
|
-
from typing import Any
|
3
2
|
|
4
3
|
from emoji import emojize
|
5
4
|
|
6
|
-
from arpakitlib.ar_json_util import transfer_data_to_json_str
|
7
5
|
from project.sqlalchemy_db_.sqlalchemy_model import UserDBM
|
8
6
|
from project.tg_bot.blank.common import SimpleBlankTgBot
|
9
7
|
from project.util.arpakitlib_project_template import get_arpakitlib_project_template_info
|
10
8
|
|
11
9
|
|
12
10
|
class AdminTgBotBlank(SimpleBlankTgBot):
|
13
|
-
def
|
14
|
-
res = "
|
15
|
-
return emojize(res.strip())
|
16
|
-
|
17
|
-
def arpakit_project_template_info(self, *, arpakitlib_project_template_info: dict[str, Any]) -> str:
|
18
|
-
res = transfer_data_to_json_str(arpakitlib_project_template_info, beautify=True)
|
11
|
+
def good(self) -> str:
|
12
|
+
res = "good"
|
19
13
|
return emojize(res.strip())
|
20
14
|
|
21
15
|
def user_dbm(self, *, user_dbm: UserDBM | None) -> str:
|
@@ -0,0 +1,69 @@
|
|
1
|
+
from functools import lru_cache
|
2
|
+
|
3
|
+
from emoji import emojize
|
4
|
+
|
5
|
+
from project.tg_bot.blank.common import SimpleBlankTgBot
|
6
|
+
from project.tg_bot.const import ClientTgBotCommands
|
7
|
+
|
8
|
+
|
9
|
+
class ClientTgBotBlank(SimpleBlankTgBot):
|
10
|
+
def command_to_desc(self) -> dict[str, str]:
|
11
|
+
return {
|
12
|
+
ClientTgBotCommands.start: emojize(":waving_hand: Начать"),
|
13
|
+
ClientTgBotCommands.about: emojize(":information: О проекте")
|
14
|
+
}
|
15
|
+
|
16
|
+
def but_hello_world(self) -> str:
|
17
|
+
res = "hello_world"
|
18
|
+
return emojize(res.strip())
|
19
|
+
|
20
|
+
def error(self) -> str:
|
21
|
+
res = ":warning: <b>Произошла неполадка</b> :warning:"
|
22
|
+
res += "\n\n:wrench: Мы уже работаем над исправлением"
|
23
|
+
res += "\n\n:red_heart: Просим прощения :red_heart:"
|
24
|
+
return emojize(res.strip())
|
25
|
+
|
26
|
+
def hello_world(self) -> str:
|
27
|
+
res = ":waving_hand: <b>Hello world</b> :waving_hand:"
|
28
|
+
return emojize(res.strip())
|
29
|
+
|
30
|
+
def healthcheck(self) -> str:
|
31
|
+
res = "healthcheck"
|
32
|
+
return emojize(res.strip())
|
33
|
+
|
34
|
+
def welcome(self) -> str:
|
35
|
+
res = ":waving_hand: <b>Welcome</b> :waving_hand:"
|
36
|
+
return emojize(res.strip())
|
37
|
+
|
38
|
+
def raw_message(self) -> str:
|
39
|
+
res = ":warning: <b>Сообщние не обработано</b> :warning:"
|
40
|
+
return emojize(res.strip())
|
41
|
+
|
42
|
+
def about_project(self) -> str:
|
43
|
+
res = ":information: <b>О проекте</b>"
|
44
|
+
return emojize(res.strip())
|
45
|
+
|
46
|
+
def support_info(self) -> str:
|
47
|
+
res = ":red_heart: <b>Поддержка</b>"
|
48
|
+
return emojize(res.strip())
|
49
|
+
|
50
|
+
def keyboard_is_old(self) -> str:
|
51
|
+
res = ":information: Данная клавиатура устарела :information:"
|
52
|
+
return emojize(res.strip())
|
53
|
+
|
54
|
+
|
55
|
+
def create_client_tg_bot_blank() -> ClientTgBotBlank:
|
56
|
+
return ClientTgBotBlank()
|
57
|
+
|
58
|
+
|
59
|
+
@lru_cache()
|
60
|
+
def get_cached_client_tg_bot_blank() -> ClientTgBotBlank:
|
61
|
+
return ClientTgBotBlank()
|
62
|
+
|
63
|
+
|
64
|
+
def __example():
|
65
|
+
print(get_cached_client_tg_bot_blank().welcome())
|
66
|
+
|
67
|
+
|
68
|
+
if __name__ == '__main__':
|
69
|
+
__example()
|
arpakitlib/{_arpakit_project_template_v_4 → _arpakit_project_template_v_5}/project/tg_bot/const.py
RENAMED
@@ -4,23 +4,24 @@ from arpakitlib.ar_enumeration_util import Enumeration
|
|
4
4
|
class ClientTgBotCommands(Enumeration):
|
5
5
|
start = "start"
|
6
6
|
about = "about"
|
7
|
+
support = "support"
|
7
8
|
healthcheck = "healthcheck"
|
8
9
|
hello_world = "hello_world"
|
9
10
|
|
10
11
|
|
11
12
|
class AdminTgBotCommands(Enumeration):
|
12
13
|
arpakitlib_project_template_info = "arpakitlib_project_template_info"
|
13
|
-
|
14
|
+
init_sqlalchemy_db = "init_sqlalchemy_db"
|
14
15
|
reinit_sqlalchemy_db = "reinit_sqlalchemy_db"
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
drop_sqlalchemy_db = "drop_sqlalchemy_db"
|
17
|
+
set_all_tg_bot_commands = "set_all_tg_bot_commands"
|
18
|
+
raise_fake_error = "raise_fake_error"
|
18
19
|
me = "me"
|
19
20
|
log_file = "log_file"
|
20
21
|
clear_log_file = "clear_log_file"
|
21
|
-
|
22
|
+
kb_with_old_cd = "kb_with_old_cd"
|
22
23
|
kb_with_not_modified = "kb_with_not_modified"
|
23
|
-
|
24
|
+
kb_with_raise_error = "kb_with_raise_error"
|
24
25
|
kb_with_remove_message = "kb_with_remove_message"
|
25
26
|
|
26
27
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import aiogram.types
|
2
|
+
from aiogram.filters import Filter
|
3
|
+
|
4
|
+
from project.tg_bot.middleware.common import MiddlewareDataTgBot
|
5
|
+
|
6
|
+
|
7
|
+
class UserRolesHasAdminTgBotFilter(Filter):
|
8
|
+
|
9
|
+
async def __call__(
|
10
|
+
self,
|
11
|
+
update: aiogram.types.Message | aiogram.types.CallbackQuery | aiogram.types.TelegramObject,
|
12
|
+
middleware_data_tg_bot: MiddlewareDataTgBot,
|
13
|
+
**kwargs
|
14
|
+
) -> bool:
|
15
|
+
if middleware_data_tg_bot.user_dbm is not None:
|
16
|
+
if middleware_data_tg_bot.user_dbm.roles_has_admin:
|
17
|
+
return True
|
18
|
+
return False
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import aiogram.types
|
2
|
+
from aiogram.filters import Filter
|
3
|
+
|
4
|
+
from project.tg_bot.middleware.common import MiddlewareDataTgBot
|
5
|
+
|
6
|
+
|
7
|
+
class UserRolesHasClientTgBotFilter(Filter):
|
8
|
+
|
9
|
+
async def __call__(
|
10
|
+
self,
|
11
|
+
update: aiogram.types.Message | aiogram.types.CallbackQuery | aiogram.types.TelegramObject,
|
12
|
+
middleware_data_tg_bot: MiddlewareDataTgBot,
|
13
|
+
**kwargs
|
14
|
+
) -> bool:
|
15
|
+
if middleware_data_tg_bot.user_dbm is not None:
|
16
|
+
if middleware_data_tg_bot.user_dbm.roles_has_client:
|
17
|
+
return True
|
18
|
+
return False
|
@@ -2,6 +2,7 @@ import logging
|
|
2
2
|
from typing import Any, Awaitable, Callable, Dict
|
3
3
|
|
4
4
|
import aiogram
|
5
|
+
import sqlalchemy
|
5
6
|
from aiogram import BaseMiddleware
|
6
7
|
from aiogram.types import TelegramObject
|
7
8
|
|
@@ -45,9 +46,9 @@ class InitUserTgBotMiddleware(BaseMiddleware):
|
|
45
46
|
now_local_dt_ = now_local_dt()
|
46
47
|
|
47
48
|
if tg_user is not None and get_cached_sqlalchemy_db() is not None:
|
48
|
-
with get_cached_sqlalchemy_db().
|
49
|
-
middleware_data_tg_bot.user_dbm = (
|
50
|
-
|
49
|
+
async with get_cached_sqlalchemy_db().new_async_session() as async_session:
|
50
|
+
middleware_data_tg_bot.user_dbm = await async_session.scalar(
|
51
|
+
sqlalchemy.select(UserDBM).filter(UserDBM.tg_id == tg_user.id)
|
51
52
|
)
|
52
53
|
if middleware_data_tg_bot.user_dbm is None:
|
53
54
|
roles = [UserDBM.Roles.client]
|
@@ -60,9 +61,9 @@ class InitUserTgBotMiddleware(BaseMiddleware):
|
|
60
61
|
tg_data=tg_user.model_dump(mode="json"),
|
61
62
|
tg_bot_last_action_dt=now_local_dt_
|
62
63
|
)
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
async_session.add(middleware_data_tg_bot.user_dbm)
|
65
|
+
await async_session.commit()
|
66
|
+
await async_session.refresh(middleware_data_tg_bot.user_dbm)
|
66
67
|
middleware_data_tg_bot.user_dbm_just_created = True
|
67
68
|
_logger.info(f"user_dbm was added, {middleware_data_tg_bot.user_dbm}")
|
68
69
|
else:
|
@@ -75,8 +76,8 @@ class InitUserTgBotMiddleware(BaseMiddleware):
|
|
75
76
|
middleware_data_tg_bot.user_dbm.roles = (
|
76
77
|
middleware_data_tg_bot.user_dbm.roles + [UserDBM.Roles.admin]
|
77
78
|
)
|
78
|
-
|
79
|
-
|
79
|
+
await async_session.commit()
|
80
|
+
await async_session.refresh(middleware_data_tg_bot.user_dbm)
|
80
81
|
middleware_data_tg_bot.user_dbm_just_created = False
|
81
82
|
|
82
83
|
_logger.info("finish")
|
@@ -1,8 +1,10 @@
|
|
1
1
|
import aiogram.filters
|
2
2
|
|
3
3
|
from arpakitlib.ar_aiogram_util import as_tg_command
|
4
|
-
from
|
4
|
+
from arpakitlib.ar_json_util import transfer_data_to_json_str
|
5
5
|
from project.tg_bot.const import AdminTgBotCommands
|
6
|
+
from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
|
7
|
+
from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
|
6
8
|
from project.tg_bot.middleware.common import MiddlewareDataTgBot
|
7
9
|
from project.util.arpakitlib_project_template import get_arpakitlib_project_template_info
|
8
10
|
|
@@ -10,6 +12,8 @@ tg_bot_router = aiogram.Router()
|
|
10
12
|
|
11
13
|
|
12
14
|
@tg_bot_router.message(
|
15
|
+
IsPrivateChatTgBotFilter(),
|
16
|
+
UserRolesHasAdminTgBotFilter(),
|
13
17
|
aiogram.filters.Command(AdminTgBotCommands.arpakitlib_project_template_info)
|
14
18
|
)
|
15
19
|
@as_tg_command()
|
@@ -19,7 +23,5 @@ async def _(
|
|
19
23
|
**kwargs
|
20
24
|
):
|
21
25
|
await m.answer(
|
22
|
-
text=
|
23
|
-
arpakitlib_project_template_info=get_arpakitlib_project_template_info()
|
24
|
-
)
|
26
|
+
text=transfer_data_to_json_str(get_arpakitlib_project_template_info(), beautify=True)
|
25
27
|
)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import aiogram
|
2
|
+
from aiogram import Router, types
|
3
|
+
from aiogram.filters import Command
|
4
|
+
|
5
|
+
from arpakitlib.ar_aiogram_util import as_tg_command
|
6
|
+
from project.core.settings import get_cached_settings
|
7
|
+
from project.tg_bot.blank.admin import get_cached_admin_tg_bot_blank
|
8
|
+
from project.tg_bot.const import AdminTgBotCommands
|
9
|
+
from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
|
10
|
+
from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
|
11
|
+
|
12
|
+
tg_bot_router = Router()
|
13
|
+
|
14
|
+
|
15
|
+
@tg_bot_router.message(
|
16
|
+
IsPrivateChatTgBotFilter(),
|
17
|
+
UserRolesHasAdminTgBotFilter(),
|
18
|
+
aiogram.filters.Command(AdminTgBotCommands.clear_log_file)
|
19
|
+
)
|
20
|
+
@as_tg_command(passwd_validator=get_cached_settings().tg_bot_command_passwd)
|
21
|
+
async def _(
|
22
|
+
m: types.Message,
|
23
|
+
**kwargs
|
24
|
+
):
|
25
|
+
with open(get_cached_settings().log_filepath, mode="r") as f:
|
26
|
+
if not f.read():
|
27
|
+
await m.answer(get_cached_admin_tg_bot_blank().good())
|
28
|
+
return
|
29
|
+
|
30
|
+
with open(get_cached_settings().log_filepath, mode="w") as f:
|
31
|
+
f.write("")
|
32
|
+
|
33
|
+
await m.answer(get_cached_admin_tg_bot_blank().good())
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import aiogram.filters
|
2
|
+
|
3
|
+
from arpakitlib.ar_aiogram_util import as_tg_command
|
4
|
+
from project.core.settings import get_cached_settings
|
5
|
+
from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
|
6
|
+
from project.tg_bot.blank.admin import get_cached_admin_tg_bot_blank
|
7
|
+
from project.tg_bot.const import AdminTgBotCommands
|
8
|
+
from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
|
9
|
+
from project.tg_bot.filter_.not_prod_mode_filter import NotProdModeTgBotFilter
|
10
|
+
from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
|
11
|
+
from project.tg_bot.middleware.common import MiddlewareDataTgBot
|
12
|
+
|
13
|
+
tg_bot_router = aiogram.Router()
|
14
|
+
|
15
|
+
|
16
|
+
@tg_bot_router.message(
|
17
|
+
IsPrivateChatTgBotFilter(),
|
18
|
+
UserRolesHasAdminTgBotFilter(),
|
19
|
+
NotProdModeTgBotFilter(),
|
20
|
+
aiogram.filters.Command(AdminTgBotCommands.drop_sqlalchemy_db),
|
21
|
+
)
|
22
|
+
@as_tg_command(passwd_validator=get_cached_settings().tg_bot_command_passwd)
|
23
|
+
async def _(
|
24
|
+
m: aiogram.types.Message,
|
25
|
+
middleware_data_tg_bot: MiddlewareDataTgBot,
|
26
|
+
**kwargs
|
27
|
+
):
|
28
|
+
get_cached_sqlalchemy_db().drop()
|
29
|
+
await m.answer(
|
30
|
+
text=get_cached_admin_tg_bot_blank().good()
|
31
|
+
)
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import aiogram.filters
|
2
|
+
|
3
|
+
from arpakitlib.ar_aiogram_util import as_tg_command
|
4
|
+
from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
|
5
|
+
from project.tg_bot.blank.admin import get_cached_admin_tg_bot_blank
|
6
|
+
from project.tg_bot.const import AdminTgBotCommands
|
7
|
+
from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
|
8
|
+
from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
|
9
|
+
from project.tg_bot.middleware.common import MiddlewareDataTgBot
|
10
|
+
|
11
|
+
tg_bot_router = aiogram.Router()
|
12
|
+
|
13
|
+
|
14
|
+
@tg_bot_router.message(
|
15
|
+
IsPrivateChatTgBotFilter(),
|
16
|
+
UserRolesHasAdminTgBotFilter(),
|
17
|
+
aiogram.filters.Command(AdminTgBotCommands.init_sqlalchemy_db)
|
18
|
+
)
|
19
|
+
@as_tg_command()
|
20
|
+
async def _(
|
21
|
+
m: aiogram.types.Message,
|
22
|
+
middleware_data_tg_bot: MiddlewareDataTgBot,
|
23
|
+
**kwargs
|
24
|
+
):
|
25
|
+
get_cached_sqlalchemy_db().init()
|
26
|
+
await m.answer(
|
27
|
+
text=get_cached_admin_tg_bot_blank().good()
|
28
|
+
)
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import aiogram
|
2
|
+
from aiogram import Router, types
|
3
|
+
from aiogram.filters import Command
|
4
|
+
from aiogram.filters.callback_data import CallbackData
|
5
|
+
from aiogram.types import InlineKeyboardButton
|
6
|
+
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
7
|
+
|
8
|
+
from arpakitlib.ar_aiogram_util import as_tg_command
|
9
|
+
from project.tg_bot.blank.admin import get_cached_admin_tg_bot_blank
|
10
|
+
from project.tg_bot.const import AdminTgBotCommands
|
11
|
+
from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
|
12
|
+
from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
|
13
|
+
|
14
|
+
tg_bot_router = Router()
|
15
|
+
|
16
|
+
|
17
|
+
class _CD(CallbackData, prefix=AdminTgBotCommands.kb_with_not_modified):
|
18
|
+
pass
|
19
|
+
|
20
|
+
|
21
|
+
@tg_bot_router.message(
|
22
|
+
IsPrivateChatTgBotFilter(),
|
23
|
+
UserRolesHasAdminTgBotFilter(),
|
24
|
+
aiogram.filters.Command(AdminTgBotCommands.kb_with_not_modified, ignore_case=True)
|
25
|
+
)
|
26
|
+
@as_tg_command()
|
27
|
+
async def _(
|
28
|
+
m: types.Message,
|
29
|
+
**kwargs
|
30
|
+
):
|
31
|
+
kb_builder = InlineKeyboardBuilder()
|
32
|
+
kb_builder.row(InlineKeyboardButton(
|
33
|
+
text="Button raises Not Modified",
|
34
|
+
callback_data=_CD().pack()
|
35
|
+
))
|
36
|
+
await m.answer(
|
37
|
+
text=get_cached_admin_tg_bot_blank().good(),
|
38
|
+
reply_markup=kb_builder.as_markup()
|
39
|
+
)
|
40
|
+
|
41
|
+
|
42
|
+
@tg_bot_router.callback_query(
|
43
|
+
IsPrivateChatTgBotFilter(),
|
44
|
+
UserRolesHasAdminTgBotFilter(),
|
45
|
+
_CD.filter()
|
46
|
+
)
|
47
|
+
async def _(
|
48
|
+
cq: types.CallbackQuery,
|
49
|
+
**kwargs
|
50
|
+
):
|
51
|
+
kb_builder = InlineKeyboardBuilder()
|
52
|
+
kb_builder.row(InlineKeyboardButton(
|
53
|
+
text="Button raises Not Modified",
|
54
|
+
callback_data=_CD().pack()
|
55
|
+
))
|
56
|
+
await cq.message.edit_text(
|
57
|
+
text=get_cached_admin_tg_bot_blank().good(),
|
58
|
+
reply_markup=kb_builder.as_markup()
|
59
|
+
)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import aiogram.filters
|
2
|
+
from aiogram.types import InlineKeyboardButton
|
3
|
+
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
4
|
+
|
5
|
+
from arpakitlib.ar_aiogram_util import as_tg_command
|
6
|
+
from project.tg_bot.callback.common import BaseCD
|
7
|
+
from project.tg_bot.const import AdminTgBotCommands
|
8
|
+
from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
|
9
|
+
from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
|
10
|
+
from project.tg_bot.middleware.common import MiddlewareDataTgBot
|
11
|
+
|
12
|
+
tg_bot_router = aiogram.Router()
|
13
|
+
|
14
|
+
|
15
|
+
class _CD(BaseCD, prefix=AdminTgBotCommands.kb_with_old_cd):
|
16
|
+
pass
|
17
|
+
|
18
|
+
|
19
|
+
@tg_bot_router.message(
|
20
|
+
IsPrivateChatTgBotFilter(),
|
21
|
+
UserRolesHasAdminTgBotFilter(),
|
22
|
+
aiogram.filters.Command(AdminTgBotCommands.kb_with_old_cd, ignore_case=True)
|
23
|
+
)
|
24
|
+
@as_tg_command()
|
25
|
+
async def _(
|
26
|
+
m: aiogram.types.Message,
|
27
|
+
middleware_data_tg_bot: MiddlewareDataTgBot,
|
28
|
+
**kwargs
|
29
|
+
):
|
30
|
+
kb_builder = InlineKeyboardBuilder()
|
31
|
+
|
32
|
+
kb_builder.row(InlineKeyboardButton(
|
33
|
+
text="Button with old data",
|
34
|
+
callback_data=_CD().pack()
|
35
|
+
))
|
36
|
+
|
37
|
+
await m.answer(
|
38
|
+
text="Old data",
|
39
|
+
reply_markup=kb_builder.as_markup()
|
40
|
+
)
|