edu-rdm-integration 3.2.2__tar.gz → 3.2.7__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-3.2.2 → edu-rdm-integration-3.2.7}/CHANGELOG.md +42 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/MANIFEST.in +1 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/PKG-INFO +43 -1
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/setup.py +1 -1
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/collect.py +12 -10
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/export.py +3 -6
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/helpers.py +29 -29
- edu-rdm-integration-3.2.7/src/edu_rdm_integration/migrations/0009_transferredentity_export_enabled.py +21 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/models.py +11 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/registry/actions.py +31 -0
- edu-rdm-integration-3.2.7/src/edu_rdm_integration/registry/ui.py +39 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/tasks.py +39 -36
- edu-rdm-integration-3.2.7/src/edu_rdm_integration/templates/ui-js/transferred-entity-list.js +37 -0
- edu-rdm-integration-3.2.7/src/edu_rdm_integration/uploader_log/templates/ui-js/object-grid-buttons.js +185 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/PKG-INFO +43 -1
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/SOURCES.txt +5 -1
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/CONDUCT.md +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/LICENSE +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/README.md +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/pyproject.toml +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/dependencies/development_packages.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/dependencies/external_packages.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/dependencies/internal_packages.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/dependencies/internal_sources.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/dependencies/production_packages.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/dependencies/system_packages.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/dependencies/testing_packages.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/development.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/production.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/requirements/stage.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/setup.cfg +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/apps.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/caches.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/consts.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/enums.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/errors.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/functions.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/helpers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/managers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/presenters.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/receivers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/results.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/runners.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/strategies.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/strings.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/tests.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/validators.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/app_meta.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/app_settings.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/apps.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/base.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/apps.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/migrations/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/models.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/utils.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/caches.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/functions.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/helpers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/managers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/mixins.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/runners.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/caches.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/consts.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/enums.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/errors.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/functions.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/helpers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/managers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/presenters.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/results.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/runners.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/strings.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/tests.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/validators.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/strategies.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/generators.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/helpers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/caches.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/consts.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/enums.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/errors.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/functions.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/helpers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/managers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/presenters.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/results.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/runners.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/strings.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/tests.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/validators.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/strategies.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/tests.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/consts.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/entities.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/enum_register/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/enum_register/mixins.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/enum_register/register.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/enums.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/caches.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/consts.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/enums.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/errors.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/functions.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/helpers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/managers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/presenters.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/requests.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/results.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/runners.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/strings.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/tests.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/validators.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/consts.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/generators.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/helpers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/strategies.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/__init__.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/apps.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/caches.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/consts.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/enums.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/errors.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/functions.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/helpers.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/managers.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/presenters.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/results.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/runners.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/strings.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/tests.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_collect_data_template/validators.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/__init__.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/apps.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/caches.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/consts.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/enums.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/errors.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/functions.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/helpers.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/managers.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/presenters.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/results.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/runners.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/strings.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/tests.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/function_export_data_template/validators.py-tpl +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/check_upload_status.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/collect_latest_models_data.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/collect_models_data.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/datamart_status.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/datamart_upload.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/export_entities_data.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/export_latest_entities_data.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/general.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/mapping.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0001_initial.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0004_uploaderclientlog.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0005_auto_20231204_1224.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0006_request_status_data.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0008_transferredentity.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/registry/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/signals.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/storages.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/__init__.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/actions.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/apps.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/enums.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/managers.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/ui.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/utils.py +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/dependency_links.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/namespace_packages.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/not-zip-safe +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/requires.txt +0 -0
- {edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/top_level.txt +0 -0
@@ -28,6 +28,48 @@
|
|
28
28
|
|
29
29
|
### Удалено
|
30
30
|
|
31
|
+
## 3.2.7 - 2024-07-31
|
32
|
+
Исправлен файл MANIFEST.in для включения в сборку js-шаблонов.
|
33
|
+
|
34
|
+
### Изменено
|
35
|
+
- [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
|
36
|
+
PATCH Добавлено включение js-шаблонов в сборку в файл MANIFEST.in
|
37
|
+
|
38
|
+
## 3.2.6 - 2024-07-23
|
39
|
+
Добавлен параметр export_off (Отключение экспорта для сущности) в модель TransferredEntity
|
40
|
+
Изменен порядок запуска сбора и экспорта по сущностям в периодической задаче TransferLatestEntitiesDataPeriodicTask
|
41
|
+
|
42
|
+
### Изменено
|
43
|
+
- [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
|
44
|
+
PATCH Добавлен параметр export_off в модель TransferredEntity и изменен порядок запуска сбора и экспорта в
|
45
|
+
TransferLatestEntitiesDataPeriodicTask.
|
46
|
+
|
47
|
+
|
48
|
+
## 3.2.5 - 2024-07-16
|
49
|
+
Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
|
50
|
+
|
51
|
+
### Изменено
|
52
|
+
- [EDUSCHL-22070](https://jira.bars.group/browse/EDUSCHL-22070)
|
53
|
+
PATCH Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
|
54
|
+
|
55
|
+
## 3.2.4 - 2024-07-16
|
56
|
+
Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
57
|
+
|
58
|
+
### Изменено
|
59
|
+
- [EDUSCHL-22217](https://jira.bars.group/browse/EDUSCHL-22217)
|
60
|
+
PATCH Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
61
|
+
В подзапросах отсутствовало условие фильтрации по статусу.
|
62
|
+
|
63
|
+
|
64
|
+
## 3.2.3 - 2024-06-06
|
65
|
+
Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
66
|
+
|
67
|
+
### Изменено
|
68
|
+
- [EDUSCHL-21804](https://jira.bars.group/browse/EDUSCHL-21804)
|
69
|
+
PATCH Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
70
|
+
Дата и время окончания предыдущего сбора/экспорта могла быть не корректно определена.
|
71
|
+
|
72
|
+
|
31
73
|
## 3.2.2 - 2024-05-21
|
32
74
|
Изменения в переодической задаче TransferLatestEntitiesDataPeriodicTask,
|
33
75
|
Изменено определение даты последнего успешного этапа сбора у менеджеров Функций сбора и экспорта.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: edu-rdm-integration
|
3
|
-
Version: 3.2.
|
3
|
+
Version: 3.2.7
|
4
4
|
Summary: Интеграция с Региональной витриной данных
|
5
5
|
Home-page:
|
6
6
|
Download-URL:
|
@@ -301,6 +301,48 @@ Requires-Dist: uploader-client<1,>=0.2.1
|
|
301
301
|
|
302
302
|
### Удалено
|
303
303
|
|
304
|
+
## 3.2.7 - 2024-07-31
|
305
|
+
Исправлен файл MANIFEST.in для включения в сборку js-шаблонов.
|
306
|
+
|
307
|
+
### Изменено
|
308
|
+
- [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
|
309
|
+
PATCH Добавлено включение js-шаблонов в сборку в файл MANIFEST.in
|
310
|
+
|
311
|
+
## 3.2.6 - 2024-07-23
|
312
|
+
Добавлен параметр export_off (Отключение экспорта для сущности) в модель TransferredEntity
|
313
|
+
Изменен порядок запуска сбора и экспорта по сущностям в периодической задаче TransferLatestEntitiesDataPeriodicTask
|
314
|
+
|
315
|
+
### Изменено
|
316
|
+
- [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
|
317
|
+
PATCH Добавлен параметр export_off в модель TransferredEntity и изменен порядок запуска сбора и экспорта в
|
318
|
+
TransferLatestEntitiesDataPeriodicTask.
|
319
|
+
|
320
|
+
|
321
|
+
## 3.2.5 - 2024-07-16
|
322
|
+
Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
|
323
|
+
|
324
|
+
### Изменено
|
325
|
+
- [EDUSCHL-22070](https://jira.bars.group/browse/EDUSCHL-22070)
|
326
|
+
PATCH Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
|
327
|
+
|
328
|
+
## 3.2.4 - 2024-07-16
|
329
|
+
Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
330
|
+
|
331
|
+
### Изменено
|
332
|
+
- [EDUSCHL-22217](https://jira.bars.group/browse/EDUSCHL-22217)
|
333
|
+
PATCH Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
334
|
+
В подзапросах отсутствовало условие фильтрации по статусу.
|
335
|
+
|
336
|
+
|
337
|
+
## 3.2.3 - 2024-06-06
|
338
|
+
Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
339
|
+
|
340
|
+
### Изменено
|
341
|
+
- [EDUSCHL-21804](https://jira.bars.group/browse/EDUSCHL-21804)
|
342
|
+
PATCH Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
343
|
+
Дата и время окончания предыдущего сбора/экспорта могла быть не корректно определена.
|
344
|
+
|
345
|
+
|
304
346
|
## 3.2.2 - 2024-05-21
|
305
347
|
Изменения в переодической задаче TransferLatestEntitiesDataPeriodicTask,
|
306
348
|
Изменено определение даты последнего успешного этапа сбора у менеджеров Функций сбора и экспорта.
|
@@ -300,6 +300,13 @@ class BaseCollectLatestModelsData(BaseCollectModelsData):
|
|
300
300
|
Сбор данных моделей РВД на основе логов за период с последней сборки до указанной даты.
|
301
301
|
"""
|
302
302
|
|
303
|
+
def __init__(self, *args, use_times_limit: bool = False, **kwargs):
|
304
|
+
super().__init__(*args, **kwargs)
|
305
|
+
|
306
|
+
# Если этот параметр не указан - то высчитываем временные рамки по менеджеру, не учитывая переданные
|
307
|
+
# logs_period_started_at и logs_period_ended_at
|
308
|
+
self.use_times_limit = use_times_limit
|
309
|
+
|
303
310
|
def _has_stage_created_or_in_progress(self, manager_id: str, model: str) -> bool:
|
304
311
|
"""Проверяет есть ли готовый к работе stage или в работе для данной модели."""
|
305
312
|
stage_created_or_in_progress = CollectingExportedDataStage.objects.filter(
|
@@ -318,22 +325,17 @@ class BaseCollectLatestModelsData(BaseCollectModelsData):
|
|
318
325
|
"""
|
319
326
|
logger.info('collect models data..')
|
320
327
|
|
321
|
-
|
328
|
+
managers_last_period_ended_at = get_collecting_managers_max_period_ended_dates(
|
322
329
|
self._collecting_data_managers.values()
|
323
330
|
)
|
324
331
|
|
325
332
|
for model_key, manager_class in self._collecting_data_managers.items():
|
326
333
|
model_logs = logs.get(model_key) if logs else None
|
327
|
-
|
328
|
-
|
329
|
-
kwargs['logs_period_started_at'] = (
|
330
|
-
manager_max_dates.get('max_period_ended_at')
|
331
|
-
or get_today_min_datetime()
|
332
|
-
)
|
333
|
-
kwargs['logs_period_ended_at'] = timezone.now()
|
334
|
+
manager_last_period_ended_at = managers_last_period_ended_at.get(manager_class.uuid)
|
334
335
|
|
335
|
-
|
336
|
-
|
336
|
+
kwargs['logs_period_started_at'] = self.logs_period_started_at if self.use_times_limit else (
|
337
|
+
manager_last_period_ended_at or get_today_min_datetime())
|
338
|
+
kwargs['logs_period_ended_at'] = self.logs_period_ended_at if self.use_times_limit else timezone.now()
|
337
339
|
|
338
340
|
manager = manager_class(*args, logs=model_logs, **kwargs)
|
339
341
|
|
@@ -367,19 +367,16 @@ class BaseExportLatestEntitiesData(BaseExportEntitiesData):
|
|
367
367
|
# Массив с выгружаемыми сущностями для поля "Описание" в асинхронной задаче
|
368
368
|
exported_entities = []
|
369
369
|
|
370
|
-
|
370
|
+
managers_max_period_ended = get_exporting_managers_max_period_ended_dates(
|
371
371
|
self._exporting_data_managers
|
372
372
|
)
|
373
373
|
|
374
374
|
for manager_class in self._exporting_data_managers:
|
375
|
-
|
375
|
+
manager_last_exported = managers_max_period_ended.get(manager_class.uuid)
|
376
376
|
|
377
|
-
kwargs['period_started_at'] =
|
377
|
+
kwargs['period_started_at'] = manager_last_exported or timezone.now()
|
378
378
|
kwargs['period_ended_at'] = get_today_max_datetime()
|
379
379
|
|
380
|
-
if kwargs['period_started_at'] > kwargs['period_ended_at']:
|
381
|
-
kwargs['period_started_at'] = manager_max_dates['max_started_at']
|
382
|
-
|
383
380
|
# Обновить поля modified у модели сущности:
|
384
381
|
self._update_model_modified_field(
|
385
382
|
manager_id=manager_class.uuid,
|
@@ -25,11 +25,13 @@ from django.db import (
|
|
25
25
|
)
|
26
26
|
from django.db.models import (
|
27
27
|
CharField,
|
28
|
-
|
28
|
+
OuterRef,
|
29
29
|
QuerySet,
|
30
|
+
Subquery,
|
30
31
|
)
|
31
32
|
from django.db.models.functions import (
|
32
33
|
Cast,
|
34
|
+
Least,
|
33
35
|
)
|
34
36
|
|
35
37
|
from educommon import (
|
@@ -304,51 +306,49 @@ def save_command_log_link(
|
|
304
306
|
|
305
307
|
def get_collecting_managers_max_period_ended_dates(
|
306
308
|
collecting_managers: Iterable['BaseCollectingExportedDataRunnerManager'],
|
307
|
-
) -> Dict[str,
|
308
|
-
"""Возвращает
|
309
|
-
|
310
|
-
status_id=CollectingDataStageStatus.FINISHED.key,
|
309
|
+
) -> Dict[str, 'datetime']:
|
310
|
+
"""Возвращает дату и время завершения последнего успешного этапа сбора для менеджеров Функций сбора."""
|
311
|
+
managers_last_period_ended = CollectingExportedDataStage.objects.filter(
|
311
312
|
manager_id__in=[manager.uuid for manager in collecting_managers],
|
312
|
-
|
313
|
-
|
313
|
+
id=Subquery(
|
314
|
+
CollectingExportedDataStage.objects.filter(
|
315
|
+
manager_id=OuterRef('manager_id'),
|
316
|
+
status_id=CollectingDataStageStatus.FINISHED.key,
|
317
|
+
).order_by('-id').values('id')[:1]
|
318
|
+
),
|
314
319
|
).annotate(
|
315
320
|
str_manager_id=Cast('manager_id', output_field=CharField()),
|
316
|
-
|
317
|
-
max_started_at=Max('started_at'),
|
321
|
+
last_period_ended_at=Least('logs_period_ended_at', 'started_at'),
|
318
322
|
).values_list(
|
319
|
-
'str_manager_id', '
|
323
|
+
'str_manager_id', 'last_period_ended_at',
|
320
324
|
)
|
321
325
|
|
322
326
|
return {
|
323
|
-
manager_id:
|
324
|
-
|
325
|
-
'max_started_at': max_started_at,
|
326
|
-
}
|
327
|
-
for manager_id, max_period_ended_at, max_started_at in managers_max_period_ended_dates
|
327
|
+
manager_id: last_period_ended_at
|
328
|
+
for manager_id, last_period_ended_at in managers_last_period_ended
|
328
329
|
}
|
329
330
|
|
330
331
|
|
331
332
|
def get_exporting_managers_max_period_ended_dates(
|
332
333
|
exporting_managers: Iterable['BaseExportDataRunnerManager'],
|
333
|
-
) -> Dict[str,
|
334
|
-
"""Возвращает
|
335
|
-
|
336
|
-
status_id=ExportingDataStageStatus.FINISHED.key,
|
334
|
+
) -> Dict[str, 'datetime']:
|
335
|
+
"""Возвращает дату и время последнего успешного этапа экспорта для менеджеров Функций экспорта."""
|
336
|
+
managers_last_period_ended = ExportingDataStage.objects.filter(
|
337
337
|
manager_id__in=[manager.uuid for manager in exporting_managers],
|
338
|
-
|
339
|
-
|
338
|
+
id=Subquery(
|
339
|
+
ExportingDataStage.objects.filter(
|
340
|
+
manager_id=OuterRef('manager_id'),
|
341
|
+
status_id=ExportingDataStageStatus.FINISHED.key,
|
342
|
+
).order_by('-id').values('id')[:1]
|
343
|
+
),
|
340
344
|
).annotate(
|
341
345
|
str_manager_id=Cast('manager_id', output_field=CharField()),
|
342
|
-
|
343
|
-
max_started_at=Max('started_at'),
|
346
|
+
last_period_ended_at=Least('period_ended_at', 'started_at'),
|
344
347
|
).values_list(
|
345
|
-
'str_manager_id', '
|
348
|
+
'str_manager_id', 'last_period_ended_at',
|
346
349
|
)
|
347
350
|
|
348
351
|
return {
|
349
|
-
manager_id:
|
350
|
-
|
351
|
-
'max_started_at': max_started_at,
|
352
|
-
}
|
353
|
-
for manager_id, max_period_ended_at, max_started_at in managers_max_period_ended_dates
|
352
|
+
manager_id: last_period_ended_at
|
353
|
+
for manager_id, last_period_ended_at in managers_last_period_ended
|
354
354
|
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Generated by Django 3.1.14 on 2024-07-24 09:14
|
2
|
+
|
3
|
+
from django.db import (
|
4
|
+
migrations,
|
5
|
+
models,
|
6
|
+
)
|
7
|
+
|
8
|
+
|
9
|
+
class Migration(migrations.Migration):
|
10
|
+
|
11
|
+
dependencies = [
|
12
|
+
('edu_rdm_integration', '0008_transferredentity'),
|
13
|
+
]
|
14
|
+
|
15
|
+
operations = [
|
16
|
+
migrations.AddField(
|
17
|
+
model_name='transferredentity',
|
18
|
+
name='export_enabled',
|
19
|
+
field=models.BooleanField(default=True, verbose_name='Включение экспорта для сущности'),
|
20
|
+
),
|
21
|
+
]
|
@@ -34,6 +34,9 @@ from django.utils import (
|
|
34
34
|
from django.utils.functional import (
|
35
35
|
cached_property,
|
36
36
|
)
|
37
|
+
from m3 import (
|
38
|
+
json_encode,
|
39
|
+
)
|
37
40
|
from m3.db import (
|
38
41
|
BaseObjectModel,
|
39
42
|
)
|
@@ -906,8 +909,16 @@ class TransferredEntity(BaseObjectModel):
|
|
906
909
|
verbose_name='Сущность',
|
907
910
|
on_delete=CASCADE,
|
908
911
|
)
|
912
|
+
export_enabled = BooleanField(
|
913
|
+
verbose_name='Включение экспорта для сущности',
|
914
|
+
default=True,
|
915
|
+
)
|
909
916
|
|
910
917
|
class Meta:
|
911
918
|
db_table = 'rdm_transferred_entity'
|
912
919
|
verbose_name = 'Сущность, по которой должен быть произведен сбор и экспорт данных'
|
913
920
|
verbose_name_plural = 'Сущности, по которым должен быть произведен сбор и экспорт данных'
|
921
|
+
|
922
|
+
@json_encode
|
923
|
+
def no_export(self):
|
924
|
+
return 'Нет' if self.export_enabled else 'Да'
|
{edu-rdm-integration-3.2.2 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/registry/actions.py
RENAMED
@@ -17,6 +17,9 @@ from edu_rdm_integration.models import (
|
|
17
17
|
RegionalDataMartEntityEnum,
|
18
18
|
TransferredEntity,
|
19
19
|
)
|
20
|
+
from edu_rdm_integration.registry.ui import (
|
21
|
+
TransferredEntityListWindow,
|
22
|
+
)
|
20
23
|
|
21
24
|
|
22
25
|
class EntitySelectPack(ObjectPack):
|
@@ -65,6 +68,25 @@ class TransferredEntityAddWindowAction(SelectorWindowAction):
|
|
65
68
|
return win
|
66
69
|
|
67
70
|
|
71
|
+
class TransferredEntityExportChangeAction(BaseAction):
|
72
|
+
"""Экшен смены статуса экспорта выбранных сущностей."""
|
73
|
+
|
74
|
+
def context_declaration(self):
|
75
|
+
"""Объявляет контекст экшна."""
|
76
|
+
return {
|
77
|
+
'ids': {'type': 'int_list', 'default': []},
|
78
|
+
'export_enabled': {'type': 'boolean', 'default': True}
|
79
|
+
}
|
80
|
+
|
81
|
+
def run(self, request, context):
|
82
|
+
"""Обеспечивает выполнение запроса."""
|
83
|
+
self.parent.model.objects.filter(
|
84
|
+
id__in=context.ids
|
85
|
+
).update(export_enabled=context.export_enabled)
|
86
|
+
|
87
|
+
return OperationResult(success=True)
|
88
|
+
|
89
|
+
|
68
90
|
class TransferredEntitySaveAction(BaseAction):
|
69
91
|
"""Экшн сохранения выбранных сущностей для сбора и экспорта данных."""
|
70
92
|
|
@@ -95,6 +117,7 @@ class TransferredEntityPack(ObjectPack):
|
|
95
117
|
list_sort_order = ('entity__order_number', )
|
96
118
|
|
97
119
|
need_check_permission = True
|
120
|
+
list_window = TransferredEntityListWindow
|
98
121
|
|
99
122
|
columns = [
|
100
123
|
{
|
@@ -105,6 +128,10 @@ class TransferredEntityPack(ObjectPack):
|
|
105
128
|
'data_index': 'entity.title',
|
106
129
|
'header': 'Описание',
|
107
130
|
},
|
131
|
+
{
|
132
|
+
'data_index': 'no_export',
|
133
|
+
'header': 'Отключение экспорта',
|
134
|
+
}
|
108
135
|
]
|
109
136
|
|
110
137
|
def __init__(self):
|
@@ -116,6 +143,10 @@ class TransferredEntityPack(ObjectPack):
|
|
116
143
|
self.save_entity_action = TransferredEntitySaveAction()
|
117
144
|
self.replace_action('save_action', self.save_entity_action)
|
118
145
|
|
146
|
+
self.export_change_action = TransferredEntityExportChangeAction()
|
147
|
+
|
148
|
+
self.actions.append(self.export_change_action)
|
149
|
+
|
119
150
|
def configure_grid(self, grid, *args, **kwargs):
|
120
151
|
"""Конфигурирует грид."""
|
121
152
|
super().configure_grid(grid, *args, **kwargs)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
from objectpack.ui import (
|
2
|
+
BaseListWindow,
|
3
|
+
)
|
4
|
+
from m3_ext.ui.all_components import (
|
5
|
+
ExtButton,
|
6
|
+
)
|
7
|
+
from educommon.utils.ui import (
|
8
|
+
append_template_globals,
|
9
|
+
)
|
10
|
+
|
11
|
+
class TransferredEntityListWindow(BaseListWindow):
|
12
|
+
"""Окно реестра сущностей для сбора и экспорта данных."""
|
13
|
+
|
14
|
+
def _init_components(self):
|
15
|
+
"""Инициализация компонентов окна."""
|
16
|
+
super()._init_components()
|
17
|
+
|
18
|
+
self.export_off_button = ExtButton(
|
19
|
+
text='Отключить экспорт', handler='offExport'
|
20
|
+
)
|
21
|
+
self.export_on_button = ExtButton(
|
22
|
+
text='Включить экспорт', handler='onExport'
|
23
|
+
)
|
24
|
+
|
25
|
+
def _do_layout(self):
|
26
|
+
"""Размещение компонентов окна на форме."""
|
27
|
+
super()._do_layout()
|
28
|
+
|
29
|
+
self.grid.top_bar.items.extend((self.export_off_button, self.export_on_button))
|
30
|
+
|
31
|
+
def set_params(self, params, *args, **kwargs):
|
32
|
+
"""Настройка окна."""
|
33
|
+
super().set_params(params, *args, **kwargs)
|
34
|
+
|
35
|
+
append_template_globals(self, 'ui-js/transferred-entity-list.js')
|
36
|
+
self.export_change_action_url = (
|
37
|
+
params['pack'].export_change_action.get_absolute_url()
|
38
|
+
)
|
39
|
+
self.pack = params['pack']
|
@@ -1,6 +1,3 @@
|
|
1
|
-
from itertools import (
|
2
|
-
chain,
|
3
|
-
)
|
4
1
|
from typing import (
|
5
2
|
TYPE_CHECKING,
|
6
3
|
Dict,
|
@@ -18,16 +15,10 @@ from celery.schedules import (
|
|
18
15
|
from django.conf import (
|
19
16
|
settings,
|
20
17
|
)
|
21
|
-
from django.db.models import (
|
22
|
-
CharField,
|
23
|
-
Max,
|
24
|
-
)
|
25
|
-
from django.db.models.functions import (
|
26
|
-
Cast,
|
27
|
-
)
|
28
18
|
from django.utils import (
|
29
19
|
timezone,
|
30
20
|
)
|
21
|
+
|
31
22
|
from educommon.async_task.locker import (
|
32
23
|
TaskLocker,
|
33
24
|
)
|
@@ -71,9 +62,9 @@ from edu_rdm_integration.export_data.helpers import (
|
|
71
62
|
set_failed_status_suspended_exporting_data_stages,
|
72
63
|
)
|
73
64
|
from edu_rdm_integration.helpers import (
|
65
|
+
UploadStatusHelper,
|
74
66
|
get_collecting_managers_max_period_ended_dates,
|
75
67
|
get_exporting_managers_max_period_ended_dates,
|
76
|
-
UploadStatusHelper,
|
77
68
|
save_command_log_link,
|
78
69
|
)
|
79
70
|
from edu_rdm_integration.models import (
|
@@ -85,6 +76,7 @@ from edu_rdm_integration.storages import (
|
|
85
76
|
RegionalDataMartEntityStorage,
|
86
77
|
)
|
87
78
|
|
79
|
+
|
88
80
|
if TYPE_CHECKING:
|
89
81
|
from datetime import (
|
90
82
|
datetime,
|
@@ -230,17 +222,17 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
|
|
230
222
|
pk=self.request.id,
|
231
223
|
).values_list('pk', flat=True).first()
|
232
224
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
)
|
237
|
-
|
238
|
-
filtered_model_enum_values = filter(lambda model: model.order_number != DEFAULT_ORDER_NUMBER, model_enum_values)
|
239
|
-
for model_enum_value in filtered_model_enum_values:
|
240
|
-
self._run_collect_model_data(model_enum_value.key, task_id)
|
225
|
+
for entity_data in self._transferred_entities:
|
226
|
+
for model_enum_value in entity_data['collected_models']:
|
227
|
+
self._run_collect_model_data(model_enum_value.key, task_id)
|
241
228
|
|
242
|
-
|
243
|
-
|
229
|
+
# Перехватывем ошибку экспорта для того, чтобы не останавливать сборку и экспорт остальных сущностей
|
230
|
+
try:
|
231
|
+
entity_enum_value = entity_data['exported_entity']
|
232
|
+
if entity_enum_value:
|
233
|
+
self._run_export_entity_data(entity_enum_value.key, task_id)
|
234
|
+
except Exception:
|
235
|
+
continue
|
244
236
|
|
245
237
|
def _run_collect_model_data(self, model: str, task_id: str) -> None:
|
246
238
|
"""Запускает сбор данных модели РВД."""
|
@@ -263,10 +255,24 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
|
|
263
255
|
|
264
256
|
def _collect_transferred_entities(self) -> None:
|
265
257
|
"""Собирает сущности РВД, по которым будет произведен сбор и экспорт данных."""
|
266
|
-
|
267
|
-
RegionalDataMartEntityEnum.get_model_enum_value(key=entity)
|
268
|
-
for entity in TransferredEntity.objects.values_list('entity',
|
258
|
+
entities = [
|
259
|
+
(RegionalDataMartEntityEnum.get_model_enum_value(key=entity), export_enabled)
|
260
|
+
for entity, export_enabled in TransferredEntity.objects.values_list('entity', 'export_enabled')
|
269
261
|
]
|
262
|
+
collected_entity_models = set()
|
263
|
+
# Собираем словарь по сущностям с учетом порядка выгрузки
|
264
|
+
for entity_enum, export_enabled in sorted(
|
265
|
+
entities, key=lambda entity: entity[0].order_number):
|
266
|
+
model_enums = [
|
267
|
+
model_enum for model_enum in (entity_enum.main_model_enum, *entity_enum.additional_model_enums)
|
268
|
+
if (model_enum not in collected_entity_models and model_enum.order_number != DEFAULT_ORDER_NUMBER)
|
269
|
+
]
|
270
|
+
entity_data = {
|
271
|
+
'collected_models': model_enums,
|
272
|
+
'exported_entity': entity_enum if export_enabled else None,
|
273
|
+
}
|
274
|
+
self._transferred_entities.append(entity_data)
|
275
|
+
collected_entity_models.update(model_enums)
|
270
276
|
|
271
277
|
def _collect_managers(self) -> None:
|
272
278
|
"""Собирает менеджеры Функций для сбора и выгрузки данных."""
|
@@ -281,14 +287,16 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
|
|
281
287
|
)
|
282
288
|
|
283
289
|
for transferred_entity in self._transferred_entities:
|
284
|
-
for model in
|
290
|
+
for model in transferred_entity['collected_models']:
|
285
291
|
collect_manager_class = collecting_models_data_managers_map.get(model.key)
|
286
292
|
if collect_manager_class:
|
287
293
|
self._collecting_data_managers[model.key] = collect_manager_class
|
288
294
|
|
289
|
-
|
290
|
-
if
|
291
|
-
|
295
|
+
entity = transferred_entity['exported_entity']
|
296
|
+
if entity:
|
297
|
+
export_manager_class = exporting_entities_data_managers_map.get(entity.key)
|
298
|
+
if export_manager_class:
|
299
|
+
self._exporting_data_managers[entity.key] = export_manager_class
|
292
300
|
|
293
301
|
def _calculate_collecting_managers_logs_period_ended_at(self) -> None:
|
294
302
|
"""Определяет дату последнего успешного этапа сбора у менеджеров Функций сбора."""
|
@@ -310,12 +318,9 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
|
|
310
318
|
or get_today_min_datetime()
|
311
319
|
)
|
312
320
|
|
313
|
-
period_started_at = manager_last_collected
|
321
|
+
period_started_at = manager_last_collected
|
314
322
|
period_ended_at = timezone.now()
|
315
323
|
|
316
|
-
if period_started_at >= period_ended_at:
|
317
|
-
period_started_at = manager_last_collected['max_started_at']
|
318
|
-
|
319
324
|
return EduRdmCollectDataCommandProgress.objects.create(
|
320
325
|
model_id=model,
|
321
326
|
logs_period_started_at=period_started_at,
|
@@ -330,12 +335,9 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
|
|
330
335
|
manager_last_exported = self._exporting_data_manager_to_period_end.get(manager.uuid)
|
331
336
|
|
332
337
|
if manager_last_exported:
|
333
|
-
period_started_at = manager_last_exported
|
338
|
+
period_started_at = manager_last_exported
|
334
339
|
period_ended_at = timezone.now()
|
335
340
|
|
336
|
-
if period_started_at >= period_ended_at:
|
337
|
-
period_started_at = manager_last_exported['max_started_at']
|
338
|
-
|
339
341
|
return EduRdmExportDataCommandProgress.objects.create(
|
340
342
|
entity_id=entity,
|
341
343
|
period_started_at=period_started_at,
|
@@ -354,6 +356,7 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
|
|
354
356
|
logs_period_started_at=command.logs_period_started_at,
|
355
357
|
logs_period_ended_at=command.logs_period_ended_at,
|
356
358
|
command_id=command.id,
|
359
|
+
use_times_limit=True,
|
357
360
|
)
|
358
361
|
|
359
362
|
def _prepare_export_entity_data_class(self, command: EduRdmExportDataCommandProgress) -> ExportLatestEntitiesData:
|
@@ -0,0 +1,37 @@
|
|
1
|
+
var grid = Ext.getCmp('{{component.grid.client_id}}');
|
2
|
+
|
3
|
+
function changeExport(bool_value){
|
4
|
+
var selections = grid.selModel.getSelections();
|
5
|
+
var selections_len = selections.length;
|
6
|
+
|
7
|
+
if (selections_len){
|
8
|
+
var selected_ids = [];
|
9
|
+
for (var i = 0; i < selections_len; i += 1) {
|
10
|
+
selected_ids.push(selections[i].id);
|
11
|
+
}
|
12
|
+
var params = {'export_enabled': bool_value};
|
13
|
+
params['ids'] = selected_ids.join(',');
|
14
|
+
Ext.Ajax.request({
|
15
|
+
url: '{{component.export_change_action_url}}',
|
16
|
+
method: 'POST',
|
17
|
+
params: params,
|
18
|
+
success: function(res, opt){
|
19
|
+
if (Ext.util.JSON.decode(res.responseText).success) {
|
20
|
+
grid.refreshStore();
|
21
|
+
}
|
22
|
+
smart_eval(res.responseText);
|
23
|
+
},
|
24
|
+
failure: Ext.emptyFn
|
25
|
+
});
|
26
|
+
} else {
|
27
|
+
Ext.Msg.alert('Внимание!', 'Выберите Сущность для выключения экспорта!');
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
function offExport(){
|
32
|
+
changeExport(false)
|
33
|
+
}
|
34
|
+
|
35
|
+
function onExport(){
|
36
|
+
changeExport(true)
|
37
|
+
}
|