edu-rdm-integration 3.9.2__py3-none-any.whl → 3.10.1__py3-none-any.whl
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/__init__.py +0 -1
- edu_rdm_integration/adapters/apps.py +15 -2
- edu_rdm_integration/adapters/caches.py +25 -12
- edu_rdm_integration/adapters/errors.py +13 -2
- edu_rdm_integration/adapters/functions.py +53 -14
- edu_rdm_integration/adapters/helpers.py +34 -8
- edu_rdm_integration/adapters/managers.py +41 -5
- edu_rdm_integration/adapters/presenters.py +26 -2
- edu_rdm_integration/adapters/receivers.py +16 -2
- edu_rdm_integration/adapters/results.py +50 -4
- edu_rdm_integration/adapters/runners.py +79 -20
- edu_rdm_integration/adapters/strategies.py +56 -54
- edu_rdm_integration/adapters/validators.py +43 -4
- edu_rdm_integration/apps.py +3 -23
- edu_rdm_integration/collect_and_export_data/__init__.py +1 -1
- edu_rdm_integration/collect_and_export_data/apps.py +1 -0
- edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +107 -17
- edu_rdm_integration/collect_and_export_data/migrations/0002_auto_20250204_1413.py +4 -2
- edu_rdm_integration/collect_and_export_data/models.py +1 -67
- edu_rdm_integration/{consts.py → core/consts.py} +0 -11
- edu_rdm_integration/{enums.py → core/enums.py} +7 -54
- edu_rdm_integration/core/helpers.py +331 -0
- edu_rdm_integration/core/operations.py +71 -0
- edu_rdm_integration/core/redis_cache.py +20 -0
- edu_rdm_integration/{collect_and_export_data → core/registry}/actions.py +6 -12
- edu_rdm_integration/core/registry/apps.py +11 -0
- edu_rdm_integration/{collect_and_export_data → core/registry}/ui.py +1 -1
- edu_rdm_integration/{storages.py → core/storages.py} +8 -17
- edu_rdm_integration/{utils.py → core/utils.py} +29 -91
- edu_rdm_integration/migrations/0001_initial.py +294 -44
- edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +1 -3
- edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -1
- edu_rdm_integration/migrations/0004_uploaderclientlog.py +1 -2
- edu_rdm_integration/migrations/0005_auto_20231204_1224.py +16 -4
- edu_rdm_integration/migrations/0006_request_status_data.py +60 -58
- edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -1
- edu_rdm_integration/migrations/0009_auto_20240522_1619.py +1 -5
- edu_rdm_integration/migrations/0010_transferredentity_export_enabled.py +0 -1
- edu_rdm_integration/migrations/0011_exportingdatasubstageentity.py +16 -3
- edu_rdm_integration/migrations/0012_exportingdatasubstageattachment_attachment_size.py +0 -1
- edu_rdm_integration/migrations/0013_set_attachment_size.py +8 -12
- edu_rdm_integration/migrations/0014_uploaddatacommand.py +33 -6
- edu_rdm_integration/migrations/0015_set_exporting_sub_stage_status.py +1 -5
- edu_rdm_integration/migrations/0016_transferredentity_queue_level.py +2 -2
- edu_rdm_integration/migrations/0017_delete_uploaddatacommand.py +3 -2
- edu_rdm_integration/migrations/__init__.py +1 -0
- edu_rdm_integration/{registry → pipelines/transfer}/actions.py +13 -26
- edu_rdm_integration/pipelines/transfer/app_meta.py +18 -0
- edu_rdm_integration/pipelines/transfer/apps.py +19 -0
- edu_rdm_integration/pipelines/transfer/enums.py +34 -0
- edu_rdm_integration/pipelines/transfer/migrations/0001_initial.py +57 -0
- edu_rdm_integration/{base.py → pipelines/transfer/mixins.py} +29 -53
- edu_rdm_integration/pipelines/transfer/models.py +48 -0
- edu_rdm_integration/{tasks.py → pipelines/transfer/tasks.py} +51 -150
- edu_rdm_integration/{registry → pipelines/transfer}/ui.py +4 -10
- edu_rdm_integration/rdm_entities/apps.py +11 -0
- edu_rdm_integration/{entities.py → rdm_entities/entities.py} +67 -57
- edu_rdm_integration/rdm_entities/migrations/0001_initial.py +44 -0
- edu_rdm_integration/{enum_register → rdm_entities}/mixins.py +8 -59
- edu_rdm_integration/rdm_entities/models.py +63 -0
- edu_rdm_integration/rdm_entities/utils.py +33 -0
- edu_rdm_integration/rdm_models/apps.py +16 -0
- edu_rdm_integration/rdm_models/migrations/0001_initial.py +40 -0
- edu_rdm_integration/rdm_models/mixins.py +67 -0
- edu_rdm_integration/rdm_models/models.py +73 -0
- edu_rdm_integration/rdm_models/utils.py +23 -0
- edu_rdm_integration/stages/collect_data/apps.py +11 -0
- edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/functions.py-tpl +2 -2
- edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/managers.py-tpl +1 -1
- edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/runners.py-tpl +1 -1
- edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/tests.py-tpl +2 -1
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/caches.py +2 -2
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/functions.py +15 -18
- edu_rdm_integration/stages/collect_data/functions/base/helpers.py +20 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/managers.py +20 -27
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/mixins.py +38 -55
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/runners.py +2 -5
- edu_rdm_integration/stages/collect_data/functions/calculated/__init__.py +0 -0
- edu_rdm_integration/stages/collect_data/functions/calculated/base/__init__.py +0 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/caches.py +3 -7
- edu_rdm_integration/stages/collect_data/functions/calculated/base/errors.py +7 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/functions.py +8 -16
- edu_rdm_integration/stages/collect_data/functions/calculated/base/helpers.py +24 -0
- edu_rdm_integration/stages/collect_data/functions/calculated/base/managers.py +19 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/presenters.py +1 -3
- edu_rdm_integration/stages/collect_data/functions/calculated/base/results.py +12 -0
- edu_rdm_integration/stages/collect_data/functions/calculated/base/runners.py +28 -0
- edu_rdm_integration/stages/collect_data/functions/calculated/base/validators.py +20 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/strategies.py +32 -70
- edu_rdm_integration/stages/collect_data/functions/non_calculated/__init__.py +0 -0
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/__init__.py +0 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/caches.py +13 -22
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/errors.py +7 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/functions.py +8 -16
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/helpers.py +24 -0
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/managers.py +19 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/presenters.py +1 -3
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/results.py +12 -0
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/runners.py +28 -0
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/validators.py +20 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/strategies.py +32 -70
- edu_rdm_integration/{collect_data → stages/collect_data}/generators.py +9 -14
- edu_rdm_integration/stages/collect_data/helpers.py +154 -0
- edu_rdm_integration/stages/collect_data/management/__init__.py +0 -0
- edu_rdm_integration/stages/collect_data/management/base.py +100 -0
- edu_rdm_integration/stages/collect_data/management/commands/__init__.py +0 -0
- edu_rdm_integration/{management → stages/collect_data/management}/commands/collect_latest_models_data.py +5 -7
- edu_rdm_integration/{management → stages/collect_data/management}/commands/collect_models_data.py +5 -7
- edu_rdm_integration/stages/collect_data/migrations/0001_initial.py +187 -0
- edu_rdm_integration/stages/collect_data/migrations/0002_edurdmcollectdatacommandprogress.py +105 -0
- edu_rdm_integration/stages/collect_data/migrations/__init__.py +0 -0
- edu_rdm_integration/stages/collect_data/mixins.py +56 -0
- edu_rdm_integration/stages/collect_data/models.py +318 -0
- edu_rdm_integration/{collect_data/collect.py → stages/collect_data/operations.py} +30 -43
- edu_rdm_integration/stages/collect_data/registry/__init__.py +0 -0
- edu_rdm_integration/{collect_data → stages/collect_data/registry}/actions.py +17 -20
- edu_rdm_integration/stages/collect_data/registry/apps.py +11 -0
- edu_rdm_integration/{collect_data → stages/collect_data/registry}/ui.py +8 -15
- edu_rdm_integration/{collect_data → stages/collect_data}/tests.py +2 -2
- edu_rdm_integration/stages/export_data/__init__.py +0 -0
- edu_rdm_integration/stages/export_data/apps.py +11 -0
- edu_rdm_integration/stages/export_data/function_templates/__init__.py +0 -0
- edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/functions.py-tpl +2 -2
- edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/managers.py-tpl +2 -2
- edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/runners.py-tpl +2 -2
- edu_rdm_integration/stages/export_data/functions/__init__.py +0 -0
- edu_rdm_integration/stages/export_data/functions/base/__init__.py +0 -0
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/caches.py +3 -8
- edu_rdm_integration/stages/export_data/functions/base/errors.py +7 -0
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/functions.py +28 -59
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/helpers.py +7 -17
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/managers.py +19 -28
- edu_rdm_integration/stages/export_data/functions/base/presenters.py +11 -0
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/requests.py +13 -40
- edu_rdm_integration/stages/export_data/functions/base/results.py +12 -0
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/runners.py +9 -21
- edu_rdm_integration/stages/export_data/functions/base/validators.py +20 -0
- edu_rdm_integration/{export_data → stages/export_data}/generators.py +7 -6
- edu_rdm_integration/stages/export_data/helpers.py +203 -0
- edu_rdm_integration/stages/export_data/management/__init__.py +0 -0
- edu_rdm_integration/stages/export_data/management/base.py +101 -0
- edu_rdm_integration/stages/export_data/management/commands/__init__.py +0 -0
- edu_rdm_integration/{management → stages/export_data/management}/commands/export_entities_data.py +5 -7
- edu_rdm_integration/{management → stages/export_data/management}/commands/export_latest_entities_data.py +5 -7
- edu_rdm_integration/stages/export_data/migrations/0001_initial.py +324 -0
- edu_rdm_integration/stages/export_data/migrations/__init__.py +0 -0
- edu_rdm_integration/stages/export_data/mixins.py +50 -0
- edu_rdm_integration/stages/export_data/models.py +362 -0
- edu_rdm_integration/{export_data/export.py → stages/export_data/operations.py} +13 -152
- edu_rdm_integration/stages/export_data/registry/__init__.py +0 -0
- edu_rdm_integration/{export_data → stages/export_data/registry}/actions.py +18 -18
- edu_rdm_integration/stages/export_data/registry/apps.py +11 -0
- edu_rdm_integration/{export_data → stages/export_data/registry}/ui.py +5 -7
- edu_rdm_integration/{export_data → stages/export_data}/strategies.py +30 -68
- edu_rdm_integration/stages/service/__init__.py +0 -0
- edu_rdm_integration/stages/service/apps.py +19 -0
- edu_rdm_integration/stages/service/tasks.py +63 -0
- edu_rdm_integration/stages/upload_data/__init__.py +0 -0
- edu_rdm_integration/stages/upload_data/apps.py +19 -0
- edu_rdm_integration/stages/upload_data/consts.py +10 -0
- edu_rdm_integration/{export_data → stages/upload_data}/dataclasses.py +1 -0
- edu_rdm_integration/stages/upload_data/enums.py +17 -0
- edu_rdm_integration/{export_data/export_manager.py → stages/upload_data/export_managers.py} +73 -68
- edu_rdm_integration/stages/upload_data/helpers.py +164 -0
- edu_rdm_integration/stages/upload_data/management/__init__.py +0 -0
- edu_rdm_integration/stages/upload_data/management/base.py +134 -0
- edu_rdm_integration/stages/upload_data/management/commands/__init__.py +0 -0
- edu_rdm_integration/{management → stages/upload_data/management}/commands/async_fix_attachment_size.py +32 -54
- edu_rdm_integration/{management → stages/upload_data/management}/commands/check_upload_status.py +7 -6
- edu_rdm_integration/{management → stages/upload_data/management}/commands/datamart_status.py +3 -3
- edu_rdm_integration/{management → stages/upload_data/management}/commands/datamart_upload.py +4 -4
- edu_rdm_integration/stages/upload_data/migrations/0001_initial.py +161 -0
- edu_rdm_integration/stages/upload_data/migrations/__init__.py +0 -0
- edu_rdm_integration/stages/upload_data/models.py +175 -0
- edu_rdm_integration/stages/upload_data/operations.py +156 -0
- edu_rdm_integration/{export_data/queue.py → stages/upload_data/queues.py} +10 -8
- edu_rdm_integration/stages/upload_data/tasks.py +103 -0
- edu_rdm_integration/stages/upload_data/uploader_log/__init__.py +0 -0
- edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/actions.py +14 -16
- edu_rdm_integration/stages/upload_data/uploader_log/apps.py +11 -0
- edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/managers.py +15 -30
- edu_rdm_integration/stages/upload_data/uploader_log/migrations/0001_initial.py +31 -0
- edu_rdm_integration/stages/upload_data/uploader_log/migrations/__init__.py +0 -0
- edu_rdm_integration/stages/upload_data/uploader_log/models.py +86 -0
- edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/ui.py +8 -6
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/METADATA +238 -238
- edu_rdm_integration-3.10.1.dist-info/RECORD +257 -0
- edu_rdm_integration/app_meta.py +0 -16
- edu_rdm_integration/app_settings.py +0 -77
- edu_rdm_integration/collect_and_export_data/utils.py +0 -224
- edu_rdm_integration/collect_data/base/helpers.py +0 -26
- edu_rdm_integration/collect_data/calculated/base/errors.py +0 -9
- edu_rdm_integration/collect_data/calculated/base/helpers.py +0 -32
- edu_rdm_integration/collect_data/calculated/base/managers.py +0 -23
- edu_rdm_integration/collect_data/calculated/base/results.py +0 -16
- edu_rdm_integration/collect_data/calculated/base/runners.py +0 -36
- edu_rdm_integration/collect_data/calculated/base/validators.py +0 -28
- edu_rdm_integration/collect_data/helpers.py +0 -92
- edu_rdm_integration/collect_data/non_calculated/base/errors.py +0 -9
- edu_rdm_integration/collect_data/non_calculated/base/helpers.py +0 -32
- edu_rdm_integration/collect_data/non_calculated/base/managers.py +0 -23
- edu_rdm_integration/collect_data/non_calculated/base/results.py +0 -16
- edu_rdm_integration/collect_data/non_calculated/base/runners.py +0 -36
- edu_rdm_integration/collect_data/non_calculated/base/validators.py +0 -28
- edu_rdm_integration/enum_register/register.py +0 -79
- edu_rdm_integration/export_data/base/errors.py +0 -9
- edu_rdm_integration/export_data/base/presenters.py +0 -13
- edu_rdm_integration/export_data/base/results.py +0 -16
- edu_rdm_integration/export_data/base/validators.py +0 -28
- edu_rdm_integration/export_data/helpers.py +0 -92
- edu_rdm_integration/helpers.py +0 -412
- edu_rdm_integration/management/general.py +0 -327
- edu_rdm_integration/models.py +0 -982
- edu_rdm_integration/redis_cache.py +0 -51
- edu_rdm_integration/uploader_log/apps.py +0 -10
- edu_rdm_integration-3.9.2.dist-info/RECORD +0 -198
- /edu_rdm_integration/{collect_data → core}/__init__.py +0 -0
- /edu_rdm_integration/{mapping.py → core/mapping.py} +0 -0
- /edu_rdm_integration/{collect_data/base → core/registry}/__init__.py +0 -0
- /edu_rdm_integration/{templates → core/registry/templates}/ui-js/start-task.js +0 -0
- /edu_rdm_integration/{signals.py → core/signals.py} +0 -0
- /edu_rdm_integration/{typing.py → core/typing.py} +0 -0
- /edu_rdm_integration/{collect_data/calculated → pipelines}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data/calculated/base → pipelines/transfer}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data/non_calculated → pipelines/transfer/migrations}/__init__.py +0 -0
- /edu_rdm_integration/{templates → pipelines/transfer/templates}/ui-js/transferred-entity-list.js +0 -0
- /edu_rdm_integration/{collect_data/non_calculated/base → rdm_entities}/__init__.py +0 -0
- /edu_rdm_integration/{enum_register → rdm_entities/migrations}/__init__.py +0 -0
- /edu_rdm_integration/{export_data → rdm_models}/__init__.py +0 -0
- /edu_rdm_integration/{export_data/base → rdm_models/migrations}/__init__.py +0 -0
- /edu_rdm_integration/{function_templates → stages}/__init__.py +0 -0
- /edu_rdm_integration/{management → stages/collect_data}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data/const.py → stages/collect_data/consts.py} +0 -0
- /edu_rdm_integration/{management/commands → stages/collect_data/function_templates}/__init__.py +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/__init__.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/apps.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/caches.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/consts.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/enums.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/errors.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/helpers.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/presenters.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/results.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/strings.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/validators.py-tpl +0 -0
- /edu_rdm_integration/{registry → stages/collect_data/functions}/__init__.py +0 -0
- /edu_rdm_integration/{uploader_log → stages/collect_data/functions/base}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/consts.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/consts.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/enums.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/strings.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/tests.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/consts.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/enums.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/strings.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/tests.py +0 -0
- /edu_rdm_integration/{export_data → stages/export_data}/consts.py +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/__init__.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/apps.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/caches.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/consts.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/enums.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/errors.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/helpers.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/presenters.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/results.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/strings.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/tests.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/validators.py-tpl +0 -0
- /edu_rdm_integration/{export_data → stages/export_data/functions}/base/consts.py +0 -0
- /edu_rdm_integration/{export_data → stages/export_data/functions}/base/enums.py +0 -0
- /edu_rdm_integration/{export_data → stages/export_data/functions}/base/strings.py +0 -0
- /edu_rdm_integration/{export_data → stages/export_data/functions}/base/tests.py +0 -0
- /edu_rdm_integration/{templates → stages/export_data/registry/templates}/ui-js/stage_for_export.js +0 -0
- /edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/enums.py +0 -0
- /edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/templates/ui-js/object-grid-buttons.js +0 -0
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/WHEEL +0 -0
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/licenses/LICENSE +0 -0
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/top_level.txt +0 -0
@@ -1,32 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.collect_data.base.helpers import (
|
2
|
-
BaseCollectingDataFunctionHelper,
|
3
|
-
BaseCollectingDataRunnerHelper,
|
4
|
-
)
|
5
|
-
from edu_rdm_integration.collect_data.calculated.base.caches import (
|
6
|
-
BaseCollectingCalculatedExportedDataFunctionCacheStorage,
|
7
|
-
BaseCollectingCalculatedExportedDataRunnerCacheStorage,
|
8
|
-
)
|
9
|
-
|
10
|
-
|
11
|
-
class BaseCollectingCalculatedExportedDataRunnerHelper(BaseCollectingDataRunnerHelper):
|
12
|
-
"""
|
13
|
-
Базовый класс помощников ранеров функций сбора расчетных данных для интеграции с "Региональная витрина данных".
|
14
|
-
"""
|
15
|
-
|
16
|
-
def _prepare_cache_class(self) -> type[BaseCollectingCalculatedExportedDataRunnerCacheStorage]:
|
17
|
-
"""
|
18
|
-
Возвращает класс кеша помощника ранера.
|
19
|
-
"""
|
20
|
-
return BaseCollectingCalculatedExportedDataRunnerCacheStorage
|
21
|
-
|
22
|
-
|
23
|
-
class BaseCollectingCalculatedExportedDataFunctionHelper(BaseCollectingDataFunctionHelper):
|
24
|
-
"""
|
25
|
-
Базовый класс помощников функций сбора расчетных данных для интеграции с "Региональная витрина данных".
|
26
|
-
"""
|
27
|
-
|
28
|
-
def _prepare_cache_class(self) -> type[BaseCollectingCalculatedExportedDataFunctionCacheStorage]:
|
29
|
-
"""
|
30
|
-
Возвращает класс кеша помощника функции.
|
31
|
-
"""
|
32
|
-
return BaseCollectingCalculatedExportedDataFunctionCacheStorage
|
@@ -1,23 +0,0 @@
|
|
1
|
-
from abc import (
|
2
|
-
ABCMeta,
|
3
|
-
)
|
4
|
-
|
5
|
-
from edu_rdm_integration.collect_data.base.managers import (
|
6
|
-
BaseCollectingDataRunnerManager,
|
7
|
-
)
|
8
|
-
from edu_rdm_integration.collect_data.calculated.base.runners import (
|
9
|
-
BaseCollectingCalculatedExportedDataRunner,
|
10
|
-
)
|
11
|
-
|
12
|
-
|
13
|
-
class BaseCollectingCalculatedExportedDataRunnerManager(BaseCollectingDataRunnerManager, metaclass=ABCMeta):
|
14
|
-
"""
|
15
|
-
Менеджер ранеров функций сбора расчетных данных для интеграции с "Региональная витрина данных".
|
16
|
-
"""
|
17
|
-
|
18
|
-
@classmethod
|
19
|
-
def _prepare_runner_class(cls) -> type[BaseCollectingCalculatedExportedDataRunner]:
|
20
|
-
"""
|
21
|
-
Возвращает класс ранера.
|
22
|
-
"""
|
23
|
-
return BaseCollectingCalculatedExportedDataRunner
|
@@ -1,16 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.adapters.results import (
|
2
|
-
WebEduFunctionResult,
|
3
|
-
WebEduRunnerResult,
|
4
|
-
)
|
5
|
-
|
6
|
-
|
7
|
-
class BaseCollectingCalculatedExportedDataRunnerResult(WebEduRunnerResult):
|
8
|
-
"""
|
9
|
-
Базовый класс результатов работы ранеров функций сбора расчетных данных для "Региональной витрины данных".
|
10
|
-
"""
|
11
|
-
|
12
|
-
|
13
|
-
class BaseCollectingCalculatedExportedDataFunctionResult(WebEduFunctionResult):
|
14
|
-
"""
|
15
|
-
Базовый класс результатов работы функций сбора расчетных данных для интеграции с "Региональная витрина данных".
|
16
|
-
"""
|
@@ -1,36 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.collect_data.base.runners import (
|
2
|
-
BaseCollectingDataRunner,
|
3
|
-
)
|
4
|
-
from edu_rdm_integration.collect_data.calculated.base.helpers import (
|
5
|
-
BaseCollectingCalculatedExportedDataRunnerHelper,
|
6
|
-
)
|
7
|
-
from edu_rdm_integration.collect_data.calculated.base.results import (
|
8
|
-
BaseCollectingCalculatedExportedDataRunnerResult,
|
9
|
-
)
|
10
|
-
from edu_rdm_integration.collect_data.calculated.base.validators import (
|
11
|
-
BaseCollectingCalculatedExportedDataRunnerValidator,
|
12
|
-
)
|
13
|
-
|
14
|
-
|
15
|
-
class BaseCollectingCalculatedExportedDataRunner(BaseCollectingDataRunner):
|
16
|
-
"""
|
17
|
-
Базовый класс ранеров функций сбора расчетных данных для интеграции с "Региональная витрина данных".
|
18
|
-
"""
|
19
|
-
|
20
|
-
def _prepare_helper_class(self) -> type[BaseCollectingCalculatedExportedDataRunnerHelper]:
|
21
|
-
"""
|
22
|
-
Возвращает класс помощника ранера функции.
|
23
|
-
"""
|
24
|
-
return BaseCollectingCalculatedExportedDataRunnerHelper
|
25
|
-
|
26
|
-
def _prepare_validator_class(self) -> type[BaseCollectingCalculatedExportedDataRunnerValidator]:
|
27
|
-
"""
|
28
|
-
Возвращает класс валидатора ранера функции.
|
29
|
-
"""
|
30
|
-
return BaseCollectingCalculatedExportedDataRunnerValidator
|
31
|
-
|
32
|
-
def _prepare_result_class(self) -> type[BaseCollectingCalculatedExportedDataRunnerResult]:
|
33
|
-
"""
|
34
|
-
Возвращает класс результата ранера функции.
|
35
|
-
"""
|
36
|
-
return BaseCollectingCalculatedExportedDataRunnerResult
|
@@ -1,28 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.adapters.validators import (
|
2
|
-
WebEduFunctionValidator,
|
3
|
-
WebEduRunnerValidator,
|
4
|
-
)
|
5
|
-
|
6
|
-
|
7
|
-
class BaseCollectingCalculatedExportedDataRunnerValidator(WebEduRunnerValidator):
|
8
|
-
"""
|
9
|
-
Базовый класс валидаторов ранеров функций сбора расчетных данных для интеграции с "Региональная витрина данных".
|
10
|
-
"""
|
11
|
-
|
12
|
-
def validate(self, runnable):
|
13
|
-
"""
|
14
|
-
Расширение метода валидации.
|
15
|
-
"""
|
16
|
-
super().validate(runnable=runnable)
|
17
|
-
|
18
|
-
|
19
|
-
class BaseCollectingCalculatedExportedDataFunctionValidator(WebEduFunctionValidator):
|
20
|
-
"""
|
21
|
-
Базовый класс валидаторов функций сбора расчетных данных для интеграции с "Региональная витрина данных".
|
22
|
-
"""
|
23
|
-
|
24
|
-
def validate(self, runnable):
|
25
|
-
"""
|
26
|
-
Расширение метода валидации.
|
27
|
-
"""
|
28
|
-
super().validate(runnable=runnable)
|
@@ -1,92 +0,0 @@
|
|
1
|
-
from datetime import (
|
2
|
-
date,
|
3
|
-
datetime,
|
4
|
-
time,
|
5
|
-
timedelta,
|
6
|
-
)
|
7
|
-
|
8
|
-
from django.conf import (
|
9
|
-
settings,
|
10
|
-
)
|
11
|
-
from django.db.models import (
|
12
|
-
OuterRef,
|
13
|
-
Subquery,
|
14
|
-
Value,
|
15
|
-
)
|
16
|
-
from django.db.models.functions import (
|
17
|
-
Coalesce,
|
18
|
-
)
|
19
|
-
from django.db.transaction import (
|
20
|
-
atomic,
|
21
|
-
)
|
22
|
-
|
23
|
-
from educommon import (
|
24
|
-
logger,
|
25
|
-
)
|
26
|
-
|
27
|
-
from edu_rdm_integration.models import (
|
28
|
-
CollectingDataStageStatus,
|
29
|
-
CollectingDataSubStageStatus,
|
30
|
-
CollectingExportedDataStage,
|
31
|
-
CollectingExportedDataSubStage,
|
32
|
-
)
|
33
|
-
|
34
|
-
|
35
|
-
@atomic
|
36
|
-
def set_failed_status_suspended_collecting_data_stages() -> dict[str, int]:
|
37
|
-
"""Установить статус 'Завершено с ошибками' для зависших этапов и подэтапов сбора.
|
38
|
-
|
39
|
-
Сборка считается зависшей в случае если за определенное в параметре RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT время,
|
40
|
-
отсутствуют изменения в связанных подэтапах. Параметр RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT определяется
|
41
|
-
в настройках приложения.
|
42
|
-
"""
|
43
|
-
changed_status_result = {
|
44
|
-
'change_stage_count': 0,
|
45
|
-
'change_sub_stage_count': 0,
|
46
|
-
}
|
47
|
-
|
48
|
-
current_datetime = datetime.now()
|
49
|
-
suspended_time_at = current_datetime - timedelta(minutes=settings.RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT)
|
50
|
-
|
51
|
-
suspended_stage_ids = set(
|
52
|
-
CollectingExportedDataStage.objects.annotate(
|
53
|
-
last_sub_stage_started_at=Coalesce(
|
54
|
-
Subquery(
|
55
|
-
CollectingExportedDataSubStage.objects.filter(
|
56
|
-
stage_id=OuterRef('pk')
|
57
|
-
).values('started_at').order_by('-started_at')[:1]
|
58
|
-
),
|
59
|
-
Value(datetime.combine(date.min, time.min))
|
60
|
-
)
|
61
|
-
).filter(
|
62
|
-
last_sub_stage_started_at__lt=suspended_time_at,
|
63
|
-
status__in=(
|
64
|
-
CollectingDataStageStatus.CREATED.key,
|
65
|
-
CollectingDataStageStatus.IN_PROGRESS.key,
|
66
|
-
),
|
67
|
-
).values_list('pk', flat=True)
|
68
|
-
)
|
69
|
-
|
70
|
-
if suspended_stage_ids:
|
71
|
-
logger.info(f'find suspended CollectingExportedDataStage: {", ".join(map(str, suspended_stage_ids))}..')
|
72
|
-
|
73
|
-
change_stage_count = CollectingExportedDataStage.objects.filter(
|
74
|
-
pk__in=suspended_stage_ids,
|
75
|
-
).update(
|
76
|
-
status=CollectingDataStageStatus.FAILED.key,
|
77
|
-
ended_at=current_datetime,
|
78
|
-
)
|
79
|
-
|
80
|
-
change_sub_stage_count = CollectingExportedDataSubStage.objects.filter(
|
81
|
-
stage_id__in=suspended_stage_ids,
|
82
|
-
).update(
|
83
|
-
status=CollectingDataSubStageStatus.FAILED.key,
|
84
|
-
ended_at=current_datetime,
|
85
|
-
)
|
86
|
-
|
87
|
-
changed_status_result.update({
|
88
|
-
'change_stage_count': change_stage_count,
|
89
|
-
'change_sub_stage_count': change_sub_stage_count,
|
90
|
-
})
|
91
|
-
|
92
|
-
return changed_status_result
|
@@ -1,32 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.collect_data.base.helpers import (
|
2
|
-
BaseCollectingDataFunctionHelper,
|
3
|
-
BaseCollectingDataRunnerHelper,
|
4
|
-
)
|
5
|
-
from edu_rdm_integration.collect_data.non_calculated.base.caches import (
|
6
|
-
BaseCollectingExportedDataFunctionCacheStorage,
|
7
|
-
BaseCollectingExportedDataRunnerCacheStorage,
|
8
|
-
)
|
9
|
-
|
10
|
-
|
11
|
-
class BaseCollectingExportedDataRunnerHelper(BaseCollectingDataRunnerHelper):
|
12
|
-
"""
|
13
|
-
Базовый класс помощников ранеров функций сбора данных для интеграции с "Региональная витрина данных".
|
14
|
-
"""
|
15
|
-
|
16
|
-
def _prepare_cache_class(self) -> type[BaseCollectingExportedDataRunnerCacheStorage]:
|
17
|
-
"""
|
18
|
-
Возвращает класс кеша помощника ранера.
|
19
|
-
"""
|
20
|
-
return BaseCollectingExportedDataRunnerCacheStorage
|
21
|
-
|
22
|
-
|
23
|
-
class BaseCollectingExportedDataFunctionHelper(BaseCollectingDataFunctionHelper):
|
24
|
-
"""
|
25
|
-
Базовый класс помощников функций сбора данных для интеграции с "Региональная витрина данных".
|
26
|
-
"""
|
27
|
-
|
28
|
-
def _prepare_cache_class(self) -> type[BaseCollectingExportedDataFunctionCacheStorage]:
|
29
|
-
"""
|
30
|
-
Возвращает класс кеша помощника функции.
|
31
|
-
"""
|
32
|
-
return BaseCollectingExportedDataFunctionCacheStorage
|
@@ -1,23 +0,0 @@
|
|
1
|
-
from abc import (
|
2
|
-
ABCMeta,
|
3
|
-
)
|
4
|
-
|
5
|
-
from edu_rdm_integration.collect_data.base.managers import (
|
6
|
-
BaseCollectingDataRunnerManager,
|
7
|
-
)
|
8
|
-
from edu_rdm_integration.collect_data.non_calculated.base.runners import (
|
9
|
-
BaseCollectingExportedDataRunner,
|
10
|
-
)
|
11
|
-
|
12
|
-
|
13
|
-
class BaseCollectingExportedDataRunnerManager(BaseCollectingDataRunnerManager, metaclass=ABCMeta):
|
14
|
-
"""
|
15
|
-
Менеджер ранеров функций сбора данных для интеграции с "Региональная витрина данных".
|
16
|
-
"""
|
17
|
-
|
18
|
-
@classmethod
|
19
|
-
def _prepare_runner_class(cls) -> type[BaseCollectingExportedDataRunner]:
|
20
|
-
"""
|
21
|
-
Возвращает класс ранера.
|
22
|
-
"""
|
23
|
-
return BaseCollectingExportedDataRunner
|
@@ -1,16 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.adapters.results import (
|
2
|
-
WebEduFunctionResult,
|
3
|
-
WebEduRunnerResult,
|
4
|
-
)
|
5
|
-
|
6
|
-
|
7
|
-
class BaseCollectingExportedDataRunnerResult(WebEduRunnerResult):
|
8
|
-
"""
|
9
|
-
Базовый класс результатов работы ранеров функций сбора данных для интеграции с "Региональная витрина данных".
|
10
|
-
"""
|
11
|
-
|
12
|
-
|
13
|
-
class BaseCollectingExportedDataFunctionResult(WebEduFunctionResult):
|
14
|
-
"""
|
15
|
-
Базовый класс результатов работы функций сбора данных для интеграции с "Региональная витрина данных".
|
16
|
-
"""
|
@@ -1,36 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.collect_data.base.runners import (
|
2
|
-
BaseCollectingDataRunner,
|
3
|
-
)
|
4
|
-
from edu_rdm_integration.collect_data.non_calculated.base.helpers import (
|
5
|
-
BaseCollectingExportedDataRunnerHelper,
|
6
|
-
)
|
7
|
-
from edu_rdm_integration.collect_data.non_calculated.base.results import (
|
8
|
-
BaseCollectingExportedDataRunnerResult,
|
9
|
-
)
|
10
|
-
from edu_rdm_integration.collect_data.non_calculated.base.validators import (
|
11
|
-
BaseCollectingExportedDataRunnerValidator,
|
12
|
-
)
|
13
|
-
|
14
|
-
|
15
|
-
class BaseCollectingExportedDataRunner(BaseCollectingDataRunner):
|
16
|
-
"""
|
17
|
-
Базовый класс ранеров функций сбора данных для интеграции с "Региональная витрина данных".
|
18
|
-
"""
|
19
|
-
|
20
|
-
def _prepare_helper_class(self) -> type[BaseCollectingExportedDataRunnerHelper]:
|
21
|
-
"""
|
22
|
-
Возвращает класс помощника ранера функции.
|
23
|
-
"""
|
24
|
-
return BaseCollectingExportedDataRunnerHelper
|
25
|
-
|
26
|
-
def _prepare_validator_class(self) -> type[BaseCollectingExportedDataRunnerValidator]:
|
27
|
-
"""
|
28
|
-
Возвращает класс валидатора ранера функции.
|
29
|
-
"""
|
30
|
-
return BaseCollectingExportedDataRunnerValidator
|
31
|
-
|
32
|
-
def _prepare_result_class(self) -> type[BaseCollectingExportedDataRunnerResult]:
|
33
|
-
"""
|
34
|
-
Возвращает класс результата ранера функции.
|
35
|
-
"""
|
36
|
-
return BaseCollectingExportedDataRunnerResult
|
@@ -1,28 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.adapters.validators import (
|
2
|
-
WebEduFunctionValidator,
|
3
|
-
WebEduRunnerValidator,
|
4
|
-
)
|
5
|
-
|
6
|
-
|
7
|
-
class BaseCollectingExportedDataRunnerValidator(WebEduRunnerValidator):
|
8
|
-
"""
|
9
|
-
Базовый класс валидаторов ранеров функций сбора данных для интеграции с "Региональная витрина данных".
|
10
|
-
"""
|
11
|
-
|
12
|
-
def validate(self, runnable):
|
13
|
-
"""
|
14
|
-
Выполнение валидации.
|
15
|
-
"""
|
16
|
-
super().validate(runnable=runnable)
|
17
|
-
|
18
|
-
|
19
|
-
class BaseCollectingExportedDataFunctionValidator(WebEduFunctionValidator):
|
20
|
-
"""
|
21
|
-
Базовый класс валидаторов функций сбора данных для интеграции с "Региональная витрина данных".
|
22
|
-
"""
|
23
|
-
|
24
|
-
def validate(self, runnable):
|
25
|
-
"""
|
26
|
-
Выполнение валидации.
|
27
|
-
"""
|
28
|
-
super().validate(runnable=runnable)
|
@@ -1,79 +0,0 @@
|
|
1
|
-
import inspect
|
2
|
-
import sys
|
3
|
-
from importlib import (
|
4
|
-
import_module,
|
5
|
-
)
|
6
|
-
from operator import (
|
7
|
-
attrgetter,
|
8
|
-
)
|
9
|
-
from typing import (
|
10
|
-
Iterable,
|
11
|
-
)
|
12
|
-
|
13
|
-
from django.apps import (
|
14
|
-
apps,
|
15
|
-
)
|
16
|
-
from django.db import (
|
17
|
-
models,
|
18
|
-
)
|
19
|
-
|
20
|
-
from educommon.integration_entities.entities import (
|
21
|
-
BaseEntity,
|
22
|
-
)
|
23
|
-
from m3_db_utils.mixins import (
|
24
|
-
BaseEnumRegisterMixin,
|
25
|
-
)
|
26
|
-
|
27
|
-
from edu_rdm_integration.enum_register.mixins import (
|
28
|
-
EntityEnumRegisterMixin,
|
29
|
-
ModelEnumRegisterMixin,
|
30
|
-
)
|
31
|
-
|
32
|
-
|
33
|
-
def register_classes(classes: Iterable[type[BaseEnumRegisterMixin]]) -> None:
|
34
|
-
"""Вызывает метод регистрации в модель-перечисление
|
35
|
-
у переданных классов.
|
36
|
-
|
37
|
-
Args:
|
38
|
-
classes: Классы, поддерживающие интерфейс регистрации.
|
39
|
-
"""
|
40
|
-
classes = sorted(classes, key=attrgetter('order_number'))
|
41
|
-
|
42
|
-
for enum_class in classes:
|
43
|
-
enum_class.register()
|
44
|
-
|
45
|
-
|
46
|
-
def is_register_model(model: models.Model) -> bool:
|
47
|
-
"""Проверяет, является ли класс регистрируемой моделью."""
|
48
|
-
return issubclass(model, ModelEnumRegisterMixin)
|
49
|
-
|
50
|
-
|
51
|
-
def is_register_entity(class_) -> bool:
|
52
|
-
"""Проверяет, является ли класс регистрируемой сущностью."""
|
53
|
-
return (
|
54
|
-
inspect.isclass(class_) and
|
55
|
-
issubclass(class_, BaseEntity) and
|
56
|
-
issubclass(class_, EntityEnumRegisterMixin)
|
57
|
-
)
|
58
|
-
|
59
|
-
|
60
|
-
def register_models() -> None:
|
61
|
-
"""Регистрирует модели в RegionalDataMartModelEnum."""
|
62
|
-
register_classes([
|
63
|
-
m for m in apps.get_models() if is_register_model(m)
|
64
|
-
])
|
65
|
-
|
66
|
-
|
67
|
-
def register_entities(import_path: str) -> None:
|
68
|
-
"""Находит регистрируемые сущности в модуле по переданному пути и
|
69
|
-
регистрирует в RegionalDataMartEntityEnum.
|
70
|
-
|
71
|
-
Args:
|
72
|
-
import_path: Путь до пакета, хранящего классы сущностей;
|
73
|
-
"""
|
74
|
-
import_module(import_path)
|
75
|
-
entities_module = sys.modules[import_path]
|
76
|
-
|
77
|
-
register_classes([
|
78
|
-
c[1] for c in inspect.getmembers(entities_module, is_register_entity)
|
79
|
-
])
|
@@ -1,13 +0,0 @@
|
|
1
|
-
from abc import (
|
2
|
-
ABCMeta,
|
3
|
-
)
|
4
|
-
|
5
|
-
from edu_rdm_integration.adapters.presenters import (
|
6
|
-
WebEduResultPresenter,
|
7
|
-
)
|
8
|
-
|
9
|
-
|
10
|
-
class BaseExportDataResultPresenter(WebEduResultPresenter, metaclass=ABCMeta):
|
11
|
-
"""
|
12
|
-
Презентер результата работы функций выгрузки данных для интеграции с "Региональная витрина данных".
|
13
|
-
"""
|
@@ -1,16 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.adapters.results import (
|
2
|
-
WebEduFunctionResult,
|
3
|
-
WebEduRunnerResult,
|
4
|
-
)
|
5
|
-
|
6
|
-
|
7
|
-
class BaseExportDataRunnerResult(WebEduRunnerResult):
|
8
|
-
"""
|
9
|
-
Базовый класс результатов работы ранеров функций выгрузки данных для интеграции с "Региональная витрина данных".
|
10
|
-
"""
|
11
|
-
|
12
|
-
|
13
|
-
class BaseExportDataFunctionResult(WebEduFunctionResult):
|
14
|
-
"""
|
15
|
-
Базовый класс результатов работы функций выгрузки данных для интеграции с "Региональная витрина данных".
|
16
|
-
"""
|
@@ -1,28 +0,0 @@
|
|
1
|
-
from edu_rdm_integration.adapters.validators import (
|
2
|
-
WebEduFunctionValidator,
|
3
|
-
WebEduRunnerValidator,
|
4
|
-
)
|
5
|
-
|
6
|
-
|
7
|
-
class BaseExportDataRunnerValidator(WebEduRunnerValidator):
|
8
|
-
"""
|
9
|
-
Базовый класс валидаторов ранеров функций выгрузки данных для интеграции с "Региональная витрина данных".
|
10
|
-
"""
|
11
|
-
|
12
|
-
def validate(self, runnable):
|
13
|
-
"""
|
14
|
-
Выполнение валидации.
|
15
|
-
"""
|
16
|
-
super().validate(runnable=runnable)
|
17
|
-
|
18
|
-
|
19
|
-
class BaseExportDataFunctionValidator(WebEduFunctionValidator):
|
20
|
-
"""
|
21
|
-
Базовый класс валидаторов функций выгрузки данных для интеграции с "Региональная витрина данных".
|
22
|
-
"""
|
23
|
-
|
24
|
-
def validate(self, runnable):
|
25
|
-
"""
|
26
|
-
Выполнение валидации.
|
27
|
-
"""
|
28
|
-
super().validate(runnable=runnable)
|
@@ -1,92 +0,0 @@
|
|
1
|
-
from datetime import (
|
2
|
-
date,
|
3
|
-
datetime,
|
4
|
-
time,
|
5
|
-
timedelta,
|
6
|
-
)
|
7
|
-
|
8
|
-
from django.conf import (
|
9
|
-
settings,
|
10
|
-
)
|
11
|
-
from django.db.models import (
|
12
|
-
OuterRef,
|
13
|
-
Subquery,
|
14
|
-
Value,
|
15
|
-
)
|
16
|
-
from django.db.models.functions import (
|
17
|
-
Coalesce,
|
18
|
-
)
|
19
|
-
from django.db.transaction import (
|
20
|
-
atomic,
|
21
|
-
)
|
22
|
-
|
23
|
-
from educommon import (
|
24
|
-
logger,
|
25
|
-
)
|
26
|
-
|
27
|
-
from edu_rdm_integration.models import (
|
28
|
-
ExportingDataStage,
|
29
|
-
ExportingDataStageStatus,
|
30
|
-
ExportingDataSubStage,
|
31
|
-
ExportingDataSubStageStatus,
|
32
|
-
)
|
33
|
-
|
34
|
-
|
35
|
-
@atomic
|
36
|
-
def set_failed_status_suspended_exporting_data_stages() -> dict[str, int]:
|
37
|
-
"""Установить статус 'Завершено с ошибками' для зависших этапов и подэтапов экспорта.
|
38
|
-
|
39
|
-
Экспорт считается зависшим в случае если за определенное в параметре RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT время,
|
40
|
-
отсутствуют изменения в связанных подэтапах. Параметр RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT определяется
|
41
|
-
в настройках приложения.
|
42
|
-
"""
|
43
|
-
changed_status_result = {
|
44
|
-
'change_stage_count': 0,
|
45
|
-
'change_sub_stage_count': 0,
|
46
|
-
}
|
47
|
-
|
48
|
-
current_datetime = datetime.now()
|
49
|
-
suspended_time_at = current_datetime - timedelta(minutes=settings.RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT)
|
50
|
-
|
51
|
-
suspended_stage_ids = set(
|
52
|
-
ExportingDataStage.objects.annotate(
|
53
|
-
last_sub_stage_started_at=Coalesce(
|
54
|
-
Subquery(
|
55
|
-
ExportingDataSubStage.objects.filter(
|
56
|
-
stage_id=OuterRef('pk')
|
57
|
-
).values('started_at').order_by('-started_at')[:1]
|
58
|
-
),
|
59
|
-
Value(datetime.combine(date.min, time.min))
|
60
|
-
)
|
61
|
-
).filter(
|
62
|
-
last_sub_stage_started_at__lt=suspended_time_at,
|
63
|
-
status__in=(
|
64
|
-
ExportingDataStageStatus.CREATED.key,
|
65
|
-
ExportingDataStageStatus.IN_PROGRESS.key,
|
66
|
-
),
|
67
|
-
).values_list('pk', flat=True)
|
68
|
-
)
|
69
|
-
|
70
|
-
if suspended_stage_ids:
|
71
|
-
logger.info(f'find suspended ExportingDataStage: {", ".join(map(str, suspended_stage_ids))}..')
|
72
|
-
|
73
|
-
change_stage_count = ExportingDataStage.objects.filter(
|
74
|
-
pk__in=suspended_stage_ids,
|
75
|
-
).update(
|
76
|
-
status=ExportingDataStageStatus.FAILED.key,
|
77
|
-
ended_at=current_datetime,
|
78
|
-
)
|
79
|
-
|
80
|
-
change_sub_stage_count = ExportingDataSubStage.objects.filter(
|
81
|
-
stage_id__in=suspended_stage_ids,
|
82
|
-
).update(
|
83
|
-
status=ExportingDataSubStageStatus.FAILED.key,
|
84
|
-
ended_at=current_datetime,
|
85
|
-
)
|
86
|
-
|
87
|
-
changed_status_result.update({
|
88
|
-
'change_stage_count': change_stage_count,
|
89
|
-
'change_sub_stage_count': change_sub_stage_count,
|
90
|
-
})
|
91
|
-
|
92
|
-
return changed_status_result
|