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.
Files changed (307) hide show
  1. arpakitlib/_arpakit_project_template_v_4/arpakitlib_project_template_info.json +3 -0
  2. arpakitlib/_arpakit_project_template_v_4/command/beautify_json.py +10 -0
  3. arpakitlib/_arpakit_project_template_v_4/command/demojize.py +9 -0
  4. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/drop_json_db.py +1 -1
  5. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/drop_sqlalchemy_db.py +1 -1
  6. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/generate_settings_env_example.py +2 -2
  7. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/reinit_json_db.py +1 -1
  8. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/reinit_sqlalchemy_db.py +1 -1
  9. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/remove_operations.py +1 -1
  10. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/remove_story_logs.py +1 -1
  11. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/rm_all_records_in_json_db.py +1 -1
  12. arpakitlib/_arpakit_project_template_v_4/command/set_tg_bot_commands.py +16 -0
  13. arpakitlib/_arpakit_project_template_v_4/command/show_settings.py +10 -0
  14. arpakitlib/_arpakit_project_template_v_4/command/start_sqladmin.py +19 -0
  15. arpakitlib/_arpakit_project_template_v_4/command/start_sqladmin_for_prod.py +19 -0
  16. arpakitlib/_arpakit_project_template_v_4/command/start_sqladmin_with_reload.py +19 -0
  17. arpakitlib/_arpakit_project_template_v_4/command/start_tg_bot_for_prod.py +11 -0
  18. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/example.env +11 -5
  19. arpakitlib/_arpakit_project_template_v_4/project/additional_model/common.py +8 -0
  20. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/auth.py +111 -35
  21. arpakitlib/_arpakit_project_template_v_4/project/api/auth2.py +171 -0
  22. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/create_api_app.py +7 -7
  23. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/event.py +8 -8
  24. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/exception.py +1 -1
  25. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/exception_handler.py +38 -36
  26. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/openapi_ui.py +1 -1
  27. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/response.py +5 -5
  28. arpakitlib/_arpakit_project_template_v_4/project/api/router/admin/get_arpakitlib_project_template_info.py +23 -0
  29. arpakitlib/_arpakit_project_template_v_4/project/api/router/admin/get_auth_data.py +30 -0
  30. arpakitlib/_arpakit_project_template_v_4/project/api/router/admin/main_router.py +3 -0
  31. 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
  32. arpakitlib/_arpakit_project_template_v_4/project/api/router/client/main_router.py +3 -0
  33. arpakitlib/_arpakit_project_template_v_4/project/api/router/client/now_utc_datetime.py +22 -0
  34. arpakitlib/_arpakit_project_template_v_4/project/api/router/general/healthcheck.py +21 -0
  35. arpakitlib/_arpakit_project_template_v_4/project/api/router/general/main_router.py +10 -0
  36. arpakitlib/_arpakit_project_template_v_4/project/api/router/main_router.py +23 -0
  37. arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/admin/common.py +10 -0
  38. arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/admin/operation.py +23 -0
  39. arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/admin/story_log.py +17 -0
  40. arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/client/common.py +10 -0
  41. 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
  42. arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/common/raw_data.py +7 -0
  43. arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/common.py +5 -0
  44. arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/general/error.py +11 -0
  45. arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/general/errors_info_general.py +6 -0
  46. arpakitlib/_arpakit_project_template_v_4/project/api/schema/out/general/healthcheck.py +5 -0
  47. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/const.py +2 -2
  48. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/settings.py +43 -39
  49. arpakitlib/_arpakit_project_template_v_4/project/site/router/__init__.py +0 -0
  50. arpakitlib/_arpakit_project_template_v_4/project/sqladmin_/__init__.py +0 -0
  51. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/admin_auth.py +17 -12
  52. arpakitlib/_arpakit_project_template_v_4/project/sqladmin_/asgi.py +3 -0
  53. arpakitlib/_arpakit_project_template_v_4/project/sqladmin_/create_sqladmin_app.py +49 -0
  54. arpakitlib/_arpakit_project_template_v_4/project/sqladmin_/event.py +40 -0
  55. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/model_view/operation.py +1 -1
  56. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/model_view/story_log.py +1 -1
  57. arpakitlib/_arpakit_project_template_v_4/project/sqlalchemy_db_/__init__.py +0 -0
  58. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_model/__init__.py +4 -0
  59. arpakitlib/_arpakit_project_template_v_4/project/sqlalchemy_db_/sqlalchemy_model/api_key.py +44 -0
  60. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_model/common.py +29 -6
  61. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_model/story_log.py +2 -1
  62. arpakitlib/_arpakit_project_template_v_4/project/sqlalchemy_db_/sqlalchemy_model/user.py +87 -0
  63. arpakitlib/_arpakit_project_template_v_4/project/sqlalchemy_db_/sqlalchemy_model/user_token.py +41 -0
  64. arpakitlib/_arpakit_project_template_v_4/project/test_data/__init__.py +0 -0
  65. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/__init__.py +0 -0
  66. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/blank/__init__.py +0 -0
  67. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/blank/admin.py +45 -0
  68. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/blank/client.py +44 -0
  69. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/blank/common.py +5 -0
  70. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/callback/__init__.py +0 -0
  71. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/callback/admin.py +0 -0
  72. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/callback/client.py +5 -0
  73. 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
  74. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/const.py +22 -6
  75. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/error_handler.py +37 -0
  76. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/event.py +43 -13
  77. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/__init__.py +0 -0
  78. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/is_private_chat.py +12 -0
  79. 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
  80. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/not_prod_mode_filter.py +8 -0
  81. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/prod_mode_filter.py +8 -0
  82. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/user_roles_has_admin.py +27 -0
  83. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/filter_/user_roles_has_client.py +27 -0
  84. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/__init__.py +0 -0
  85. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/__init__.py +0 -0
  86. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/admin/__init__.py +0 -0
  87. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/admin/common.py +0 -0
  88. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/client/__init__.py +0 -0
  89. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/client/common.py +0 -0
  90. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/client/hello_world.py +16 -0
  91. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/inline_/common.py +0 -0
  92. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/__init__.py +0 -0
  93. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/admin/__init__.py +0 -0
  94. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/admin/common.py +0 -0
  95. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/client/__init__.py +0 -0
  96. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/client/common.py +0 -0
  97. 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
  98. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/kb/static_/common.py +0 -0
  99. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/middleware/__init__.py +0 -0
  100. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/middleware/common.py +13 -0
  101. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/middleware/init_user.py +84 -0
  102. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/middleware/middleware.py +1 -2
  103. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/__init__.py +0 -0
  104. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/__init__.py +0 -0
  105. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/arpakitlib_project_template_info.py +25 -0
  106. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/main_router.py +15 -0
  107. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/me.py +20 -0
  108. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/raise_fake_error.py +20 -0
  109. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/admin/reinit_sqlalchemy_db.py +27 -0
  110. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/__init__.py +0 -0
  111. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/healthcheck.py +16 -0
  112. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/hello_world.py +44 -0
  113. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/main_router.py +14 -0
  114. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/client/start.py +33 -0
  115. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/router/main_router.py +13 -0
  116. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/start_tg_bot.py +2 -2
  117. arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/tg_bot.py +7 -0
  118. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/util/__init__.py +0 -0
  119. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/util/etc.py +0 -0
  120. arpakitlib/_arpakit_project_template_v_4/project/tg_bot/util/set_tg_bot_commands.py +76 -0
  121. arpakitlib/_arpakit_project_template_v_4/project/util/__init__.py +0 -0
  122. arpakitlib/ar_aiogram_util.py +0 -3
  123. arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +1 -65
  124. arpakitlib/ar_json_util.py +43 -12
  125. arpakitlib/ar_sqlalchemy_util.py +2 -2
  126. arpakitlib/ar_ssh_runner_util.py +2 -2
  127. arpakitlib/ar_str_util.py +15 -0
  128. {arpakitlib-1.8.15.dist-info → arpakitlib-1.8.16.dist-info}/METADATA +2 -1
  129. arpakitlib-1.8.16.dist-info/RECORD +330 -0
  130. arpakitlib/_arpakit_project_template_v_2/arpakitlib_project_template_info.json +0 -3
  131. arpakitlib/_arpakit_project_template_v_2/command/beautify_json.py +0 -10
  132. arpakitlib/_arpakit_project_template_v_2/command/show_settings.py +0 -10
  133. arpakitlib/_arpakit_project_template_v_2/project/additional_model/common.py +0 -1
  134. arpakitlib/_arpakit_project_template_v_2/project/api/router/general/get_auth_data.py +0 -31
  135. arpakitlib/_arpakit_project_template_v_2/project/api/router/general/healthcheck.py +0 -26
  136. arpakitlib/_arpakit_project_template_v_2/project/api/router/general/main_router.py +0 -24
  137. arpakitlib/_arpakit_project_template_v_2/project/api/router/general/now_utc_datetime.py +0 -26
  138. arpakitlib/_arpakit_project_template_v_2/project/api/router/main_router.py +0 -11
  139. arpakitlib/_arpakit_project_template_v_2/project/api/schema/common/in_.py +0 -5
  140. arpakitlib/_arpakit_project_template_v_2/project/api/schema/example/in_.py +0 -5
  141. arpakitlib/_arpakit_project_template_v_2/project/api/schema/example/out.py +0 -45
  142. arpakitlib/_arpakit_project_template_v_2/project/api/schema/general/in_.py +0 -5
  143. arpakitlib/_arpakit_project_template_v_2/project/api/schema/general/out.py +0 -14
  144. arpakitlib/_arpakit_project_template_v_2/project/tg_bot/blank/blank.py +0 -24
  145. arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/inline_/common.py +0 -15
  146. arpakitlib/_arpakit_project_template_v_2/project/tg_bot/middleware/init_user.py +0 -21
  147. arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/arpakitlib_project_template_info.py +0 -14
  148. arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/error.py +0 -16
  149. arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/healthcheck.py +0 -11
  150. arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/main_router.py +0 -12
  151. arpakitlib/_arpakit_project_template_v_2/project/tg_bot/util.py +0 -1
  152. arpakitlib-1.8.15.dist-info/RECORD +0 -265
  153. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/.gitignore +0 -0
  154. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/.python-version +0 -0
  155. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/LICENSE +0 -0
  156. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/README.md +0 -0
  157. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic/README +0 -0
  158. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic/env.py +0 -0
  159. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic/script.py.mako +0 -0
  160. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic/versions/__init__.py +0 -0
  161. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/alembic.ini +0 -0
  162. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/__init__.py +0 -0
  163. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/alembic_history.sh +0 -0
  164. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/alembic_revision_autogenerate.sh +0 -0
  165. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/alembic_upgrade_head.sh +0 -0
  166. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/check_logging.py +0 -0
  167. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/check_sqlalchemy_db.py +0 -0
  168. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_ps_a.sh +0 -0
  169. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_rm_postgres.sh +0 -0
  170. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_run_postgres.sh +0 -0
  171. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_start_postgres.sh +0 -0
  172. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/docker_stop_postgres.sh +0 -0
  173. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_commit.sh +0 -0
  174. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_push_arpakit_company_github_1.sh +0 -0
  175. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_push_arpakit_company_gitlab_1.sh +0 -0
  176. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_push_arpakit_github_1.sh +0 -0
  177. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_push_arpakit_gitlab_1.sh +0 -0
  178. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_remote_v.sh +0 -0
  179. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_set_arpakit_company_origin.sh +0 -0
  180. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_set_arpakit_origin.sh +0 -0
  181. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_set_divarteam_origin.sh +0 -0
  182. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/git_status.sh +0 -0
  183. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/hello_world.py +0 -0
  184. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/init_json_db.py +0 -0
  185. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/init_sqlalchemy_db.py +0 -0
  186. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_check.sh +0 -0
  187. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_clear_cache.sh +0 -0
  188. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_config.sh +0 -0
  189. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_install.sh +0 -0
  190. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_lock.sh +0 -0
  191. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_remove_and_add_arpakitlib.sh +0 -0
  192. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_show.sh +0 -0
  193. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_show_arpakitlib.sh +0 -0
  194. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_update.sh +0 -0
  195. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/poetry_update_arpakitlib.sh +0 -0
  196. /arpakitlib/{_arpakit_project_template_v_2/command/start_api_for_not_prod.py → _arpakit_project_template_v_4/command/start_api.py} +0 -0
  197. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/command/start_api_for_prod.py +0 -0
  198. /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
  199. /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
  200. /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
  201. /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
  202. /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
  203. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_1.txt +0 -0
  204. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_2.txt +0 -0
  205. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_3.txt +0 -0
  206. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_4.txt +0 -0
  207. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/note/note_5.txt +0 -0
  208. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/__init__.py +0 -0
  209. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/additional_model/__init__.py +0 -0
  210. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/__init__.py +0 -0
  211. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/asgi.py +0 -0
  212. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/const.py +0 -0
  213. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/api/router/__init__.py +0 -0
  214. /arpakitlib/{_arpakit_project_template_v_2/project/api/router/general → _arpakit_project_template_v_4/project/api/router/admin}/__init__.py +0 -0
  215. /arpakitlib/{_arpakit_project_template_v_2/project/api/schema → _arpakit_project_template_v_4/project/api/router/client}/__init__.py +0 -0
  216. /arpakitlib/{_arpakit_project_template_v_2/project/api/schema/common → _arpakit_project_template_v_4/project/api/router/general}/__init__.py +0 -0
  217. /arpakitlib/{_arpakit_project_template_v_2/project/api/schema/example → _arpakit_project_template_v_4/project/api/schema}/__init__.py +0 -0
  218. /arpakitlib/{_arpakit_project_template_v_2/project/api/schema/base_schema.py → _arpakit_project_template_v_4/project/api/schema/common.py} +0 -0
  219. /arpakitlib/{_arpakit_project_template_v_2/project/api/schema/general → _arpakit_project_template_v_4/project/api/schema/in_}/__init__.py +0 -0
  220. /arpakitlib/{_arpakit_project_template_v_2/project/business_service → _arpakit_project_template_v_4/project/api/schema/in_/admin}/__init__.py +0 -0
  221. /arpakitlib/{_arpakit_project_template_v_2/project/api/util.py → _arpakit_project_template_v_4/project/api/schema/in_/admin/common.py} +0 -0
  222. /arpakitlib/{_arpakit_project_template_v_2/project/celery_ → _arpakit_project_template_v_4/project/api/schema/in_/client}/__init__.py +0 -0
  223. /arpakitlib/{_arpakit_project_template_v_2/project/core/__init__.py → _arpakit_project_template_v_4/project/api/schema/in_/client/common.py} +0 -0
  224. /arpakitlib/{_arpakit_project_template_v_2/project/json_db → _arpakit_project_template_v_4/project/api/schema/in_/general}/__init__.py +0 -0
  225. /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
  226. /arpakitlib/{_arpakit_project_template_v_2/project/resource → _arpakit_project_template_v_4/project/api/schema/out}/__init__.py +0 -0
  227. /arpakitlib/{_arpakit_project_template_v_2/project/sandbox → _arpakit_project_template_v_4/project/api/schema/out/admin}/__init__.py +0 -0
  228. /arpakitlib/{_arpakit_project_template_v_2/project/site → _arpakit_project_template_v_4/project/api/schema/out/client}/__init__.py +0 -0
  229. /arpakitlib/{_arpakit_project_template_v_2/project/site/router → _arpakit_project_template_v_4/project/api/schema/out/common}/__init__.py +0 -0
  230. /arpakitlib/{_arpakit_project_template_v_2/project/sqladmin_ → _arpakit_project_template_v_4/project/api/schema/out/general}/__init__.py +0 -0
  231. /arpakitlib/{_arpakit_project_template_v_2/project/site/consts.py → _arpakit_project_template_v_4/project/api/schema/out/general/common.py} +0 -0
  232. /arpakitlib/{_arpakit_project_template_v_2/project/site/exception_handler.py → _arpakit_project_template_v_4/project/api/util.py} +0 -0
  233. /arpakitlib/{_arpakit_project_template_v_2/project/sqlalchemy_db_ → _arpakit_project_template_v_4/project/business_service}/__init__.py +0 -0
  234. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/business_service/hello_world.py +0 -0
  235. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/business_service/remove_operations.py +0 -0
  236. /arpakitlib/{_arpakit_project_template_v_2/project/test_data → _arpakit_project_template_v_4/project/celery_}/__init__.py +0 -0
  237. /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot → _arpakit_project_template_v_4/project/core}/__init__.py +0 -0
  238. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/cache_file_storage_in_dir.py +0 -0
  239. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/dump_file_storage_in_dir.py +0 -0
  240. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/jinja2_templates.py +0 -0
  241. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/media_file_storage_in_dir.py +0 -0
  242. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/core/util.py +0 -0
  243. /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/blank → _arpakit_project_template_v_4/project/json_db}/__init__.py +0 -0
  244. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/json_db/json_db.py +0 -0
  245. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/more/helloworld +0 -0
  246. /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/kb → _arpakit_project_template_v_4/project/operation_execution}/__init__.py +0 -0
  247. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/const.py +0 -0
  248. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/operation_executor_worker.py +0 -0
  249. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/scheduled_operation_creator_worker.py +0 -0
  250. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/scheduled_operations.py +0 -0
  251. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/operation_execution/util.py +0 -0
  252. /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/kb/inline_ → _arpakit_project_template_v_4/project/resource}/__init__.py +0 -0
  253. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/1 +0 -0
  254. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/healthcheck +0 -0
  255. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/helloworld +0 -0
  256. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/openapi-favicon.png +0 -0
  257. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/redoc/redoc.standalone.js +0 -0
  258. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/favicon-16x16.png +0 -0
  259. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/favicon-32x32.png +0 -0
  260. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/index.css +0 -0
  261. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/index.html +0 -0
  262. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/oauth2-redirect.html +0 -0
  263. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-initializer.js +0 -0
  264. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-bundle.js +0 -0
  265. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  266. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  267. /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
  268. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  269. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  270. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  271. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  272. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui.css +0 -0
  273. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui.css.map +0 -0
  274. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui.js +0 -0
  275. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/resource/static/swagger-ui/swagger-ui.js.map +0 -0
  276. /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/kb/static_ → _arpakit_project_template_v_4/project/sandbox}/__init__.py +0 -0
  277. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_1.py +0 -0
  278. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_2.py +0 -0
  279. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_3.py +0 -0
  280. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_4.py +0 -0
  281. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_5.py +0 -0
  282. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_6.py +0 -0
  283. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sandbox/sandbox_7.py +0 -0
  284. /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/middleware → _arpakit_project_template_v_4/project/site}/__init__.py +0 -0
  285. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/site/asgi.py +0 -0
  286. /arpakitlib/{_arpakit_project_template_v_2/project/tg_bot/router/__init__.py → _arpakit_project_template_v_4/project/site/consts.py} +0 -0
  287. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/site/create_site_app.py +0 -0
  288. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/site/event.py +0 -0
  289. /arpakitlib/{_arpakit_project_template_v_2/project/util/__init__.py → _arpakit_project_template_v_4/project/site/exception_handler.py} +0 -0
  290. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/site/router/main_router.py +0 -0
  291. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/add_admin_in_app.py +0 -0
  292. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/model_view/__init__.py +0 -0
  293. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqladmin_/model_view/common.py +0 -0
  294. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/const.py +0 -0
  295. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_db.py +0 -0
  296. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/sqlalchemy_model/operation.py +0 -0
  297. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/sqlalchemy_db_/util.py +0 -0
  298. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_1.py +0 -0
  299. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_2.py +0 -0
  300. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_3.py +0 -0
  301. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_4.py +0 -0
  302. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/test_data/make_test_data_5.py +0 -0
  303. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/tg_bot/tg_bot_dispatcher.py +0 -0
  304. /arpakitlib/{_arpakit_project_template_v_2 → _arpakit_project_template_v_4}/project/util/arpakitlib_project_template.py +0 -0
  305. {arpakitlib-1.8.15.dist-info → arpakitlib-1.8.16.dist-info}/LICENSE +0 -0
  306. {arpakitlib-1.8.15.dist-info → arpakitlib-1.8.16.dist-info}/WHEEL +0 -0
  307. {arpakitlib-1.8.15.dist-info → arpakitlib-1.8.16.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ "arpakitlib_project_template_version": "3"
3
+ }
@@ -0,0 +1,10 @@
1
+ from arpakitlib.ar_json_util import transfer_json_str_to_data_to_json_str
2
+
3
+
4
+ def __command():
5
+ s = input("JSON:\n")
6
+ print(transfer_json_str_to_data_to_json_str(s))
7
+
8
+
9
+ if __name__ == '__main__':
10
+ __command()
@@ -0,0 +1,9 @@
1
+ from emoji import demojize
2
+
3
+
4
+ def __command():
5
+ print(demojize(input("text: ").strip()))
6
+
7
+
8
+ if __name__ == '__main__':
9
+ __command()
@@ -5,7 +5,7 @@ from project.json_db.json_db import get_cached_json_db
5
5
 
