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.
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/PKG-INFO +2 -1
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/auth.py +75 -62
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/response.py +1 -1
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general/get_auth_data.py +31 -0
- {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
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general/healthcheck.py +26 -0
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general/main_router.py +24 -0
- {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
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/main_router.py +11 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/common/out.py +0 -5
- {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
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/schema/example/out.py +45 -0
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/schema/general/in_.py +5 -0
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/schema/general/out.py +14 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/add_admin_in_app.py +2 -2
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/admin_auth.py +61 -0
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/__init__.py +3 -0
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/common.py +24 -0
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/operation.py +43 -0
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/story_log.py +36 -0
- arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/util/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/pyproject.toml +2 -1
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/main_router.py +0 -10
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/check_auth.py +0 -30
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/clear_log_file.py +0 -34
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/get_arpakitlib_project_template_info.py +0 -22
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/get_log_file.py +0 -32
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/healthcheck.py +0 -21
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/main_router.py +0 -59
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/raise_fake_error.py +0 -44
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/router/v1/reinit_sqlalchemy_db.py +0 -33
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/api/schema/v1/out.py +0 -47
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/admin_auth.py +0 -54
- arpakitlib-1.8.12/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view.py +0 -95
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/LICENSE +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/README.md +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/.gitignore +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/.python-version +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/LICENSE +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/README.md +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic/README +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic/env.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic/script.py.mako +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic/versions/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/alembic.ini +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/arpakitlib_project_template_info.json +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/alembic_history.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/alembic_revision_autogenerate.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/alembic_upgrade_head.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/beautify_json.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/check_logging.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/check_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_ps_a.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_rm_postgres.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_run_postgres.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_start_postgres.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/docker_stop_postgres.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/drop_json_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/drop_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/generate_settings_env_example.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_commit.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_push_arpakit_company_github_1.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_push_arpakit_company_gitlab_1.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_push_arpakit_github_1.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_push_arpakit_gitlab_1.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_remote_v.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_set_arpakit_company_origin.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_set_arpakit_origin.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_set_divarteam_origin.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/git_status.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/hello_world.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/init_json_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/init_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_check.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_clear_cache.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_config.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_install.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_lock.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_remove_and_add_arpakitlib.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_show.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_show_arpakitlib.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_update.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/poetry_update_arpakitlib.sh +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/reinit_json_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/reinit_sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/remove_operations.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/remove_story_logs.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/rm_all_records_in_json_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/show_settings.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_api_for_not_prod.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_api_for_prod.py +0 -0
- {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
- {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
- {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
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/command/start_tg_bot_for_prod.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/example.env +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_1.txt +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_2.txt +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_3.txt +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_4.txt +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/note/note_5.txt +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/additional_model/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/additional_model/common.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/asgi.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/const.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/create_api_app.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/event.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/exception.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/exception_handler.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/openapi_ui.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/router/__init__.py +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/base_schema.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/common/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/schema/common/in_.py +0 -0
- {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
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/util.py +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/business_service/hello_world.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/business_service/remove_operations.py +0 -0
- {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
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/cache_file_storage_in_dir.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/const.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/dump_file_storage_in_dir.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/jinja2_templates.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/media_file_storage_in_dir.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/settings.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/core/util.py +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/json_db/json_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/more/helloworld +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/const.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/operation_executor_worker.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/scheduled_operation_creator_worker.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/scheduled_operations.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/operation_execution/util.py +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/1 +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/healthcheck +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/helloworld +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/openapi-favicon.png +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/redoc/redoc.standalone.js +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/favicon-16x16.png +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/favicon-32x32.png +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/index.css +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/index.html +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/oauth2-redirect.html +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-initializer.js +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui.css +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/resource/static/swagger-ui/swagger-ui.js +0 -0
- {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
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_1.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_2.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_3.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_4.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_5.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_6.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sandbox/sandbox_7.py +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/asgi.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/consts.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/create_site_app.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/event.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/exception_handler.py +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/site/router/main_router.py +0 -0
- {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
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/const.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_db.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/__init__.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/common.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/operation.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/story_log.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/util.py +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_1.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_2.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_3.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_4.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_5.py +0 -0
- {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
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/blank/blank.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/const.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/event.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/filter_.py +0 -0
- {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
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/inline_/callback.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/inline_/common.py +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/kb/static_/common.py +0 -0
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/middleware/init_user.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/middleware/middleware.py +0 -0
- {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
- {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
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/error.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/healthcheck.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/router/main_router.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/start_tg_bot.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/tg_bot.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/tg_bot_dispatcher.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/tg_bot/util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/util/arpakitlib_project_template.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_additional_model_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_aiogram_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakit_project_template_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakit_schedule_uust_api_client_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakit_schedule_uust_site_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_arpakitlib_cli_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_base64_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_base_worker_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_blank_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_cache_file_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_class_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_cryptomus_api_client_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_datetime_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_dict_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_enumeration_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_exception_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_file_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_func_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_hash_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_http_request_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_ip_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_json_db_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_json_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_jwt_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_list_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_logging_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_mongodb_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_need_type_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_openai_api_client_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_parse_command.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_postgresql_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_rat_func_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_retry_func_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_run_cmd_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_schedule_uust_api_client_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_settings_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_sleep_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_sqladmin_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_sqlalchemy_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_ssh_runner_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_steam_payment_api_client_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_str_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_type_util.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_wata_api_client.py +0 -0
- {arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/ar_yookassa_api_client_util.py +0 -0
- {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.
|
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)
|
{arpakitlib-1.8.12 → arpakitlib-1.8.14}/arpakitlib/_arpakit_project_template_v_2/project/api/auth.py
RENAMED
@@ -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
|
-
|
23
|
+
require_user_token_string: bool = False
|
24
24
|
|
25
25
|
require_correct_api_key: bool = False
|
26
|
-
|
26
|
+
require_correct_user_token: bool = False
|
27
27
|
|
28
|
-
|
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
|
-
|
43
|
-
|
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
|
-
|
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 =
|
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(
|
61
|
-
|
62
|
-
if
|
63
|
-
raise_for_type(
|
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
|
66
|
-
|
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
|
72
|
-
|
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
|
-
|
95
|
+
require_user_token_string=require_user_token_string,
|
88
96
|
require_correct_api_key=require_correct_api_key,
|
89
|
-
|
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
|
-
|
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
|
-
|
126
|
+
# parse user token
|
116
127
|
|
117
|
-
|
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.
|
121
|
-
api_auth_data.
|
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.
|
128
|
-
api_auth_data.
|
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.
|
131
|
-
api_auth_data.
|
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.
|
138
|
-
api_auth_data.
|
139
|
-
if not api_auth_data.
|
140
|
-
api_auth_data.
|
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
|
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
|
196
|
-
if is_async_callable(
|
197
|
-
api_auth_data.is_token_correct = await
|
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(
|
202
|
-
api_auth_data.is_token_correct =
|
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
|
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
|
234
|
-
async def
|
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
|
260
|
+
return async_func
|
248
261
|
|
249
262
|
|
250
|
-
def
|
251
|
-
async def
|
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.
|
271
|
+
if api_auth_data.user_token_string is None:
|
259
272
|
return False
|
260
|
-
if api_auth_data.
|
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
|
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.
|
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
|
2
|
+
from fastapi import APIRouter
|
3
3
|
|
4
|
-
from project.api.auth import APIAuthData, api_auth,
|
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
|
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=
|
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
|
-
|
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
|
28
|
+
return ErrorsInfoGeneralSO(
|
31
29
|
api_error_codes=APIErrorCodes.values_list(),
|
32
30
|
api_error_specification_codes=APIErrorSpecificationCodes.values_list()
|
33
31
|
)
|
arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general/healthcheck.py
ADDED
@@ -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)
|
arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/api/router/general/main_router.py
ADDED
@@ -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,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,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
|
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
|
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
|
arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/common.py
ADDED
@@ -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)
|
arpakitlib-1.8.14/arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view/operation.py
ADDED
@@ -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
|
+
]
|