edu-rdm-integration 2.1.0__tar.gz → 2.2.1__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.
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/CHANGELOG.md +21 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/PKG-INFO +22 -1
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/setup.py +1 -1
- edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_and_export_data/__init__.py +1 -0
- edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_and_export_data/apps.py +9 -0
- edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +67 -0
- edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_and_export_data/models.py +67 -0
- edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_and_export_data/utils.py +77 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/enums.py +12 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/helpers.py +21 -1
- edu-rdm-integration-2.2.1/src/edu_rdm_integration/tasks.py +339 -0
- edu-rdm-integration-2.2.1/src/edu_rdm_integration/uploader_log/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/utils.py +29 -1
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration.egg-info/PKG-INFO +22 -1
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration.egg-info/SOURCES.txt +6 -0
- edu-rdm-integration-2.1.0/src/edu_rdm_integration/tasks.py +0 -100
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/CONDUCT.md +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/LICENSE +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/MANIFEST.in +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/README.md +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/pyproject.toml +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/dependencies/development_packages.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/dependencies/external_packages.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/dependencies/internal_packages.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/dependencies/internal_sources.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/dependencies/production_packages.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/dependencies/system_packages.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/dependencies/testing_packages.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/development.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/production.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/requirements/stage.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/setup.cfg +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/apps.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/caches.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/consts.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/enums.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/errors.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/functions.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/helpers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/managers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/presenters.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/receivers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/results.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/runners.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/strategies.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/strings.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/tests.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/adapters/validators.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/app_meta.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/app_settings.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/apps.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/base.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/collect_data → edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_and_export_data/migrations}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/collect_data/base → edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_data}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/collect_data/calculated → edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_data/base}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/base/caches.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/base/functions.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/base/helpers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/base/managers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/base/mixins.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/base/runners.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/collect_data/calculated/base → edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_data/calculated}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/collect_data/non_calculated → edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_data/calculated/base}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/caches.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/consts.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/enums.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/errors.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/functions.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/helpers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/managers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/presenters.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/results.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/runners.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/strings.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/tests.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/base/validators.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/calculated/strategies.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/collect.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/generators.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/helpers.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/collect_data/non_calculated/base → edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_data/non_calculated}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/enum_register → edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_data/non_calculated/base}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/caches.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/consts.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/enums.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/errors.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/functions.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/helpers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/managers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/presenters.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/results.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/runners.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/strings.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/tests.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/base/validators.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/non_calculated/strategies.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/collect_data/tests.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/consts.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/entities.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/export_data → edu-rdm-integration-2.2.1/src/edu_rdm_integration/enum_register}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/enum_register/mixins.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/enum_register/register.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/export_data/base → edu-rdm-integration-2.2.1/src/edu_rdm_integration/export_data}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/function_templates → edu-rdm-integration-2.2.1/src/edu_rdm_integration/export_data/base}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/caches.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/consts.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/enums.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/errors.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/functions.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/helpers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/managers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/presenters.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/requests.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/results.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/runners.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/strings.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/tests.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/base/validators.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/consts.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/export.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/generators.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/helpers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/export_data/strategies.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/management → edu-rdm-integration-2.2.1/src/edu_rdm_integration/function_templates}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/__init__.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/apps.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/caches.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/consts.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/enums.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/errors.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/functions.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/helpers.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/managers.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/presenters.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/results.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/runners.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/strings.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/tests.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_collect_data_template/validators.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/__init__.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/apps.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/caches.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/consts.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/enums.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/errors.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/functions.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/helpers.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/managers.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/presenters.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/results.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/runners.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/strings.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/tests.py-tpl +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/function_templates/function_export_data_template/validators.py-tpl +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/management/commands → edu-rdm-integration-2.2.1/src/edu_rdm_integration/management}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/migrations → edu-rdm-integration-2.2.1/src/edu_rdm_integration/management/commands}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/management/commands/check_upload_status.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/management/commands/collect_latest_models_data.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/management/commands/collect_models_data.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/management/commands/datamart_status.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/management/commands/datamart_upload.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/management/commands/export_entities_data.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/management/commands/export_latest_entities_data.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/management/general.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/mapping.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/migrations/0001_initial.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/migrations/0004_uploaderclientlog.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/migrations/0005_auto_20231204_1224.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/migrations/0006_request_status_data.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/migrations/0008_transferredentity.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/registry → edu-rdm-integration-2.2.1/src/edu_rdm_integration/migrations}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/models.py +0 -0
- {edu-rdm-integration-2.1.0/src/edu_rdm_integration/uploader_log → edu-rdm-integration-2.2.1/src/edu_rdm_integration/registry}/__init__.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/registry/actions.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/signals.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/storages.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/uploader_log/actions.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/uploader_log/apps.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/uploader_log/enums.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/uploader_log/managers.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration/uploader_log/ui.py +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration.egg-info/dependency_links.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration.egg-info/namespace_packages.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration.egg-info/not-zip-safe +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration.egg-info/requires.txt +0 -0
- {edu-rdm-integration-2.1.0 → edu-rdm-integration-2.2.1}/src/edu_rdm_integration.egg-info/top_level.txt +0 -0
@@ -28,6 +28,27 @@
|
|
28
28
|
|
29
29
|
### Удалено
|
30
30
|
|
31
|
+
## [2.2.1] - 2024-03-28
|
32
|
+
Исправление наследования Meta в моделях EduRdmCollectDataCommandProgress и EduRdmExportDataCommandProgress
|
33
|
+
|
34
|
+
### Исправлено
|
35
|
+
|
36
|
+
- [EDUSCHL-21569](https://jira.bars.group/browse/EDUSCHL-21569)
|
37
|
+
MINOR Перенести оставшиеся общие асинхронные задачи из ЭШ в пакет edu_rdm_integration
|
38
|
+
|
39
|
+
## [2.2.0] - 2024-03-20
|
40
|
+
|
41
|
+
Из ЭШ перенесена периодическая задача по сбору и выгрузке данных в РВД.
|
42
|
+
|
43
|
+
Также из ЭШ перенесены и переименованы модели:
|
44
|
+
- CollectDataCommandProgress перименована в EduRdmCollectDataCommandProgress
|
45
|
+
- ExportDataCommandProgress перименована в EduRdmExportDataCommandProgress
|
46
|
+
- Добавлены миксины CollectCommandMixin и ExportCommandMixin
|
47
|
+
|
48
|
+
### Добавлено
|
49
|
+
|
50
|
+
- [EDUSCHL-21569](https://jira.bars.group/browse/EDUSCHL-21569)
|
51
|
+
MINOR Перенести оставшиеся общие асинхронные задачи из ЭШ в пакет edu_rdm_integration
|
31
52
|
|
32
53
|
## [2.1.0] - 2024-03-18
|
33
54
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: edu-rdm-integration
|
3
|
-
Version: 2.1
|
3
|
+
Version: 2.2.1
|
4
4
|
Summary: Интеграция с Региональной витриной данных
|
5
5
|
Home-page:
|
6
6
|
Download-URL:
|
@@ -293,6 +293,27 @@ Requires-Dist: uploader-client<1,>=0.2.1
|
|
293
293
|
|
294
294
|
### Удалено
|
295
295
|
|
296
|
+
## [2.2.1] - 2024-03-28
|
297
|
+
Исправление наследования Meta в моделях EduRdmCollectDataCommandProgress и EduRdmExportDataCommandProgress
|
298
|
+
|
299
|
+
### Исправлено
|
300
|
+
|
301
|
+
- [EDUSCHL-21569](https://jira.bars.group/browse/EDUSCHL-21569)
|
302
|
+
MINOR Перенести оставшиеся общие асинхронные задачи из ЭШ в пакет edu_rdm_integration
|
303
|
+
|
304
|
+
## [2.2.0] - 2024-03-20
|
305
|
+
|
306
|
+
Из ЭШ перенесена периодическая задача по сбору и выгрузке данных в РВД.
|
307
|
+
|
308
|
+
Также из ЭШ перенесены и переименованы модели:
|
309
|
+
- CollectDataCommandProgress перименована в EduRdmCollectDataCommandProgress
|
310
|
+
- ExportDataCommandProgress перименована в EduRdmExportDataCommandProgress
|
311
|
+
- Добавлены миксины CollectCommandMixin и ExportCommandMixin
|
312
|
+
|
313
|
+
### Добавлено
|
314
|
+
|
315
|
+
- [EDUSCHL-21569](https://jira.bars.group/browse/EDUSCHL-21569)
|
316
|
+
MINOR Перенести оставшиеся общие асинхронные задачи из ЭШ в пакет edu_rdm_integration
|
296
317
|
|
297
318
|
## [2.1.0] - 2024-03-18
|
298
319
|
|
@@ -0,0 +1 @@
|
|
1
|
+
default_app_config = 'edu_rdm_integration.collect_and_export_data.apps.AppConfig'
|
edu-rdm-integration-2.2.1/src/edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# Generated by Django 3.0.14 on 2024-03-11 16:10
|
2
|
+
# flake8: noqa
|
3
|
+
import uuid
|
4
|
+
|
5
|
+
import django.contrib.postgres.fields.jsonb
|
6
|
+
import django.db.models.deletion
|
7
|
+
import django.utils.timezone
|
8
|
+
from django.db import (
|
9
|
+
migrations,
|
10
|
+
models,
|
11
|
+
)
|
12
|
+
|
13
|
+
import educommon.django.db.mixins
|
14
|
+
|
15
|
+
import edu_rdm_integration.utils
|
16
|
+
|
17
|
+
|
18
|
+
class Migration(migrations.Migration):
|
19
|
+
|
20
|
+
initial = True
|
21
|
+
|
22
|
+
dependencies = [
|
23
|
+
('edu_rdm_integration', '0008_transferredentity'),
|
24
|
+
('async_task', '0002_task_type_and_status_data'),
|
25
|
+
]
|
26
|
+
|
27
|
+
operations = [
|
28
|
+
migrations.CreateModel(
|
29
|
+
name='EduRdmExportDataCommandProgress',
|
30
|
+
fields=[
|
31
|
+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
32
|
+
('created', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Дата создания')),
|
33
|
+
('period_started_at', models.DateTimeField(verbose_name='Левая граница периода выборки данных для выгрузки')),
|
34
|
+
('period_ended_at', models.DateTimeField(verbose_name='Правая граница периода выборки данных для выгрузки')),
|
35
|
+
('generation_id', models.UUIDField(default=uuid.uuid4, verbose_name='Идентификатор генерации')),
|
36
|
+
('logs_link', models.FileField(max_length=255, upload_to=edu_rdm_integration.utils.get_data_command_progress_attachment_path, verbose_name='Файл лога')),
|
37
|
+
('type', models.PositiveSmallIntegerField(choices=[(1, 'Автоматический'), (2, 'Ручной')], verbose_name='Тип команды')),
|
38
|
+
('entity', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='edu_rdm_integration.RegionalDataMartEntityEnum', verbose_name='Сущность РВД')),
|
39
|
+
('stage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='edu_rdm_integration.ExportingDataStage', verbose_name='Этап выгрузки данных')),
|
40
|
+
('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='async_task.RunningTask', verbose_name='Асинхронная задача')),
|
41
|
+
],
|
42
|
+
options={
|
43
|
+
'db_table': 'edu_rdm_exporting_data_command_progress',
|
44
|
+
},
|
45
|
+
bases=(educommon.django.db.mixins.ReprStrPreModelMixin, models.Model),
|
46
|
+
),
|
47
|
+
migrations.CreateModel(
|
48
|
+
name='EduRdmCollectDataCommandProgress',
|
49
|
+
fields=[
|
50
|
+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
51
|
+
('created', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Дата создания')),
|
52
|
+
('logs_period_started_at', models.DateTimeField(verbose_name='Левая граница периода обрабатываемых логов')),
|
53
|
+
('logs_period_ended_at', models.DateTimeField(verbose_name='Правая граница периода обрабатываемых логов')),
|
54
|
+
('generation_id', models.UUIDField(default=uuid.uuid4, verbose_name='Идентификатор генерации')),
|
55
|
+
('institute_ids', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=list, null=True, verbose_name='id учебного заведения')),
|
56
|
+
('logs_link', models.FileField(max_length=255, upload_to=edu_rdm_integration.utils.get_data_command_progress_attachment_path, verbose_name='Ссылка на файл логов')),
|
57
|
+
('type', models.PositiveSmallIntegerField(choices=[(1, 'Автоматический'), (2, 'Ручной')], verbose_name='Тип команды')),
|
58
|
+
('model', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='edu_rdm_integration.RegionalDataMartModelEnum', verbose_name='Модель РВД')),
|
59
|
+
('stage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='edu_rdm_integration.CollectingExportedDataStage', verbose_name='Этап формирования данных для выгрузки')),
|
60
|
+
('task', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='async_task.RunningTask', verbose_name='Асинхронная задача')),
|
61
|
+
],
|
62
|
+
options={
|
63
|
+
'db_table': 'edu_rdm_collecting_data_command_progress',
|
64
|
+
},
|
65
|
+
bases=(educommon.django.db.mixins.ReprStrPreModelMixin, models.Model),
|
66
|
+
),
|
67
|
+
]
|
@@ -0,0 +1,67 @@
|
|
1
|
+
from django.db.models import (
|
2
|
+
SET_NULL,
|
3
|
+
FileField,
|
4
|
+
ForeignKey,
|
5
|
+
PositiveSmallIntegerField,
|
6
|
+
)
|
7
|
+
|
8
|
+
from edu_rdm_integration.enums import (
|
9
|
+
CommandType,
|
10
|
+
)
|
11
|
+
from edu_rdm_integration.models import (
|
12
|
+
AbstractCollectDataCommandProgress,
|
13
|
+
AbstractExportDataCommandProgress,
|
14
|
+
)
|
15
|
+
from edu_rdm_integration.utils import (
|
16
|
+
get_data_command_progress_attachment_path,
|
17
|
+
)
|
18
|
+
|
19
|
+
|
20
|
+
class EduRdmCollectDataCommandProgress(AbstractCollectDataCommandProgress):
|
21
|
+
"""
|
22
|
+
Модель, хранящая данные для формирования и отслеживания асинхронных задач по сбору данных.
|
23
|
+
"""
|
24
|
+
|
25
|
+
task = ForeignKey(
|
26
|
+
to='async_task.RunningTask',
|
27
|
+
verbose_name='Асинхронная задача',
|
28
|
+
blank=True,
|
29
|
+
null=True,
|
30
|
+
on_delete=SET_NULL,
|
31
|
+
)
|
32
|
+
logs_link = FileField(
|
33
|
+
upload_to=get_data_command_progress_attachment_path,
|
34
|
+
max_length=255,
|
35
|
+
verbose_name='Ссылка на файл логов',
|
36
|
+
)
|
37
|
+
type = PositiveSmallIntegerField( # noqa: A003
|
38
|
+
verbose_name='Тип команды',
|
39
|
+
choices=CommandType.get_choices(),
|
40
|
+
)
|
41
|
+
|
42
|
+
class Meta(AbstractCollectDataCommandProgress.Meta):
|
43
|
+
db_table = 'edu_rdm_collecting_data_command_progress'
|
44
|
+
|
45
|
+
|
46
|
+
class EduRdmExportDataCommandProgress(AbstractExportDataCommandProgress):
|
47
|
+
"""Команда экспорта данных."""
|
48
|
+
|
49
|
+
task = ForeignKey(
|
50
|
+
to='async_task.RunningTask',
|
51
|
+
verbose_name='Асинхронная задача',
|
52
|
+
null=True,
|
53
|
+
blank=True,
|
54
|
+
on_delete=SET_NULL,
|
55
|
+
)
|
56
|
+
logs_link = FileField(
|
57
|
+
upload_to=get_data_command_progress_attachment_path,
|
58
|
+
max_length=255,
|
59
|
+
verbose_name='Файл лога',
|
60
|
+
)
|
61
|
+
type = PositiveSmallIntegerField( # noqa: A003
|
62
|
+
verbose_name='Тип команды',
|
63
|
+
choices=CommandType.get_choices(),
|
64
|
+
)
|
65
|
+
|
66
|
+
class Meta(AbstractExportDataCommandProgress.Meta):
|
67
|
+
db_table = 'edu_rdm_exporting_data_command_progress'
|
@@ -0,0 +1,77 @@
|
|
1
|
+
from edu_rdm_integration.collect_and_export_data.models import (
|
2
|
+
EduRdmCollectDataCommandProgress,
|
3
|
+
EduRdmExportDataCommandProgress,
|
4
|
+
)
|
5
|
+
from edu_rdm_integration.collect_data.collect import (
|
6
|
+
BaseCollectModelsDataByGeneratingLogs,
|
7
|
+
)
|
8
|
+
from edu_rdm_integration.export_data.export import (
|
9
|
+
ExportEntitiesData,
|
10
|
+
)
|
11
|
+
from edu_rdm_integration.helpers import (
|
12
|
+
save_command_log_link,
|
13
|
+
)
|
14
|
+
|
15
|
+
|
16
|
+
class CollectCommandMixin:
|
17
|
+
"""Класс-примесь для запуска команды сборки моделей."""
|
18
|
+
|
19
|
+
def get_collect_command(self, command_id: int) -> EduRdmCollectDataCommandProgress:
|
20
|
+
"""Возвращает экземпляр модели команды запуска."""
|
21
|
+
command = EduRdmCollectDataCommandProgress.objects.get(id=command_id)
|
22
|
+
|
23
|
+
return command
|
24
|
+
|
25
|
+
def get_collect_models_class(self):
|
26
|
+
"""Возвращает класс для сбора данных."""
|
27
|
+
return BaseCollectModelsDataByGeneratingLogs
|
28
|
+
|
29
|
+
def run_collect_command(self, command) -> None:
|
30
|
+
"""Запуск команды сбора."""
|
31
|
+
collect_models_data_class = self.get_collect_models_class()
|
32
|
+
collect_models_data_class(
|
33
|
+
models=(command.model_id,),
|
34
|
+
logs_period_started_at=command.logs_period_started_at,
|
35
|
+
logs_period_ended_at=command.logs_period_ended_at,
|
36
|
+
command_id=command.id,
|
37
|
+
institute_ids=command.institute_ids or (),
|
38
|
+
).collect()
|
39
|
+
|
40
|
+
def save_collect_command_logs(self, command_id: int, log_dir: str):
|
41
|
+
"""Сохранение ссылки на файл логов в команде."""
|
42
|
+
try:
|
43
|
+
command = self.get_collect_command(command_id)
|
44
|
+
except EduRdmCollectDataCommandProgress.DoesNotExist:
|
45
|
+
command = None
|
46
|
+
|
47
|
+
if command:
|
48
|
+
save_command_log_link(command, log_dir)
|
49
|
+
|
50
|
+
|
51
|
+
class ExportCommandMixin:
|
52
|
+
"""Класс-примесь для запуска команды выгрузки сущностей."""
|
53
|
+
|
54
|
+
def get_export_command(self, command_id: int) -> EduRdmExportDataCommandProgress:
|
55
|
+
"""Возвращает экземпляр модели команды запуска."""
|
56
|
+
command = EduRdmExportDataCommandProgress.objects.get(id=command_id)
|
57
|
+
|
58
|
+
return command
|
59
|
+
|
60
|
+
def run_export_command(self, command: EduRdmExportDataCommandProgress) -> None:
|
61
|
+
"""Запуск команды выгрузки."""
|
62
|
+
ExportEntitiesData(
|
63
|
+
entities=(command.entity_id,),
|
64
|
+
period_started_at=command.period_started_at,
|
65
|
+
period_ended_at=command.period_ended_at,
|
66
|
+
command_id=command.id,
|
67
|
+
).export()
|
68
|
+
|
69
|
+
def save_export_command_logs(self, command_id: int, log_dir: str):
|
70
|
+
"""Сохранение ссылки на файл логов в команде."""
|
71
|
+
try:
|
72
|
+
command = self.get_export_command(command_id)
|
73
|
+
except EduRdmExportDataCommandProgress.DoesNotExist:
|
74
|
+
command = None
|
75
|
+
|
76
|
+
if command:
|
77
|
+
save_command_log_link(command, log_dir)
|
@@ -154,3 +154,15 @@ class EntityRetiredStatusEnum(ValueCodeEnumerate):
|
|
154
154
|
RETIRED: 'Прекращена',
|
155
155
|
ENTERED_IN_ERROR: 'Создана по ошибке',
|
156
156
|
}
|
157
|
+
|
158
|
+
|
159
|
+
class CommandType(BaseEnumerate):
|
160
|
+
"""Тип команды."""
|
161
|
+
|
162
|
+
AUTO = 1
|
163
|
+
MANUAL = 2
|
164
|
+
|
165
|
+
values = {
|
166
|
+
AUTO: 'Автоматический',
|
167
|
+
MANUAL: 'Ручной',
|
168
|
+
}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import heapq
|
2
|
+
import os
|
2
3
|
from concurrent.futures import (
|
3
4
|
ThreadPoolExecutor,
|
4
5
|
)
|
@@ -12,8 +13,12 @@ from typing import (
|
|
12
13
|
List,
|
13
14
|
Optional,
|
14
15
|
Tuple,
|
16
|
+
Union,
|
15
17
|
)
|
16
18
|
|
19
|
+
from django.conf import (
|
20
|
+
settings,
|
21
|
+
)
|
17
22
|
from django.db import (
|
18
23
|
transaction,
|
19
24
|
)
|
@@ -28,6 +33,10 @@ from educommon import (
|
|
28
33
|
logger,
|
29
34
|
)
|
30
35
|
|
36
|
+
from edu_rdm_integration.collect_and_export_data.models import (
|
37
|
+
EduRdmCollectDataCommandProgress,
|
38
|
+
EduRdmExportDataCommandProgress,
|
39
|
+
)
|
31
40
|
from edu_rdm_integration.enums import (
|
32
41
|
FileUploadStatusEnum,
|
33
42
|
)
|
@@ -151,7 +160,7 @@ class Graph:
|
|
151
160
|
"""
|
152
161
|
|
153
162
|
def __init__(self):
|
154
|
-
self.vertices: Dict[str, Dict[str,
|
163
|
+
self.vertices: Dict[str, Dict[str, Optional[str]]] = {}
|
155
164
|
"""Словарь для хранения данных графа."""
|
156
165
|
|
157
166
|
def add_vertex(self, vertex: str):
|
@@ -261,3 +270,14 @@ class Graph:
|
|
261
270
|
path.reverse()
|
262
271
|
|
263
272
|
return path
|
273
|
+
|
274
|
+
|
275
|
+
def save_command_log_link(
|
276
|
+
command: Union[EduRdmCollectDataCommandProgress, EduRdmExportDataCommandProgress],
|
277
|
+
log_dir: str
|
278
|
+
) -> None:
|
279
|
+
"""Сохраняет ссылку на лог команды."""
|
280
|
+
log_file = os.path.join(settings.MEDIA_ROOT, log_dir, f'{command.id}.log')
|
281
|
+
if os.path.exists(log_file):
|
282
|
+
command.logs_link = os.path.join(log_dir, f'{command.id}.log')
|
283
|
+
command.save()
|