6
6
  def __command():
7
7
  setup_logging()
8
- get_cached_settings().raise_if_mode_type_prod()
8
+ get_cached_settings().raise_if_mode_prod()
9
9
  get_cached_json_db().drop()
10
10
 
11
11
 
@@ -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().raise_if_mode_type_prod()
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 safely_transfer_obj_to_json_str
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(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
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
 
@@ -5,7 +5,7 @@ from project.json_db.json_db import get_cached_json_db
5
5
 
6
6
  def __command():
7
7
  setup_logging()
8
- get_cached_settings().raise_if_mode_type_prod()
8
+ get_cached_settings().raise_if_mode_prod()
9
9
  get_cached_json_db().reinit()
10
10
 
11
11
 
@@ -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().raise_if_mode_type_prod()
8
+ get_cached_settings().raise_if_prod_mode()
9
9
  get_cached_sqlalchemy_db().reinit()
10
10
 
11
11
 
@@ -5,7 +5,7 @@ from project.core.util import setup_logging
5
5
 
6
6
  def __command():
7
7
  setup_logging()
8
- get_cached_settings().raise_if_mode_type_prod()
8
+ get_cached_settings().raise_if_mode_prod()
9
9
  remove_operations()
10
10
 
11
11
 
@@ -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().raise_if_mode_type_prod()
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()
@@ -5,7 +5,7 @@ from project.json_db.json_db import get_cached_json_db
5
5
 
6
6
  def __command():
7
7
  setup_logging()
8
- get_cached_settings().raise_if_mode_type_prod()
8
+ get_cached_settings().raise_if_mode_prod()
9
9
  get_cached_json_db().rm_all_records()
10
10
 
11
11
 
@@ -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()
@@ -0,0 +1,11 @@
1
+ from project.core.util import setup_logging
2
+ from project.tg_bot.start_tg_bot import start_tg_bot
3
+
4
+
5
+ def __command():
6
+ setup_logging()
7
+ start_tg_bot()
8
+
9
+
10
+ if __name__ == '__main__':
11
+ __command()
@@ -1,4 +1,4 @@
1
- # mode_type=
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
- # api_correct_api_keys=
15
- # api_correct_tokens=
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
- # api_story_log__api_func_before_in_exception_handler=
19
+ # api_create_story_log_func_before_in_exception_handler=
20
20
  # sqladmin_secret_key=
21
- # sqladmin_correct_passwords=
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=
@@ -0,0 +1,8 @@
1
+ from typing import Any
2
+
3
+ from pydantic import ConfigDict, BaseModel
4
+
5
+
6
+ class BaseAM(BaseModel):
7
+ model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
8
+ additional_data: dict[str, Any] = {}
@@ -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 safely_transfer_obj_to_json_str_to_json_obj
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
- validate_api_key_func: Callable | None = None,
52
- validate_user_token_func: Callable | None = None,
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 validate_api_key_func is None and correct_api_keys is not None:
62
- validate_api_key_func = (
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 validate_user_token_func is None and correct_user_tokens is not None:
72
- validate_user_token_func = (
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=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
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=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
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=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
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=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
196
+ error_data=transfer_data_to_json_str_to_data(api_auth_data.model_dump())
191
197
  )
192
198
 
193
- # validate_api_key_func
199
+ # is_api_key_correct_func
194
200
 
195
- if validate_api_key_func is not None:
196
- if is_async_callable(validate_api_key_func):
197
- api_auth_data.is_api_key_correct = await validate_api_key_func(
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
- # validate_token_func
215
+ # is_user_token_correct_func
207
216
 
208
- if validate_user_token_func is not None:
209
- if is_async_callable(validate_user_token_func):
210
- api_auth_data.is_user_token_correct = await validate_user_token_func(
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=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump()),
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.is_token_correct",
238
- error_data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump())
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
- return False
265
+ api_auth_data.is_api_key_correct = False
266
+ return
254
267
  if api_auth_data.api_key_string is None:
255
- return False
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
- return False
258
- return True
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
- return False
286
+ api_auth_data.is_api_key_correct = False
287
+ return
271
288
  if api_auth_data.user_token_string is None:
272
- return False
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
- return False
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