arpakitlib 1.8.12__tar.gz → 1.8.14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/PKG-INFO +2 -1
  2. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/auth.py +75 -62
  3. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/response.py +1 -1
  4. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general/get_auth_data.py +31 -0
  5. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1 → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general}/get_errors_info.py +9 -11
  6. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general/healthcheck.py +26 -0
  7. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general/main_router.py +24 -0
  8. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1 → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general}/now_utc_datetime.py +5 -0
  9. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/main_router.py +11 -0
  10. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/common/out.py +0 -5
  11. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/schema/v1 → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/schema/example}/in_.py +1 -1
  12. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/schema/example/out.py +45 -0
  13. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/schema/general/in_.py +5 -0
  14. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/schema/general/out.py +14 -0
  15. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/add_admin_in_app.py +2 -2
  16. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/admin_auth.py +61 -0
  17. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/__init__.py +3 -0
  18. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/common.py +24 -0
  19. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/operation.py +43 -0
  20. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/story_log.py +36 -0
  21. arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/util/__init__.py +0 -0
  22. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/pyproject.toml +2 -1
  23. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/main_router.py +0 -10
  24. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/check_auth.py +0 -30
  25. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/clear_log_file.py +0 -34
  26. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/get_arpakitlib_project_template_info.py +0 -22
  27. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/get_log_file.py +0 -32
  28. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/healthcheck.py +0 -21
  29. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/main_router.py +0 -59
  30. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/raise_fake_error.py +0 -44
  31. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/reinit_sqlalchemy_db.py +0 -33
  32. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/schema/v1/out.py +0 -47
  33. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/admin_auth.py +0 -54
  34. arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view.py +0 -95
  35. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/LICENSE +0 -0
  36. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/README.md +0 -0
  37. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/__init__.py +0 -0
  38. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/.gitignore +0 -0
  39. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/.python-version +0 -0
  40. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/LICENSE +0 -0
  41. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/README.md +0 -0
  42. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic/README +0 -0
  43. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic/env.py +0 -0
  44. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic/script.py.mako +0 -0
  45. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic/versions/__init__.py +0 -0
  46. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic.ini +0 -0
  47. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/arpakitlib_project_template_info.json +0 -0
  48. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/__init__.py +0 -0
  49. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/alembic_history.sh +0 -0
  50. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/alembic_revision_autogenerate.sh +0 -0
  51. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/alembic_upgrade_head.sh +0 -0
  52. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/beautify_json.py +0 -0
  53. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/check_logging.py +0 -0
  54. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/check_sqlalchemy_db.py +0 -0
  55. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_ps_a.sh +0 -0
  56. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_rm_postgres.sh +0 -0
  57. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_run_postgres.sh +0 -0
  58. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_start_postgres.sh +0 -0
  59. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_stop_postgres.sh +0 -0
  60. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/drop_json_db.py +0 -0
  61. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/drop_sqlalchemy_db.py +0 -0
  62. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/generate_settings_env_example.py +0 -0
  63. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_commit.sh +0 -0
  64. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_push_arpakit_company_github_1.sh +0 -0
  65. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_push_arpakit_company_gitlab_1.sh +0 -0
  66. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_push_arpakit_github_1.sh +0 -0
  67. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_push_arpakit_gitlab_1.sh +0 -0
  68. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_remote_v.sh +0 -0
  69. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_set_arpakit_company_origin.sh +0 -0
  70. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_set_arpakit_origin.sh +0 -0
  71. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_set_divarteam_origin.sh +0 -0
  72. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_status.sh +0 -0
  73. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/hello_world.py +0 -0
  74. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/init_json_db.py +0 -0
  75. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/init_sqlalchemy_db.py +0 -0
  76. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_check.sh +0 -0
  77. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_clear_cache.sh +0 -0
  78. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_config.sh +0 -0
  79. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_install.sh +0 -0
  80. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_lock.sh +0 -0
  81. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_remove_and_add_arpakitlib.sh +0 -0
  82. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_show.sh +0 -0
  83. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_show_arpakitlib.sh +0 -0
  84. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_update.sh +0 -0
  85. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_update_arpakitlib.sh +0 -0
  86. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/reinit_json_db.py +0 -0
  87. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/reinit_sqlalchemy_db.py +0 -0
  88. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/remove_operations.py +0 -0
  89. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/remove_story_logs.py +0 -0
  90. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/rm_all_records_in_json_db.py +0 -0
  91. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/show_settings.py +0 -0
  92. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_api_for_not_prod.py +0 -0
  93. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_api_for_prod.py +0 -0
  94. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_api_with_reload_for_not_prod.py +0 -0
  95. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_operation_executor_worker_for_not_prod.py +0 -0
  96. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_operation_executor_workers_for_not_prod.py +0 -0
  97. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_scheduled_operation_creator_worker_for_not_prod.py +0 -0
  98. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_tg_bot_for_prod.py +0 -0
  99. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/example.env +0 -0
  100. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_1.txt +0 -0
  101. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_2.txt +0 -0
  102. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_3.txt +0 -0
  103. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_4.txt +0 -0
  104. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_5.txt +0 -0
  105. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/__init__.py +0 -0
  106. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/additional_model/__init__.py +0 -0
  107. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/additional_model/common.py +0 -0
  108. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/__init__.py +0 -0
  109. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/asgi.py +0 -0
  110. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/const.py +0 -0
  111. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/create_api_app.py +0 -0
  112. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/event.py +0 -0
  113. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/exception.py +0 -0
  114. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/exception_handler.py +0 -0
  115. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/openapi_ui.py +0 -0
  116. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/router/__init__.py +0 -0
  117. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1 → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general}/__init__.py +0 -0
  118. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/__init__.py +0 -0
  119. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/base_schema.py +0 -0
  120. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/common/__init__.py +0 -0
  121. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/common/in_.py +0 -0
  122. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/schema/v1 → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/schema/example}/__init__.py +0 -0
  123. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/business_service → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/schema/general}/__init__.py +0 -0
  124. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/util.py +0 -0
  125. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/celery_ → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/business_service}/__init__.py +0 -0
  126. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/business_service/hello_world.py +0 -0
  127. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/business_service/remove_operations.py +0 -0
  128. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/core → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/celery_}/__init__.py +0 -0
  129. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/json_db → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/core}/__init__.py +0 -0
  130. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/cache_file_storage_in_dir.py +0 -0
  131. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/const.py +0 -0
  132. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/dump_file_storage_in_dir.py +0 -0
  133. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/jinja2_templates.py +0 -0
  134. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/media_file_storage_in_dir.py +0 -0
  135. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/settings.py +0 -0
  136. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/util.py +0 -0
  137. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/operation_execution → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/json_db}/__init__.py +0 -0
  138. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/json_db/json_db.py +0 -0
  139. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/more/helloworld +0 -0
  140. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/resource → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/operation_execution}/__init__.py +0 -0
  141. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/const.py +0 -0
  142. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/operation_executor_worker.py +0 -0
  143. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/scheduled_operation_creator_worker.py +0 -0
  144. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/scheduled_operations.py +0 -0
  145. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/util.py +0 -0
  146. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/sandbox → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/resource}/__init__.py +0 -0
  147. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/1 +0 -0
  148. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/healthcheck +0 -0
  149. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/helloworld +0 -0
  150. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/openapi-favicon.png +0 -0
  151. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/redoc/redoc.standalone.js +0 -0
  152. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/favicon-16x16.png +0 -0
  153. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/favicon-32x32.png +0 -0
  154. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/index.css +0 -0
  155. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/index.html +0 -0
  156. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/oauth2-redirect.html +0 -0
  157. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-initializer.js +0 -0
  158. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui-bundle.js +0 -0
  159. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  160. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  161. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  162. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  163. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  164. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  165. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  166. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui.css +0 -0
  167. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui.css.map +0 -0
  168. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui.js +0 -0
  169. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui.js.map +0 -0
  170. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/site → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sandbox}/__init__.py +0 -0
  171. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_1.py +0 -0
  172. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_2.py +0 -0
  173. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_3.py +0 -0
  174. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_4.py +0 -0
  175. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_5.py +0 -0
  176. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_6.py +0 -0
  177. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_7.py +0 -0
  178. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/site/router → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/site}/__init__.py +0 -0
  179. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/asgi.py +0 -0
  180. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/consts.py +0 -0
  181. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/create_site_app.py +0 -0
  182. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/event.py +0 -0
  183. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/exception_handler.py +0 -0
  184. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_ → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/site/router}/__init__.py +0 -0
  185. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/router/main_router.py +0 -0
  186. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_ → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_}/__init__.py +0 -0
  187. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/test_data → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_}/__init__.py +0 -0
  188. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/const.py +0 -0
  189. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_db.py +0 -0
  190. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/__init__.py +0 -0
  191. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/common.py +0 -0
  192. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/operation.py +0 -0
  193. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/story_log.py +0 -0
  194. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/util.py +0 -0
  195. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/tg_bot → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/test_data}/__init__.py +0 -0
  196. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_1.py +0 -0
  197. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_2.py +0 -0
  198. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_3.py +0 -0
  199. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_4.py +0 -0
  200. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_5.py +0 -0
  201. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/blank → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/tg_bot}/__init__.py +0 -0
  202. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/blank}/__init__.py +0 -0
  203. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/blank/blank.py +0 -0
  204. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/const.py +0 -0
  205. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/event.py +0 -0
  206. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/filter_.py +0 -0
  207. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/inline_ → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb}/__init__.py +0 -0
  208. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/static_ → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/inline_}/__init__.py +0 -0
  209. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/inline_/callback.py +0 -0
  210. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/inline_/common.py +0 -0
  211. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/middleware → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/static_}/__init__.py +0 -0
  212. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/static_/common.py +0 -0
  213. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/middleware}/__init__.py +0 -0
  214. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/middleware/init_user.py +0 -0
  215. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/middleware/middleware.py +0 -0
  216. {arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/util → arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router}/__init__.py +0 -0
  217. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/arpakitlib_project_template_info.py +0 -0
  218. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/error.py +0 -0
  219. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/healthcheck.py +0 -0
  220. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/main_router.py +0 -0
  221. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/start_tg_bot.py +0 -0
  222. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/tg_bot.py +0 -0
  223. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/tg_bot_dispatcher.py +0 -0
  224. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/util.py +0 -0
  225. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/util/arpakitlib_project_template.py +0 -0
  226. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_additional_model_util.py +0 -0
  227. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_aiogram_util.py +0 -0
  228. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  229. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakit_project_template_util.py +0 -0
  230. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
  231. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakit_schedule_uust_site_util.py +0 -0
  232. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakitlib_cli_util.py +0 -0
  233. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_base64_util.py +0 -0
  234. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_base_worker_util.py +0 -0
  235. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_blank_util.py +0 -0
  236. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_cache_file_util.py +0 -0
  237. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_class_util.py +0 -0
  238. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_cryptomus_api_client_util.py +0 -0
  239. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_datetime_util.py +0 -0
  240. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_dict_util.py +0 -0
  241. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
  242. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
  243. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_enumeration_util.py +0 -0
  244. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_exception_util.py +0 -0
  245. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
  246. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_file_util.py +0 -0
  247. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_func_util.py +0 -0
  248. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_hash_util.py +0 -0
  249. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_http_request_util.py +0 -0
  250. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_ip_util.py +0 -0
  251. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_json_db_util.py +0 -0
  252. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_json_util.py +0 -0
  253. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_jwt_util.py +0 -0
  254. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  255. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_list_util.py +0 -0
  256. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_logging_util.py +0 -0
  257. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_mongodb_util.py +0 -0
  258. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_need_type_util.py +0 -0
  259. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_openai_api_client_util.py +0 -0
  260. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_parse_command.py +0 -0
  261. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_postgresql_util.py +0 -0
  262. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_rat_func_util.py +0 -0
  263. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_retry_func_util.py +0 -0
  264. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_run_cmd_util.py +0 -0
  265. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_schedule_uust_api_client_util.py +0 -0
  266. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_settings_util.py +0 -0
  267. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_sleep_util.py +0 -0
  268. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_sqladmin_util.py +0 -0
  269. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_sqlalchemy_util.py +0 -0
  270. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_ssh_runner_util.py +0 -0
  271. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_steam_payment_api_client_util.py +0 -0
  272. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_str_util.py +0 -0
  273. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_type_util.py +0 -0
  274. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_wata_api_client.py +0 -0
  275. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
  276. {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_zabbix_api_client_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.12
3
+ Version: 1.8.14
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -34,6 +34,7 @@ Requires-Dist: jupyter (>=1.1.1,<2.0.0)
34
34
  Requires-Dist: matplotlib (>=3.10.0,<4.0.0)
35
35
  Requires-Dist: openai (>=1.59.9,<2.0.0)
36
36
  Requires-Dist: openpyxl (>=3.1.5,<4.0.0)
37
+ Requires-Dist: orjson (>=3.10.15,<4.0.0)
37
38
  Requires-Dist: pandas (>=2.2.3,<3.0.0)
38
39
  Requires-Dist: paramiko (>=3.5.0,<4.0.0)
39
40
  Requires-Dist: pika (>=1.3.2,<2.0.0)
@@ -20,34 +20,38 @@ class APIAuthData(BaseModel):
20
20
  model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
21
21
 
22
22
  require_api_key_string: bool = False
23
- require_token_string: bool = False
23
+ require_user_token_string: bool = False
24
24
 
25
25
  require_correct_api_key: bool = False
26
- require_correct_token: bool = False
26
+ require_correct_user_token: bool = False
27
27
 
28
- token_string: str | None = None
28
+ require_mode_type: str | None = None
29
+ require_not_mode_type: str | None = None
30
+
31
+ current_mode_type: str | None = None
32
+
33
+ user_token_string: str | None = None
29
34
  api_key_string: str | None = None
30
35
 
31
36
  is_token_correct: bool | None = None
32
37
  is_api_key_correct: bool | None = None
33
38
 
34
- require_mode_type: str | None = None
35
- require_not_mode_type: str | None = None
36
- current_mode_type: str | None = None
37
-
38
39
 
39
40
  def api_auth(
40
41
  *,
41
42
  require_api_key_string: bool = False,
42
- require_token_string: bool = False,
43
- validate_api_key_func: Callable | None = None,
44
- validate_token_func: Callable | None = None,
45
- correct_api_keys: str | list[str] | None = None,
46
- correct_tokens: str | list[str] | None = None,
43
+ require_user_token_string: bool = False,
44
+
47
45
  require_correct_api_key: bool = False,
48
- require_correct_token: bool = False,
46
+ require_correct_user_token: bool = False,
47
+
49
48
  require_mode_type: str | None = None,
50
- require_not_mode_type: str | None = None
49
+ require_not_mode_type: str | None = None,
50
+
51
+ validate_api_key_func: Callable | None = None,
52
+ validate_user_token_func: Callable | None = None,
53
+ correct_api_keys: str | list[str] | None = None,
54
+ correct_user_tokens: str | list[str] | None = None,
51
55
  ) -> Callable:
52
56
  if isinstance(correct_api_keys, str):
53
57
  correct_api_keys = [correct_api_keys]
@@ -55,21 +59,25 @@ def api_auth(
55
59
  raise_for_type(correct_api_keys, list)
56
60
 
57
61
  if validate_api_key_func is None and correct_api_keys is not None:
58
- validate_api_key_func = lambda *args, **kwargs_: kwargs_["api_auth_data"].api_key_string in correct_api_keys
62
+ validate_api_key_func = (
63
+ lambda *args, **kwargs_: kwargs_["api_auth_data"].api_key_string in correct_api_keys
64
+ )
59
65
 
60
- if isinstance(correct_tokens, str):
61
- correct_tokens = [correct_tokens]
62
- if correct_tokens is not None:
63
- raise_for_type(correct_tokens, list)
66
+ if isinstance(correct_user_tokens, str):
67
+ correct_user_tokens = [correct_user_tokens]
68
+ if correct_user_tokens is not None:
69
+ raise_for_type(correct_user_tokens, list)
64
70
 
65
- if validate_token_func is None and correct_tokens is not None:
66
- validate_token_func = lambda *args, **kwargs_: kwargs_["api_auth_data"].token_string in correct_tokens
71
+ if validate_user_token_func is None and correct_user_tokens is not None:
72
+ validate_user_token_func = (
73
+ lambda *args, **kwargs_: kwargs_["api_auth_data"].user_token_string in correct_user_tokens
74
+ )
67
75
 
68
76
  if require_correct_api_key is True:
69
77
  require_api_key_string = True
70
78
 
71
- if require_correct_token is True:
72
- require_token_string = True
79
+ if require_correct_user_token is True:
80
+ require_user_token_string = True
73
81
 
74
82
  async def func(
75
83
  *,
@@ -84,9 +92,9 @@ def api_auth(
84
92
 
85
93
  api_auth_data = APIAuthData(
86
94
  require_api_key_string=require_api_key_string,
87
- require_token_string=require_token_string,
95
+ require_user_token_string=require_user_token_string,
88
96
  require_correct_api_key=require_correct_api_key,
89
- require_correct_token=require_correct_token,
97
+ require_correct_user_token=require_correct_user_token,
90
98
  require_mode_type=require_mode_type,
91
99
  require_not_mode_type=require_not_mode_type,
92
100
  current_mode_type=get_cached_settings().mode_type
@@ -110,34 +118,39 @@ def api_auth(
110
118
  if not api_auth_data.api_key_string and "apikey" in request.query_params.keys():
111
119
  api_auth_data.api_key_string = request.query_params["apikey"]
112
120
 
113
- # parse token
121
+ if api_auth_data.api_key_string:
122
+ api_auth_data.api_key_string = api_auth_data.api_key_string.strip()
123
+ if not api_auth_data.api_key_string:
124
+ api_auth_data.api_key_string = None
114
125
 
115
- api_auth_data.token_string = ac.credentials if ac and ac.credentials and ac.credentials.strip() else None
126
+ # parse user token
116
127
 
117
- if not api_auth_data.token_string and "token" in request.headers.keys():
118
- api_auth_data.token_string = request.headers["token"]
128
+ api_auth_data.user_token_string = ac.credentials if ac and ac.credentials and ac.credentials.strip() else None
119
129
 
120
- if not api_auth_data.token_string and "user_token" in request.headers.keys():
121
- api_auth_data.token_string = request.headers["user_token"]
122
- if not api_auth_data.token_string and "user-token" in request.headers.keys():
123
- api_auth_data.token_string = request.headers["user-token"]
124
- if not api_auth_data.token_string and "usertoken" in request.headers.keys():
125
- api_auth_data.token_string = request.headers["usertoken"]
130
+ if not api_auth_data.user_token_string and "token" in request.headers.keys():
131
+ api_auth_data.user_token_string = request.headers["token"]
126
132
 
127
- if not api_auth_data.token_string and "token" in request.query_params.keys():
128
- api_auth_data.token_string = request.query_params["token"]
133
+ if not api_auth_data.user_token_string and "user_token" in request.headers.keys():
134
+ api_auth_data.user_token_string = request.headers["user_token"]
135
+ if not api_auth_data.user_token_string and "user-token" in request.headers.keys():
136
+ api_auth_data.user_token_string = request.headers["user-token"]
137
+ if not api_auth_data.user_token_string and "usertoken" in request.headers.keys():
138
+ api_auth_data.user_token_string = request.headers["usertoken"]
129
139
 
130
- if not api_auth_data.token_string and "user_token" in request.query_params.keys():
131
- api_auth_data.token_string = request.query_params["user_token"]
132
- if not api_auth_data.token_string and "user-token" in request.query_params.keys():
133
- api_auth_data.token_string = request.query_params["user-token"]
134
- if not api_auth_data.token_string and "usertoken" in request.query_params.keys():
135
- api_auth_data.token_string = request.query_params["usertoken"]
140
+ if not api_auth_data.user_token_string and "token" in request.query_params.keys():
141
+ api_auth_data.user_token_string = request.query_params["token"]
136
142
 
137
- if api_auth_data.token_string:
138
- api_auth_data.token_string = api_auth_data.token_string.strip()
139
- if not api_auth_data.token_string:
140
- api_auth_data.token_string = None
143
+ if not api_auth_data.user_token_string and "user_token" in request.query_params.keys():
144
+ api_auth_data.user_token_string = request.query_params["user_token"]
145
+ if not api_auth_data.user_token_string and "user-token" in request.query_params.keys():
146
+ api_auth_data.user_token_string = request.query_params["user-token"]
147
+ if not api_auth_data.user_token_string and "usertoken" in request.query_params.keys():
148
+ api_auth_data.user_token_string = request.query_params["usertoken"]
149
+
150
+ if api_auth_data.user_token_string:
151
+ api_auth_data.user_token_string = api_auth_data.user_token_string.strip()
152
+ if not api_auth_data.user_token_string:
153
+ api_auth_data.user_token_string = None
141
154
 
142
155
  # require_mode_type
143
156
 
@@ -170,7 +183,7 @@ def api_auth(
170
183
 
171
184
  # require_token_string
172
185
 
173
- if require_token_string and not api_auth_data.token_string:
186
+ if require_user_token_string and not api_auth_data.user_token_string:
174
187
  raise APIException(
175
188
  status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
176
189
  error_code=APIErrorCodes.cannot_authorize,
@@ -192,14 +205,14 @@ def api_auth(
192
205
 
193
206
  # validate_token_func
194
207
 
195
- if validate_token_func is not None:
196
- if is_async_callable(validate_token_func):
197
- api_auth_data.is_token_correct = await validate_token_func(
208
+ if validate_user_token_func is not None:
209
+ if is_async_callable(validate_user_token_func):
210
+ api_auth_data.is_token_correct = await validate_user_token_func(
198
211
  api_auth_data=api_auth_data,
199
212
  request=request
200
213
  )
201
- elif is_sync_function(validate_token_func):
202
- api_auth_data.is_token_correct = validate_token_func()
214
+ elif is_sync_function(validate_user_token_func):
215
+ api_auth_data.is_token_correct = validate_user_token_func()
203
216
  else:
204
217
  raise TypeError("unknown validate_token_func type")
205
218
 
@@ -216,7 +229,7 @@ def api_auth(
216
229
 
217
230
  # require_correct_token
218
231
 
219
- if require_correct_token:
232
+ if require_correct_user_token:
220
233
  if not api_auth_data.is_token_correct:
221
234
  raise APIException(
222
235
  status_code=fastapi.status.HTTP_401_UNAUTHORIZED,
@@ -230,8 +243,8 @@ def api_auth(
230
243
  return func
231
244
 
232
245
 
233
- def correct_api_keys_from_settings__validate_api_key_func() -> Callable:
234
- async def func(
246
+ def correct_api_keys_from_settings__is_api_key_correct_func() -> Callable:
247
+ async def async_func(
235
248
  *,
236
249
  api_auth_data: APIAuthData,
237
250
  request: fastapi.requests.Request,
@@ -244,21 +257,21 @@ def correct_api_keys_from_settings__validate_api_key_func() -> Callable:
244
257
  return False
245
258
  return True
246
259
 
247
- return func
260
+ return async_func
248
261
 
249
262
 
250
- def correct_tokens_from_settings__validate_api_key_func() -> Callable:
251
- async def func(
263
+ def correct_tokens_from_settings__is_user_token_correct_func() -> Callable:
264
+ async def async_func(
252
265
  *,
253
266
  api_auth_data: APIAuthData,
254
267
  request: fastapi.requests.Request,
255
268
  ):
256
269
  if get_cached_settings().api_correct_tokens is None:
257
270
  return False
258
- if api_auth_data.token_string is None:
271
+ if api_auth_data.user_token_string is None:
259
272
  return False
260
- if api_auth_data.token_string.strip() not in get_cached_settings().api_correct_tokens:
273
+ if api_auth_data.user_token_string.strip() not in get_cached_settings().api_correct_tokens:
261
274
  return False
262
275
  return True
263
276
 
264
- return func
277
+ return async_func
@@ -3,7 +3,7 @@ from typing import Any
3
3
  import fastapi
4
4
 
5
5
  from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str_to_json_obj
6
- from project.api.schema.v1.out import BaseSO
6
+ from project.api.schema.base_schema import BaseSO
7
7
 
8
8
 
9
9
  class APIJSONResponse(fastapi.responses.JSONResponse):
@@ -0,0 +1,31 @@
1
+ import fastapi.requests
2
+ from fastapi import APIRouter
3
+
4
+ from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str_to_json_obj
5
+ from project.api.auth import APIAuthData, api_auth, correct_tokens_from_settings__is_user_token_correct_func, \
6
+ correct_api_keys_from_settings__is_api_key_correct_func
7
+ from project.api.schema.common.out import ErrorCommonSO, RawDataCommonSO
8
+ from project.core.settings import ModeTypes
9
+
10
+ api_router = APIRouter()
11
+
12
+
13
+ @api_router.get(
14
+ path="",
15
+ name="Get auth data",
16
+ status_code=fastapi.status.HTTP_200_OK,
17
+ response_model=RawDataCommonSO | ErrorCommonSO,
18
+ )
19
+ async def _(
20
+ *,
21
+ request: fastapi.requests.Request,
22
+ response: fastapi.responses.Response,
23
+ api_auth_data: APIAuthData = fastapi.Depends(api_auth(
24
+ validate_api_key_func=correct_api_keys_from_settings__is_api_key_correct_func(),
25
+ validate_user_token_func=correct_tokens_from_settings__is_user_token_correct_func(),
26
+ require_correct_api_key=False,
27
+ require_correct_user_token=False,
28
+ require_not_mode_type=ModeTypes.prod
29
+ ))
30
+ ):
31
+ return RawDataCommonSO(data=safely_transfer_obj_to_json_str_to_json_obj(api_auth_data.model_dump()))
@@ -1,9 +1,11 @@
1
1
  import fastapi.requests
2
- from fastapi import APIRouter, Depends
2
+ from fastapi import APIRouter
3
3
 
4
- from project.api.auth import APIAuthData, api_auth, correct_api_keys_from_settings__validate_api_key_func
4
+ from project.api.auth import APIAuthData, api_auth, \
5
+ correct_api_keys_from_settings__is_api_key_correct_func
5
6
  from project.api.const import APIErrorCodes, APIErrorSpecificationCodes
6
- from project.api.schema.common.out import ErrorCommonSO, ErrorsInfoCommonSO
7
+ from project.api.schema.common.out import ErrorCommonSO
8
+ from project.api.schema.general.out import ErrorsInfoGeneralSO
7
9
 
8
10
  api_router = APIRouter()
9
11
 
@@ -12,22 +14,18 @@ api_router = APIRouter()
12
14
  "",
13
15
  name="Get errors info",
14
16
  status_code=fastapi.status.HTTP_200_OK,
15
- response_model=ErrorsInfoCommonSO | ErrorCommonSO,
17
+ response_model=ErrorsInfoGeneralSO | ErrorCommonSO,
16
18
  )
17
19
  async def _(
18
20
  *,
19
21
  request: fastapi.requests.Request,
20
22
  response: fastapi.responses.Response,
21
- api_auth_data: APIAuthData = Depends(api_auth(
22
- require_api_key_string=True,
23
- require_token_string=False,
24
- validate_api_key_func=correct_api_keys_from_settings__validate_api_key_func(),
25
- validate_token_func=None,
23
+ api_auth_data: APIAuthData = fastapi.Depends(api_auth(
24
+ validate_api_key_func=correct_api_keys_from_settings__is_api_key_correct_func(),
26
25
  require_correct_api_key=True,
27
- require_correct_token=False,
28
26
  ))
29
27
  ):
30
- return ErrorsInfoCommonSO(
28
+ return ErrorsInfoGeneralSO(
31
29
  api_error_codes=APIErrorCodes.values_list(),
32
30
  api_error_specification_codes=APIErrorSpecificationCodes.values_list()
33
31
  )
@@ -0,0 +1,26 @@
1
+ import fastapi
2
+ from fastapi import APIRouter
3
+
4
+ from project.api.auth import APIAuthData, api_auth, correct_api_keys_from_settings__is_api_key_correct_func
5
+ from project.api.schema.common.out import ErrorCommonSO
6
+ from project.api.schema.general.out import HealthcheckGeneralSO
7
+
8
+ api_router = APIRouter()
9
+
10
+
11
+ @api_router.get(
12
+ "",
13
+ name="Healthcheck",
14
+ status_code=fastapi.status.HTTP_200_OK,
15
+ response_model=HealthcheckGeneralSO | ErrorCommonSO,
16
+ )
17
+ async def _(
18
+ *,
19
+ request: fastapi.requests.Request,
20
+ response: fastapi.responses.Response,
21
+ api_auth_data: APIAuthData = fastapi.Depends(api_auth(
22
+ validate_api_key_func=correct_api_keys_from_settings__is_api_key_correct_func(),
23
+ require_correct_api_key=True,
24
+ ))
25
+ ):
26
+ return HealthcheckGeneralSO(is_ok=True)
@@ -0,0 +1,24 @@
1
+ from fastapi import APIRouter
2
+
3
+ from project.api.router.general import get_errors_info, healthcheck, now_utc_datetime, get_auth_data
4
+ from project.core.settings import get_cached_settings
5
+
6
+ main_general_api_router = APIRouter()
7
+
8
+ main_general_api_router.include_router(
9
+ router=healthcheck.api_router,
10
+ prefix="/healthcheck"
11
+ )
12
+ main_general_api_router.include_router(
13
+ router=get_errors_info.api_router,
14
+ prefix="/get_errors_info"
15
+ )
16
+ main_general_api_router.include_router(
17
+ router=now_utc_datetime.api_router,
18
+ prefix="/now_utc_datetime"
19
+ )
20
+ if not get_cached_settings().is_mode_type_prod:
21
+ main_general_api_router.include_router(
22
+ router=get_auth_data.api_router,
23
+ prefix="/get_auth_data"
24
+ )
@@ -2,6 +2,7 @@ import fastapi
2
2
  from fastapi import APIRouter
3
3
 
4
4
  from arpakitlib.ar_datetime_util import now_utc_dt
5
+ from project.api.auth import APIAuthData, api_auth, correct_api_keys_from_settings__is_api_key_correct_func
5
6
  from project.api.schema.common.out import ErrorCommonSO, DatetimeCommonSO
6
7
 
7
8
  api_router = APIRouter()
@@ -17,5 +18,9 @@ async def _(
17
18
  *,
18
19
  request: fastapi.requests.Request,
19
20
  response: fastapi.responses.Response,
21
+ api_auth_data: APIAuthData = fastapi.Depends(api_auth(
22
+ validate_api_key_func=correct_api_keys_from_settings__is_api_key_correct_func(),
23
+ require_correct_api_key=True,
24
+ ))
20
25
  ):
21
26
  return DatetimeCommonSO.from_datetime(datetime_=now_utc_dt())
@@ -0,0 +1,11 @@
1
+ from fastapi import APIRouter
2
+
3
+ from project.api.router.general.main_router import main_general_api_router
4
+
5
+ main_api_router = APIRouter()
6
+
7
+ main_api_router.include_router(
8
+ prefix="/general",
9
+ router=main_general_api_router,
10
+ tags=["General"]
11
+ )
@@ -53,8 +53,3 @@ class DatetimeCommonSO(BaseCommonSO):
53
53
 
54
54
  class RawDataCommonSO(BaseCommonSO):
55
55
  data: dict[str, Any] = {}
56
-
57
-
58
- class ErrorsInfoCommonSO(BaseCommonSO):
59
- api_error_codes: list[str] = []
60
- api_error_specification_codes: list[str] = []
@@ -1,5 +1,5 @@
1
1
  from project.api.schema.base_schema import BaseSI
2
2
 
3
3
 
4
- class BaseV1SI(BaseSI):
4
+ class BaseExampleSI(BaseSI):
5
5
  pass
@@ -0,0 +1,45 @@
1
+ from __future__ import annotations
2
+
3
+ import datetime as dt
4
+ from typing import Any
5
+
6
+ from project.api.schema.base_schema import BaseSO
7
+ from project.sqlalchemy_db_.sqlalchemy_model import StoryLogDBM, OperationDBM
8
+
9
+
10
+ class BaseExampleSO(BaseSO):
11
+ pass
12
+
13
+
14
+ class SimpleDBMExampleSO(BaseExampleSO):
15
+ id: int
16
+ long_id: str
17
+ slug: str | None
18
+ creation_dt: dt.datetime
19
+
20
+
21
+ class StoryLogExampleSO(SimpleDBMExampleSO):
22
+ level: str
23
+ type: str | None
24
+ title: str | None
25
+ data: dict[str, Any]
26
+
27
+ @classmethod
28
+ def from_story_log_dbm(cls, *, story_log_dbm: StoryLogDBM) -> StoryLogExampleSO:
29
+ return cls.model_validate(story_log_dbm.simple_dict_with_sd_properties())
30
+
31
+
32
+ class OperationExampleSO(SimpleDBMExampleSO):
33
+ execution_start_dt: dt.datetime | None
34
+ execution_finish_dt: dt.datetime | None
35
+ status: str
36
+ type: str
37
+ title: str | None
38
+ input_data: dict[str, Any]
39
+ output_data: dict[str, Any]
40
+ error_data: dict[str, Any]
41
+ duration_total_seconds: float | None
42
+
43
+ @classmethod
44
+ def from_operation_dbm(cls, *, operation_dbm: OperationDBM) -> OperationExampleSO:
45
+ return cls.model_validate(operation_dbm.simple_dict_with_sd_properties())
@@ -0,0 +1,5 @@
1
+ from project.api.schema.base_schema import BaseSI
2
+
3
+
4
+ class BaseGeneralSI(BaseSI):
5
+ pass
@@ -0,0 +1,14 @@
1
+ from project.api.schema.base_schema import BaseSO
2
+
3
+
4
+ class BaseGeneralSO(BaseSO):
5
+ pass
6
+
7
+
8
+ class HealthcheckGeneralSO(BaseGeneralSO):
9
+ is_ok: bool = True
10
+
11
+
12
+ class ErrorsInfoGeneralSO(BaseGeneralSO):
13
+ api_error_codes: list[str] = []
14
+ api_error_specification_codes: list[str] = []
@@ -3,7 +3,7 @@ from sqladmin import Admin
3
3
 
4
4
  from project.core.settings import get_cached_settings
5
5
  from project.sqladmin_.admin_auth import SQLAdminAuth
6
- from project.sqladmin_.model_view import get_simple_mv
6
+ from project.sqladmin_.model_view import SimpleMV
7
7
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
8
8
 
9
9
 
@@ -18,7 +18,7 @@ def add_sqladmin_in_app(*, app: FastAPI, base_url: str = "/sqladmin") -> FastAPI
18
18
  title=get_cached_settings().project_name
19
19
  )
20
20
 
21
- for model_view in get_simple_mv().__subclasses__():
21
+ for model_view in SimpleMV.__subclasses__():
22
22
  admin.add_model_view(model_view)
23
23
 
24
24
  return app
@@ -0,0 +1,61 @@
1
+ import logging
2
+
3
+ import fastapi
4
+ from sqladmin.authentication import AuthenticationBackend
5
+
6
+ from project.core.settings import get_cached_settings
7
+
8
+
9
+ class SQLAdminAuth(AuthenticationBackend):
10
+ def __init__(self):
11
+ self._logger = logging.getLogger(self.__class__.__name__)
12
+ super().__init__(secret_key=get_cached_settings().sqladmin_secret_key)
13
+
14
+ async def login(self, request: fastapi.Request) -> bool:
15
+ form = await request.form()
16
+
17
+ username, password = form.get("username"), form.get("password")
18
+ if username:
19
+ username = username.strip()
20
+ if password:
21
+ password = password.strip()
22
+
23
+ if get_cached_settings().sqladmin_correct_passwords is not None:
24
+ if (
25
+ (
26
+ is_username_correct := (
27
+ username is not None
28
+ and username in get_cached_settings().sqladmin_correct_passwords
29
+ )
30
+ )
31
+ or
32
+ (
33
+ is_password_correct := (
34
+ password is not None
35
+ and password in get_cached_settings().sqladmin_correct_passwords
36
+ )
37
+ )
38
+ ):
39
+ if is_username_correct is True:
40
+ request.session.update({"sqladmin_key": username})
41
+ elif is_password_correct is True:
42
+ request.session.update({"sqladmin_key": password})
43
+
44
+ return True
45
+
46
+ return False
47
+
48
+ async def logout(self, request: fastapi.Request) -> bool:
49
+ request.session.clear()
50
+ return True
51
+
52
+ async def authenticate(self, request: fastapi.Request) -> bool:
53
+ sqladmin_key = request.session.get("sqladmin_key")
54
+ if sqladmin_key:
55
+ sqladmin_key = sqladmin_key.strip()
56
+
57
+ if get_cached_settings().sqladmin_correct_passwords is not None:
58
+ if sqladmin_key is not None and sqladmin_key in get_cached_settings().sqladmin_correct_passwords:
59
+ return True
60
+
61
+ return False
@@ -0,0 +1,3 @@
1
+ from project.sqladmin_.model_view.common import SimpleMV
2
+ from project.sqladmin_.model_view.operation import OperationMV
3
+ from project.sqladmin_.model_view.story_log import StoryLogMV
@@ -0,0 +1,24 @@
1
+ from sqladmin import ModelView
2
+
3
+
4
+ class SimpleMV(ModelView):
5
+ can_create = True
6
+ can_edit = True
7
+ can_delete = True
8
+ can_view_details = True
9
+ can_export = True
10
+ page_size = 50
11
+ page_size_options = [50, 100, 200]
12
+ save_as = True
13
+ save_as_continue = True
14
+ export_types = ["xlsx", "csv", "json"]
15
+
16
+
17
+ def get_simple_mv_class() -> type[SimpleMV]:
18
+ from project.sqladmin_.model_view import SimpleMV
19
+ return SimpleMV
20
+
21
+
22
+ if __name__ == '__main__':
23
+ for model_view in get_simple_mv_class().__subclasses__():
24
+ print(model_view)
@@ -0,0 +1,43 @@
1
+ from project.sqladmin_.model_view.common import SimpleMV
2
+ from project.sqlalchemy_db_.sqlalchemy_model import OperationDBM
3
+
4
+
5
+ class OperationMV(SimpleMV, model=OperationDBM):
6
+ name = "Operation"
7
+ name_plural = "Operations"
8
+ column_list = [
9
+ OperationDBM.id,
10
+ OperationDBM.long_id,
11
+ OperationDBM.slug,
12
+ OperationDBM.creation_dt,
13
+ OperationDBM.status,
14
+ OperationDBM.type,
15
+ OperationDBM.title,
16
+ OperationDBM.execution_start_dt,
17
+ OperationDBM.execution_finish_dt,
18
+ OperationDBM.input_data,
19
+ OperationDBM.output_data,
20
+ OperationDBM.error_data
21
+ ]
22
+ form_columns = [
23
+ OperationDBM.slug,
24
+ OperationDBM.status,
25
+ OperationDBM.type,
26
+ OperationDBM.title,
27
+ OperationDBM.execution_start_dt,
28
+ OperationDBM.execution_finish_dt,
29
+ OperationDBM.input_data,
30
+ OperationDBM.output_data,
31
+ OperationDBM.error_data
32
+ ]
33
+ column_default_sort = [
34
+ (OperationDBM.creation_dt, True)
35
+ ]
36
+ column_searchable_list = [
37
+ OperationDBM.id,
38
+ OperationDBM.long_id,
39
+ OperationDBM.slug,
40
+ OperationDBM.status,
41
+ OperationDBM.type,
42
+ OperationDBM.title
43
+ ]