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
@@ -5,37 +5,37 @@ from typing import (
|
|
5
5
|
from edu_rdm_integration.adapters.strategies import (
|
6
6
|
WebEduSyncBaseRunnerLazySavingPredefinedQueueFunctionImplementationStrategy,
|
7
7
|
)
|
8
|
-
from edu_rdm_integration.consts import (
|
8
|
+
from edu_rdm_integration.core.consts import (
|
9
9
|
REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA,
|
10
10
|
)
|
11
|
-
from edu_rdm_integration.export_data.base.caches import (
|
11
|
+
from edu_rdm_integration.stages.export_data.functions.base.caches import (
|
12
12
|
BaseExportDataFunctionCacheStorage,
|
13
13
|
BaseExportDataRunnerCacheStorage,
|
14
14
|
)
|
15
|
-
from edu_rdm_integration.export_data.base.errors import (
|
15
|
+
from edu_rdm_integration.stages.export_data.functions.base.errors import (
|
16
16
|
BaseExportDataError,
|
17
17
|
)
|
18
|
-
from edu_rdm_integration.export_data.base.functions import (
|
18
|
+
from edu_rdm_integration.stages.export_data.functions.base.functions import (
|
19
19
|
BaseExportDataFunction,
|
20
20
|
)
|
21
|
-
from edu_rdm_integration.export_data.base.helpers import (
|
21
|
+
from edu_rdm_integration.stages.export_data.functions.base.helpers import (
|
22
22
|
BaseExportDataFunctionHelper,
|
23
23
|
BaseExportDataRunnerHelper,
|
24
24
|
)
|
25
|
-
from edu_rdm_integration.export_data.base.managers import (
|
25
|
+
from edu_rdm_integration.stages.export_data.functions.base.managers import (
|
26
26
|
BaseExportDataRunnerManager,
|
27
27
|
)
|
28
|
-
from edu_rdm_integration.export_data.base.presenters import (
|
28
|
+
from edu_rdm_integration.stages.export_data.functions.base.presenters import (
|
29
29
|
BaseExportDataResultPresenter,
|
30
30
|
)
|
31
|
-
from edu_rdm_integration.export_data.base.results import (
|
31
|
+
from edu_rdm_integration.stages.export_data.functions.base.results import (
|
32
32
|
BaseExportDataFunctionResult,
|
33
33
|
BaseExportDataRunnerResult,
|
34
34
|
)
|
35
|
-
from edu_rdm_integration.export_data.base.runners import (
|
35
|
+
from edu_rdm_integration.stages.export_data.functions.base.runners import (
|
36
36
|
BaseExportDataRunner,
|
37
37
|
)
|
38
|
-
from edu_rdm_integration.export_data.base.validators import (
|
38
|
+
from edu_rdm_integration.stages.export_data.functions.base.validators import (
|
39
39
|
BaseExportDataFunctionValidator,
|
40
40
|
BaseExportDataRunnerValidator,
|
41
41
|
)
|
@@ -44,8 +44,7 @@ from edu_rdm_integration.export_data.base.validators import (
|
|
44
44
|
class ExportDataFunctionImplementationStrategy(
|
45
45
|
WebEduSyncBaseRunnerLazySavingPredefinedQueueFunctionImplementationStrategy,
|
46
46
|
):
|
47
|
-
"""
|
48
|
-
Стратегия создания функций выгрузки данных.
|
47
|
+
"""Стратегия создания функций выгрузки данных.
|
49
48
|
|
50
49
|
Стратегия создания функции с отложенным сохранением и предустановленной очередью объектов на сохранение функций
|
51
50
|
выгрузки данных для выгрузки в "Региональная витрина данных".
|
@@ -53,8 +52,7 @@ class ExportDataFunctionImplementationStrategy(
|
|
53
52
|
|
54
53
|
@classmethod
|
55
54
|
def _prepare_uuid(cls):
|
56
|
-
"""
|
57
|
-
Получение UUID класса. Используется при регистрации сущности в базе данных.
|
55
|
+
"""Получение UUID класса. Используется при регистрации сущности в базе данных.
|
58
56
|
|
59
57
|
Если ничего не возвращает, то регистрация в БД не будет произведена.
|
60
58
|
"""
|
@@ -62,30 +60,22 @@ class ExportDataFunctionImplementationStrategy(
|
|
62
60
|
|
63
61
|
@classmethod
|
64
62
|
def _prepare_verbose_name(cls) -> str:
|
65
|
-
"""
|
66
|
-
Полное наименование для дальнейшей регистрации и отображения пользователю.
|
67
|
-
"""
|
63
|
+
"""Полное наименование для дальнейшей регистрации и отображения пользователю."""
|
68
64
|
return 'Стратегия создания функций выгрузки данных'
|
69
65
|
|
70
66
|
@classmethod
|
71
67
|
def _prepare_tags(cls) -> list[str]:
|
72
|
-
"""
|
73
|
-
Список тегов, по которым сущность можно будет осуществлять поиск.
|
74
|
-
"""
|
68
|
+
"""Список тегов, по которым сущность можно будет осуществлять поиск."""
|
75
69
|
return [REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA]
|
76
70
|
|
77
71
|
@classmethod
|
78
72
|
def _prepare_key(cls) -> str:
|
79
|
-
"""
|
80
|
-
Возвращает уникальный идентификатор стратегии создания функции.
|
81
|
-
"""
|
73
|
+
"""Возвращает уникальный идентификатор стратегии создания функции."""
|
82
74
|
return 'REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA'
|
83
75
|
|
84
76
|
@classmethod
|
85
77
|
def _prepare_title(cls) -> str:
|
86
|
-
"""
|
87
|
-
Возвращает название стратегии создания функции.
|
88
|
-
"""
|
78
|
+
"""Возвращает название стратегии создания функции."""
|
89
79
|
return (
|
90
80
|
'Стратегия создания функции с отложенным сохранением и предустановленной очередью объектов на сохранение '
|
91
81
|
'функций выгрузки данных в "Региональная витрина данных". Сохранение производится после удачной работы '
|
@@ -94,85 +84,57 @@ class ExportDataFunctionImplementationStrategy(
|
|
94
84
|
|
95
85
|
@classmethod
|
96
86
|
def _prepare_function_template_name(cls) -> Optional[str]:
|
97
|
-
"""
|
98
|
-
Формирование названия шаблона создания функции.
|
99
|
-
"""
|
87
|
+
"""Формирование названия шаблона создания функции."""
|
100
88
|
return 'function_export_data_template'
|
101
89
|
|
102
90
|
def _prepare_manager_class(self):
|
103
|
-
"""
|
104
|
-
Устанавливает класс менеджера.
|
105
|
-
"""
|
91
|
+
"""Устанавливает класс менеджера."""
|
106
92
|
self._manager_class = BaseExportDataRunnerManager
|
107
93
|
|
108
94
|
def _prepare_runner_class(self):
|
109
|
-
"""
|
110
|
-
Устанавливает класс ранера.
|
111
|
-
"""
|
95
|
+
"""Устанавливает класс ранера."""
|
112
96
|
self._runner_class = BaseExportDataRunner
|
113
97
|
|
114
98
|
def _prepare_function_class(self):
|
115
|
-
"""
|
116
|
-
Устанавливает класс Функции.
|
117
|
-
"""
|
99
|
+
"""Устанавливает класс Функции."""
|
118
100
|
self._function_class = BaseExportDataFunction
|
119
101
|
|
120
102
|
def _prepare_runner_helper_class(self):
|
121
|
-
"""
|
122
|
-
Устанавливает класс помощника ранера.
|
123
|
-
"""
|
103
|
+
"""Устанавливает класс помощника ранера."""
|
124
104
|
self._runner_helper_class = BaseExportDataRunnerHelper
|
125
105
|
|
126
106
|
def _prepare_function_helper_class(self):
|
127
|
-
"""
|
128
|
-
Устанавливает класс помощника функции.
|
129
|
-
"""
|
107
|
+
"""Устанавливает класс помощника функции."""
|
130
108
|
self._function_helper_class = BaseExportDataFunctionHelper
|
131
109
|
|
132
110
|
def _prepare_runner_validator_class(self):
|
133
|
-
"""
|
134
|
-
Устанавливает класс валидатора ранера.
|
135
|
-
"""
|
111
|
+
"""Устанавливает класс валидатора ранера."""
|
136
112
|
self._runner_validator_class = BaseExportDataRunnerValidator
|
137
113
|
|
138
114
|
def _prepare_function_validator_class(self):
|
139
|
-
"""
|
140
|
-
Устанавливает класс валидатора Функции.
|
141
|
-
"""
|
115
|
+
"""Устанавливает класс валидатора Функции."""
|
142
116
|
self._function_validator_class = BaseExportDataFunctionValidator
|
143
117
|
|
144
118
|
def _prepare_runner_cache_storage_class(self):
|
145
|
-
"""
|
146
|
-
Устанавливает класс хранилища кешей ранера.
|
147
|
-
"""
|
119
|
+
"""Устанавливает класс хранилища кешей ранера."""
|
148
120
|
self._runner_cache_storage_class = BaseExportDataRunnerCacheStorage
|
149
121
|
|
150
122
|
def _prepare_function_cache_storage_class(self):
|
151
|
-
"""
|
152
|
-
Устанавливает класс хранилища кешей Функции.
|
153
|
-
"""
|
123
|
+
"""Устанавливает класс хранилища кешей Функции."""
|
154
124
|
self._function_cache_storage_class = BaseExportDataFunctionCacheStorage
|
155
125
|
|
156
126
|
def _prepare_error_class(self):
|
157
|
-
"""
|
158
|
-
Устанавливает класс ошибки.
|
159
|
-
"""
|
127
|
+
"""Устанавливает класс ошибки."""
|
160
128
|
self._error_class = BaseExportDataError
|
161
129
|
|
162
130
|
def _prepare_runner_result_class(self):
|
163
|
-
"""
|
164
|
-
Устанавливает класс результата.
|
165
|
-
"""
|
131
|
+
"""Устанавливает класс результата."""
|
166
132
|
self._runner_result_class = BaseExportDataRunnerResult
|
167
133
|
|
168
134
|
def _prepare_function_result_class(self):
|
169
|
-
"""
|
170
|
-
Устанавливает класс результата.
|
171
|
-
"""
|
135
|
+
"""Устанавливает класс результата."""
|
172
136
|
self._function_result_class = BaseExportDataFunctionResult
|
173
137
|
|
174
138
|
def _prepare_result_presenter_class(self):
|
175
|
-
"""
|
176
|
-
Устанавливает класс презентера результата.
|
177
|
-
"""
|
139
|
+
"""Устанавливает класс презентера результата."""
|
178
140
|
self._result_presenter_class = BaseExportDataResultPresenter
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
from django.apps import (
|
2
|
+
AppConfig,
|
3
|
+
)
|
4
|
+
|
5
|
+
|
6
|
+
class RDMServiceStageAppConfig(AppConfig):
|
7
|
+
"""Приложение для организации этапа сервисного обслуживания интеграции с РВД."""
|
8
|
+
|
9
|
+
name = 'edu_rdm_integration.stages.service'
|
10
|
+
label = 'edu_rdm_integration_service_stage'
|
11
|
+
verbose_name = 'Этап сервисного обслуживания'
|
12
|
+
|
13
|
+
def ready(self):
|
14
|
+
"""Готовность приложения."""
|
15
|
+
if self.name == 'edu_rdm_integration.stages.service':
|
16
|
+
# ruff: noqa: F401
|
17
|
+
from . import (
|
18
|
+
tasks,
|
19
|
+
)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import celery
|
2
|
+
from celery.schedules import (
|
3
|
+
crontab,
|
4
|
+
)
|
5
|
+
from django.conf import (
|
6
|
+
settings,
|
7
|
+
)
|
8
|
+
|
9
|
+
from educommon.async_task.models import (
|
10
|
+
AsyncTaskType,
|
11
|
+
)
|
12
|
+
from educommon.async_task.tasks import (
|
13
|
+
UniquePeriodicAsyncTask,
|
14
|
+
)
|
15
|
+
|
16
|
+
from edu_rdm_integration.core.consts import (
|
17
|
+
TASK_QUEUE_NAME,
|
18
|
+
)
|
19
|
+
from edu_rdm_integration.stages.collect_data.helpers import (
|
20
|
+
set_failed_status_suspended_collecting_data_stages,
|
21
|
+
)
|
22
|
+
from edu_rdm_integration.stages.export_data.helpers import (
|
23
|
+
set_failed_status_suspended_exporting_data_stages,
|
24
|
+
)
|
25
|
+
|
26
|
+
|
27
|
+
class CheckSuspendedExportedStagePeriodicTask(UniquePeriodicAsyncTask):
|
28
|
+
"""Периодическая задача поиска зависших этапов/подэтапов экспорта."""
|
29
|
+
|
30
|
+
queue = TASK_QUEUE_NAME
|
31
|
+
routing_key = TASK_QUEUE_NAME
|
32
|
+
description = 'Поиск зависших этапов/подэтапов экспорта в "Региональная витрина данных"'
|
33
|
+
lock_expire_seconds = settings.RDM_CHECK_SUSPEND_TASK_LOCK_EXPIRE_SECONDS
|
34
|
+
task_type = AsyncTaskType.SYSTEM
|
35
|
+
run_every = crontab(
|
36
|
+
minute=settings.RDM_CHECK_SUSPEND_TASK_MINUTE,
|
37
|
+
hour=settings.RDM_CHECK_SUSPEND_TASK_HOUR,
|
38
|
+
day_of_week=settings.RDM_CHECK_SUSPEND_TASK_DAY_OF_WEEK,
|
39
|
+
)
|
40
|
+
|
41
|
+
def process(self, *args, **kwargs):
|
42
|
+
"""Выполнение задачи."""
|
43
|
+
super().process(*args, **kwargs)
|
44
|
+
|
45
|
+
change_status_collecting_result = set_failed_status_suspended_collecting_data_stages()
|
46
|
+
change_status_exporting_result = set_failed_status_suspended_exporting_data_stages()
|
47
|
+
|
48
|
+
task_result = {
|
49
|
+
'Прервано сборок': (
|
50
|
+
f'Этапов {change_status_collecting_result["change_stage_count"]}'
|
51
|
+
f' и подэтапов {change_status_collecting_result["change_sub_stage_count"]}'
|
52
|
+
),
|
53
|
+
'Прервано выгрузок': (
|
54
|
+
f'Этапов {change_status_exporting_result["change_stage_count"]}'
|
55
|
+
f' и подэтапов {change_status_exporting_result["change_sub_stage_count"]}'
|
56
|
+
),
|
57
|
+
}
|
58
|
+
|
59
|
+
self.set_progress(values=task_result)
|
60
|
+
|
61
|
+
|
62
|
+
celery_app = celery.app.app_or_default()
|
63
|
+
celery_app.register_task(CheckSuspendedExportedStagePeriodicTask)
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
from django.apps import (
|
2
|
+
AppConfig,
|
3
|
+
)
|
4
|
+
|
5
|
+
|
6
|
+
class RDMUploadDataStageAppConfig(AppConfig):
|
7
|
+
"""Приложение для организации этапа выгрузки файлов в РВД."""
|
8
|
+
|
9
|
+
name = 'edu_rdm_integration.stages.upload_data'
|
10
|
+
label = 'edu_rdm_integration_upload_data_stage'
|
11
|
+
verbose_name = 'Этап выгрузки файлов в РВД'
|
12
|
+
|
13
|
+
def ready(self):
|
14
|
+
"""Готовность приложения."""
|
15
|
+
if self.name == 'edu_rdm_integration.stages.upload_data':
|
16
|
+
# ruff: noqa: F401
|
17
|
+
from . import (
|
18
|
+
tasks,
|
19
|
+
)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
from m3.db import (
|
2
|
+
BaseEnumerate,
|
3
|
+
)
|
4
|
+
|
5
|
+
|
6
|
+
class FileUploadStatusEnum(BaseEnumerate):
|
7
|
+
"""Действие по отслеживаемым данным."""
|
8
|
+
|
9
|
+
IN_PROGRESS = 1
|
10
|
+
FINISHED = 2
|
11
|
+
ERROR = 3
|
12
|
+
|
13
|
+
values = {
|
14
|
+
IN_PROGRESS: 'В процессе загрузки в витрину',
|
15
|
+
FINISHED: 'Загрузка в витрину закончена',
|
16
|
+
ERROR: 'Ошибка загрузки в витрину',
|
17
|
+
}
|
@@ -3,8 +3,6 @@ from pathlib import (
|
|
3
3
|
)
|
4
4
|
from typing import (
|
5
5
|
TYPE_CHECKING,
|
6
|
-
Any,
|
7
|
-
Iterable,
|
8
6
|
Optional,
|
9
7
|
)
|
10
8
|
|
@@ -22,51 +20,63 @@ from django.db.transaction import (
|
|
22
20
|
from uploader_client.adapters import (
|
23
21
|
adapter,
|
24
22
|
)
|
23
|
+
from web_edu.plugins.gis_ruo.enums import (
|
24
|
+
OPERATIONS_METHODS_MAP,
|
25
|
+
)
|
25
26
|
|
26
27
|
from educommon import (
|
27
28
|
logger,
|
28
29
|
)
|
29
30
|
|
30
|
-
from edu_rdm_integration.consts import (
|
31
|
+
from edu_rdm_integration.core.consts import (
|
31
32
|
LOGS_DELIMITER,
|
32
33
|
)
|
33
|
-
from edu_rdm_integration.
|
34
|
-
|
34
|
+
from edu_rdm_integration.core.redis_cache import (
|
35
|
+
AbstractCache,
|
35
36
|
)
|
36
|
-
from edu_rdm_integration.export_data.
|
37
|
-
|
37
|
+
from edu_rdm_integration.stages.export_data.consts import (
|
38
|
+
ATTACHMENTS_LIMIT,
|
39
|
+
TOTAL_ATTACHMENTS_SIZE_KEY,
|
40
|
+
)
|
41
|
+
from edu_rdm_integration.stages.export_data.functions.base.consts import (
|
38
42
|
OPERATIONS_URLS_MAP,
|
39
43
|
)
|
40
|
-
from edu_rdm_integration.export_data.base.requests import (
|
44
|
+
from edu_rdm_integration.stages.export_data.functions.base.requests import (
|
41
45
|
RegionalDataMartEntityRequest,
|
42
46
|
)
|
43
|
-
from edu_rdm_integration.export_data.
|
44
|
-
|
45
|
-
|
47
|
+
from edu_rdm_integration.stages.export_data.models import (
|
48
|
+
ExportingDataSubStage,
|
49
|
+
ExportingDataSubStageAttachment,
|
50
|
+
ExportingDataSubStageStatus,
|
46
51
|
)
|
47
|
-
from edu_rdm_integration.
|
52
|
+
from edu_rdm_integration.stages.upload_data.consts import (
|
53
|
+
FAILED_STATUSES,
|
54
|
+
)
|
55
|
+
from edu_rdm_integration.stages.upload_data.dataclasses import (
|
48
56
|
UploadFile,
|
49
57
|
)
|
50
|
-
from edu_rdm_integration.
|
51
|
-
|
58
|
+
from edu_rdm_integration.stages.upload_data.enums import (
|
59
|
+
FileUploadStatusEnum,
|
52
60
|
)
|
53
|
-
from edu_rdm_integration.helpers import (
|
54
|
-
FAILED_STATUSES,
|
61
|
+
from edu_rdm_integration.stages.upload_data.helpers import (
|
55
62
|
UploadStatusHelper,
|
56
63
|
)
|
57
|
-
from edu_rdm_integration.models import (
|
64
|
+
from edu_rdm_integration.stages.upload_data.models import (
|
58
65
|
DataMartRequestStatus,
|
59
|
-
ExportingDataSubStage,
|
60
|
-
ExportingDataSubStageAttachment,
|
61
|
-
ExportingDataSubStageStatus,
|
62
66
|
ExportingDataSubStageUploaderClientLog,
|
63
67
|
UploadStatusRequestLog,
|
64
68
|
)
|
65
|
-
from edu_rdm_integration.
|
66
|
-
|
69
|
+
from edu_rdm_integration.stages.upload_data.queues import (
|
70
|
+
Queue,
|
67
71
|
)
|
68
72
|
|
69
73
|
|
74
|
+
if TYPE_CHECKING:
|
75
|
+
from uploader_client.models import (
|
76
|
+
Entry,
|
77
|
+
)
|
78
|
+
|
79
|
+
|
70
80
|
class ExportQueueSender:
|
71
81
|
"""Класс отправки данных в очередь РВД."""
|
72
82
|
|
@@ -86,9 +96,9 @@ class ExportQueueSender:
|
|
86
96
|
sended_attachment_ids = ExportingDataSubStageUploaderClientLog.objects.filter(
|
87
97
|
file_upload_status=FileUploadStatusEnum.IN_PROGRESS
|
88
98
|
).values_list('attachment_id', flat=True)
|
89
|
-
file_size = ExportingDataSubStageAttachment.objects.filter(
|
90
|
-
|
91
|
-
)
|
99
|
+
file_size = ExportingDataSubStageAttachment.objects.filter(id__in=sended_attachment_ids).aggregate(
|
100
|
+
Sum('attachment_size')
|
101
|
+
)['attachment_size__sum']
|
92
102
|
|
93
103
|
return file_size or 0
|
94
104
|
|
@@ -98,25 +108,30 @@ class ExportQueueSender:
|
|
98
108
|
|
99
109
|
def get_sub_stages_attachments_to_export(self):
|
100
110
|
"""Выборка готовых к экспорту подэтапов."""
|
101
|
-
sub_stage_ids =
|
102
|
-
self._make_stage_filter()
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
'
|
117
|
-
|
118
|
-
|
119
|
-
|
111
|
+
sub_stage_ids = (
|
112
|
+
ExportingDataSubStage.objects.filter(self._make_stage_filter())
|
113
|
+
.order_by('started_at')
|
114
|
+
.values_list('id', flat=True)[: self.limit]
|
115
|
+
)
|
116
|
+
|
117
|
+
return (
|
118
|
+
ExportingDataSubStage.objects.filter(id__in=sub_stage_ids)
|
119
|
+
.annotate(
|
120
|
+
attachment_id=F('exportingdatasubstageattachment__id'),
|
121
|
+
attachment_name=F('exportingdatasubstageattachment__attachment'),
|
122
|
+
attachment_size=F('exportingdatasubstageattachment__attachment_size'),
|
123
|
+
operation=F('exportingdatasubstageattachment__operation'),
|
124
|
+
entity=F('exportingdatasubstageentity__entity_id'),
|
125
|
+
)
|
126
|
+
.order_by('id', 'operation')
|
127
|
+
.values(
|
128
|
+
'id',
|
129
|
+
'attachment_id',
|
130
|
+
'attachment_name',
|
131
|
+
'attachment_size',
|
132
|
+
'operation',
|
133
|
+
'entity',
|
134
|
+
)
|
120
135
|
)
|
121
136
|
|
122
137
|
def set_sub_stage_to_cache(self, sub_stage_id: int, entity_name: str, attachments: list[UploadFile]) -> bool:
|
@@ -129,14 +144,10 @@ class ExportQueueSender:
|
|
129
144
|
self.queue_total_file_size += sub_stage_total_size
|
130
145
|
# Обновим размер файлов в кеш
|
131
146
|
self.cache.set(
|
132
|
-
TOTAL_ATTACHMENTS_SIZE_KEY,
|
133
|
-
self.queue_total_file_size,
|
134
|
-
timeout=settings.RDM_REDIS_CACHE_TIMEOUT_SECONDS
|
147
|
+
TOTAL_ATTACHMENTS_SIZE_KEY, self.queue_total_file_size, timeout=settings.RDM_REDIS_CACHE_TIMEOUT_SECONDS
|
135
148
|
)
|
136
149
|
|
137
|
-
logger.info(
|
138
|
-
f'{LOGS_DELIMITER * 2}ExportedDataSubStage {sub_stage_id} {entity_name} added to the queue'
|
139
|
-
)
|
150
|
+
logger.info(f'{LOGS_DELIMITER * 2}ExportedDataSubStage {sub_stage_id} {entity_name} added to the queue')
|
140
151
|
|
141
152
|
return True
|
142
153
|
|
@@ -162,12 +173,14 @@ class ExportQueueSender:
|
|
162
173
|
prev_sub_stage = stage_attachment['id']
|
163
174
|
|
164
175
|
if stage_attachment['attachment_size']:
|
165
|
-
stage_files.append(
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
176
|
+
stage_files.append(
|
177
|
+
UploadFile(
|
178
|
+
stage_attachment['attachment_id'],
|
179
|
+
stage_attachment['attachment_name'],
|
180
|
+
stage_attachment['attachment_size'],
|
181
|
+
stage_attachment['operation'],
|
182
|
+
)
|
183
|
+
)
|
171
184
|
entity = stage_attachment['entity']
|
172
185
|
|
173
186
|
# Обновляем общий объем очереди и закидываем последний элемент
|
@@ -176,14 +189,10 @@ class ExportQueueSender:
|
|
176
189
|
else:
|
177
190
|
# Сохраняем объем отправленных файлов в кеш
|
178
191
|
self.cache.set(
|
179
|
-
TOTAL_ATTACHMENTS_SIZE_KEY,
|
180
|
-
self.queue_total_file_size,
|
181
|
-
timeout=settings.RDM_REDIS_CACHE_TIMEOUT_SECONDS
|
192
|
+
TOTAL_ATTACHMENTS_SIZE_KEY, self.queue_total_file_size, timeout=settings.RDM_REDIS_CACHE_TIMEOUT_SECONDS
|
182
193
|
)
|
183
194
|
self.queue_is_full = True
|
184
|
-
logger.warning(
|
185
|
-
f'Total exported file size: {self.queue_total_file_size} - queue is full!!!'
|
186
|
-
)
|
195
|
+
logger.warning(f'Total exported file size: {self.queue_total_file_size} - queue is full!!!')
|
187
196
|
|
188
197
|
|
189
198
|
class WorkerSender:
|
@@ -303,9 +312,7 @@ class WorkerSender:
|
|
303
312
|
errors.append(result.error)
|
304
313
|
status = ExportingDataSubStageStatus.FAILED.key
|
305
314
|
else:
|
306
|
-
logger.info(
|
307
|
-
f'Response with {result.response.status_code} code and content {result.response.text}'
|
308
|
-
)
|
315
|
+
logger.info(f'Response with {result.response.status_code} code and content {result.response.text}')
|
309
316
|
self.entities.add(entity_key)
|
310
317
|
|
311
318
|
# Сохраняем информацию об отправке файлов и убираем подэтап с файлами из очереди
|
@@ -316,9 +323,7 @@ class WorkerSender:
|
|
316
323
|
sub_stage.save()
|
317
324
|
|
318
325
|
self.queue.delete_from_queue(sub_stage_id=sub_stage_id, entity_name=entity_key)
|
319
|
-
logger.info(
|
320
|
-
f'{LOGS_DELIMITER * 3}ExportedDataSubStage {sub_stage_id} {entity_key} sended from the queue'
|
321
|
-
)
|
326
|
+
logger.info(f'{LOGS_DELIMITER * 3}ExportedDataSubStage {sub_stage_id} {entity_key} sent from the queue')
|
322
327
|
|
323
328
|
def run(self):
|
324
329
|
"""Запуск воркера отправки."""
|