edu-rdm-integration 3.2.3__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.3 → edu-rdm-integration-3.2.7}/CHANGELOG.md +32 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/MANIFEST.in +1 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/PKG-INFO +33 -1
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/setup.py +1 -1
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/collect.py +10 -2
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/helpers.py +4 -4
- edu-rdm-integration-3.2.7/src/edu_rdm_integration/migrations/0009_transferredentity_export_enabled.py +21 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/models.py +11 -0
- {edu-rdm-integration-3.2.3 → 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.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/tasks.py +37 -28
- 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.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/PKG-INFO +33 -1
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/SOURCES.txt +5 -1
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/CONDUCT.md +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/LICENSE +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/README.md +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/pyproject.toml +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/dependencies/development_packages.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/dependencies/external_packages.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/dependencies/internal_packages.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/dependencies/internal_sources.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/dependencies/production_packages.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/dependencies/system_packages.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/dependencies/testing_packages.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/development.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/production.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/requirements/stage.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/setup.cfg +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/apps.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/caches.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/consts.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/enums.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/errors.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/functions.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/helpers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/managers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/presenters.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/receivers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/results.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/runners.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/strategies.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/strings.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/tests.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/adapters/validators.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/app_meta.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/app_settings.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/apps.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/base.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/apps.py +0 -0
- {edu-rdm-integration-3.2.3 → 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.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/migrations/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/models.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_and_export_data/utils.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/caches.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/functions.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/helpers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/managers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/mixins.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/base/runners.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/caches.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/consts.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/enums.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/errors.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/functions.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/helpers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/managers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/presenters.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/results.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/runners.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/strings.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/tests.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/base/validators.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/calculated/strategies.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/generators.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/helpers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/caches.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/consts.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/enums.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/errors.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/functions.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/helpers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/managers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/presenters.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/results.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/runners.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/strings.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/tests.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/base/validators.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/non_calculated/strategies.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/collect_data/tests.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/consts.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/entities.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/enum_register/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/enum_register/mixins.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/enum_register/register.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/enums.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/caches.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/consts.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/enums.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/errors.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/functions.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/helpers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/managers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/presenters.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/requests.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/results.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/runners.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/strings.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/tests.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/base/validators.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/consts.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/export.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/generators.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/helpers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/export_data/strategies.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/function_templates/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → 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.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/check_upload_status.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/collect_latest_models_data.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/collect_models_data.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/datamart_status.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/datamart_upload.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/export_entities_data.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/commands/export_latest_entities_data.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/management/general.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/mapping.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0001_initial.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +0 -0
- {edu-rdm-integration-3.2.3 → 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.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0004_uploaderclientlog.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0005_auto_20231204_1224.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0006_request_status_data.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/0008_transferredentity.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/migrations/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/registry/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/signals.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/storages.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/__init__.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/actions.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/apps.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/enums.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/managers.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/uploader_log/ui.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration/utils.py +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/dependency_links.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/namespace_packages.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/not-zip-safe +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/requires.txt +0 -0
- {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.7}/src/edu_rdm_integration.egg-info/top_level.txt +0 -0
@@ -28,6 +28,38 @@
|
|
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
|
+
|
31
63
|
|
32
64
|
## 3.2.3 - 2024-06-06
|
33
65
|
Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
@@ -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,38 @@ 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
|
+
|
304
336
|
|
305
337
|
## 3.2.3 - 2024-06-06
|
306
338
|
Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
|
@@ -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(
|
@@ -326,8 +333,9 @@ class BaseCollectLatestModelsData(BaseCollectModelsData):
|
|
326
333
|
model_logs = logs.get(model_key) if logs else None
|
327
334
|
manager_last_period_ended_at = managers_last_period_ended_at.get(manager_class.uuid)
|
328
335
|
|
329
|
-
kwargs['logs_period_started_at'] =
|
330
|
-
|
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()
|
331
339
|
|
332
340
|
manager = manager_class(*args, logs=model_logs, **kwargs)
|
333
341
|
|
@@ -309,11 +309,11 @@ def get_collecting_managers_max_period_ended_dates(
|
|
309
309
|
) -> Dict[str, 'datetime']:
|
310
310
|
"""Возвращает дату и время завершения последнего успешного этапа сбора для менеджеров Функций сбора."""
|
311
311
|
managers_last_period_ended = CollectingExportedDataStage.objects.filter(
|
312
|
-
status_id=CollectingDataStageStatus.FINISHED.key,
|
313
312
|
manager_id__in=[manager.uuid for manager in collecting_managers],
|
314
313
|
id=Subquery(
|
315
314
|
CollectingExportedDataStage.objects.filter(
|
316
|
-
manager_id=OuterRef('manager_id')
|
315
|
+
manager_id=OuterRef('manager_id'),
|
316
|
+
status_id=CollectingDataStageStatus.FINISHED.key,
|
317
317
|
).order_by('-id').values('id')[:1]
|
318
318
|
),
|
319
319
|
).annotate(
|
@@ -334,11 +334,11 @@ def get_exporting_managers_max_period_ended_dates(
|
|
334
334
|
) -> Dict[str, 'datetime']:
|
335
335
|
"""Возвращает дату и время последнего успешного этапа экспорта для менеджеров Функций экспорта."""
|
336
336
|
managers_last_period_ended = ExportingDataStage.objects.filter(
|
337
|
-
status_id=ExportingDataStageStatus.FINISHED.key,
|
338
337
|
manager_id__in=[manager.uuid for manager in exporting_managers],
|
339
338
|
id=Subquery(
|
340
339
|
ExportingDataStage.objects.filter(
|
341
|
-
manager_id=OuterRef('manager_id')
|
340
|
+
manager_id=OuterRef('manager_id'),
|
341
|
+
status_id=ExportingDataStageStatus.FINISHED.key,
|
342
342
|
).order_by('-id').values('id')[:1]
|
343
343
|
),
|
344
344
|
).annotate(
|
@@ -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.3 → 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
|
"""Определяет дату последнего успешного этапа сбора у менеджеров Функций сбора."""
|
@@ -348,6 +356,7 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
|
|
348
356
|
logs_period_started_at=command.logs_period_started_at,
|
349
357
|
logs_period_ended_at=command.logs_period_ended_at,
|
350
358
|
command_id=command.id,
|
359
|
+
use_times_limit=True,
|
351
360
|
)
|
352
361
|
|
353
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
|
+
}
|
@@ -0,0 +1,185 @@
|
|
1
|
+
function onObjGridAction(grid, actionUrl) {
|
2
|
+
assert(grid, 'grid is not define');
|
3
|
+
assert(actionUrl, 'actionUrl is not define');
|
4
|
+
var mask = new Ext.LoadMask(grid.body),
|
5
|
+
params = grid.getMainContext();
|
6
|
+
params[grid.rowIdName] = '';
|
7
|
+
params = Ext.apply(params, getGridParams(grid));
|
8
|
+
|
9
|
+
grid.getStore()
|
10
|
+
|
11
|
+
var req = {
|
12
|
+
url: actionUrl,
|
13
|
+
params: params,
|
14
|
+
success: function(res, opt){
|
15
|
+
if (scope.fireEvent('afternewrequest', scope, res, opt)) {
|
16
|
+
try {
|
17
|
+
var child_win = scope.onNewRecordWindowOpenHandler(res, opt);
|
18
|
+
} finally {
|
19
|
+
mask.hide();
|
20
|
+
}
|
21
|
+
return child_win;
|
22
|
+
}
|
23
|
+
mask.hide();
|
24
|
+
}
|
25
|
+
,failure: function(){
|
26
|
+
uiAjaxFailMessage.apply(this, arguments);
|
27
|
+
mask.hide();
|
28
|
+
|
29
|
+
}
|
30
|
+
};
|
31
|
+
|
32
|
+
if (grid.fireEvent('beforenewrequest', grid, req)) {
|
33
|
+
var scope = grid;
|
34
|
+
|
35
|
+
mask.show();
|
36
|
+
Ext.Ajax.request(req);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
function onObjGridOneRecordAction(grid, actionName, actionUrl) {
|
41
|
+
assert(grid, 'grid is not define');
|
42
|
+
assert(actionName, 'actionName is not define');
|
43
|
+
assert(actionUrl, 'actionUrl is not define');
|
44
|
+
assert(grid.rowIdName, 'rowIdName is not define');
|
45
|
+
|
46
|
+
if (grid.getSelectionModel().hasSelection()) {
|
47
|
+
// при локальном редактировании запросим также текущую строку
|
48
|
+
var baseConf = grid.getSelectionContext(grid.localEdit);
|
49
|
+
// грязный хак
|
50
|
+
if (String(baseConf[grid.rowIdName]).indexOf(",") != -1) {
|
51
|
+
Ext.Msg.show({
|
52
|
+
title: actionName,
|
53
|
+
msg: 'Для выполнения действия должен быть выбран только один элемент.',
|
54
|
+
buttons: Ext.Msg.OK,
|
55
|
+
icon: Ext.MessageBox.INFO
|
56
|
+
});
|
57
|
+
} else {
|
58
|
+
var mask = new Ext.LoadMask(grid.body);
|
59
|
+
var req = {
|
60
|
+
url: actionUrl,
|
61
|
+
params: baseConf,
|
62
|
+
success: function(res, opt){
|
63
|
+
if (scope.fireEvent('aftereditrequest', scope, res, opt)) {
|
64
|
+
try {
|
65
|
+
var child_win = scope.onEditRecordWindowOpenHandler(res, opt);
|
66
|
+
} finally {
|
67
|
+
mask.hide();
|
68
|
+
}
|
69
|
+
return child_win;
|
70
|
+
}
|
71
|
+
mask.hide();
|
72
|
+
}
|
73
|
+
,failure: function(){
|
74
|
+
uiAjaxFailMessage.apply(this, arguments);
|
75
|
+
mask.hide();
|
76
|
+
}
|
77
|
+
};
|
78
|
+
|
79
|
+
if (grid.fireEvent('beforeeditrequest', grid, req)) {
|
80
|
+
var scope = grid;
|
81
|
+
|
82
|
+
mask.show();
|
83
|
+
Ext.Ajax.request(req);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
} else {
|
87
|
+
Ext.Msg.show({
|
88
|
+
title: actionName,
|
89
|
+
msg: 'Элемент не выбран',
|
90
|
+
buttons: Ext.Msg.OK,
|
91
|
+
icon: Ext.MessageBox.INFO
|
92
|
+
});
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
function onObjGridMultiRecordAction(
|
97
|
+
grid, actionName, actionUrl, isConfirmRequired
|
98
|
+
) {
|
99
|
+
assert(grid, 'grid is not define');
|
100
|
+
assert(actionName, 'actionName is not define');
|
101
|
+
assert(actionUrl, 'actionUrl is not define');
|
102
|
+
assert(grid.rowIdName, 'rowIdName is not define');
|
103
|
+
|
104
|
+
var scope = grid;
|
105
|
+
if (scope.getSelectionModel().hasSelection()) {
|
106
|
+
var request = function(btn, text, opt){
|
107
|
+
if (btn === 'yes') {
|
108
|
+
var baseConf = scope.getSelectionContext(scope.localEdit);
|
109
|
+
var mask = new Ext.LoadMask(scope.body);
|
110
|
+
var req = {
|
111
|
+
url: actionUrl,
|
112
|
+
params: baseConf,
|
113
|
+
success: function(res, opt){
|
114
|
+
if (scope.fireEvent('afterdeleterequest', scope, res, opt)) {
|
115
|
+
try {
|
116
|
+
var child_win = scope.deleteOkHandler(res, opt);
|
117
|
+
} finally {
|
118
|
+
mask.hide();
|
119
|
+
}
|
120
|
+
return child_win;
|
121
|
+
}
|
122
|
+
mask.hide();
|
123
|
+
}
|
124
|
+
,failure: function(){
|
125
|
+
uiAjaxFailMessage.apply(this, arguments);
|
126
|
+
mask.hide();
|
127
|
+
}
|
128
|
+
};
|
129
|
+
if (scope.fireEvent('beforedeleterequest', scope, req)) {
|
130
|
+
|
131
|
+
mask.show();
|
132
|
+
Ext.Ajax.request(req);
|
133
|
+
}
|
134
|
+
}
|
135
|
+
}
|
136
|
+
if (isConfirmRequired) {
|
137
|
+
Ext.Msg.show({
|
138
|
+
title: actionName,
|
139
|
+
msg: 'Вы действительно хотите выполнить '
|
140
|
+
+ actionName + 'для выбранной записи?',
|
141
|
+
icon: Ext.Msg.QUESTION,
|
142
|
+
buttons: Ext.Msg.YESNO,
|
143
|
+
fn: request
|
144
|
+
});
|
145
|
+
}
|
146
|
+
else {
|
147
|
+
request('yes');
|
148
|
+
}
|
149
|
+
} else {
|
150
|
+
Ext.Msg.show({
|
151
|
+
title: actionName,
|
152
|
+
msg: 'Элемент не выбран',
|
153
|
+
buttons: Ext.Msg.OK,
|
154
|
+
icon: Ext.MessageBox.INFO
|
155
|
+
});
|
156
|
+
}
|
157
|
+
}
|
158
|
+
|
159
|
+
function getGridParams(grid) {
|
160
|
+
var options = {};
|
161
|
+
if (grid.allowPaging) {
|
162
|
+
var pagingBar = grid.getBottomToolbar();
|
163
|
+
if(pagingBar && pagingBar instanceof Ext.PagingToolbar){
|
164
|
+
var o = {}, pp = pagingBar.getParams();
|
165
|
+
o[pp.start] = (
|
166
|
+
(Math.ceil((
|
167
|
+
pagingBar.cursor + pagingBar.pageSize
|
168
|
+
) / pagingBar.pageSize) - 1) * pagingBar.pageSize
|
169
|
+
).constrain(0, pagingBar.store.getTotalCount());
|
170
|
+
o[pp.limit] = pagingBar.pageSize;
|
171
|
+
options = Ext.apply(options, o);
|
172
|
+
}
|
173
|
+
}
|
174
|
+
|
175
|
+
var store = grid.getStore();
|
176
|
+
options = Ext.apply(options, store.baseParams);
|
177
|
+
|
178
|
+
if (store.sortInfo && store.remoteSort) {
|
179
|
+
var sp = store.paramNames;
|
180
|
+
options[sp.sort] = store.sortInfo.field;
|
181
|
+
options[sp.dir] = store.sortInfo.direction;
|
182
|
+
}
|
183
|
+
|
184
|
+
return options;
|
185
|
+
}
|