edu-rdm-integration 3.9.2__py3-none-any.whl → 3.10.0__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/{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/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.0.dist-info}/METADATA +238 -238
- edu_rdm_integration-3.10.0.dist-info/RECORD +255 -0
- edu_rdm_integration/app_meta.py +0 -16
- edu_rdm_integration/app_settings.py +0 -77
- edu_rdm_integration/collect_and_export_data/models.py +0 -67
- 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_and_export_data/migrations → core}/__init__.py +0 -0
- /edu_rdm_integration/{mapping.py → core/mapping.py} +0 -0
- /edu_rdm_integration/{collect_data → 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/base → pipelines}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data/calculated → pipelines/transfer}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data/calculated/base → 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 → rdm_entities}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data/non_calculated/base → rdm_entities/migrations}/__init__.py +0 -0
- /edu_rdm_integration/{enum_register → rdm_models}/__init__.py +0 -0
- /edu_rdm_integration/{export_data → rdm_models/migrations}/__init__.py +0 -0
- /edu_rdm_integration/{export_data/base → stages}/__init__.py +0 -0
- /edu_rdm_integration/{function_templates → 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 → 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/{management/commands → stages/collect_data/functions}/__init__.py +0 -0
- /edu_rdm_integration/{registry → 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/{uploader_log → stages/collect_data/functions/calculated}/__init__.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.0.dist-info}/WHEEL +0 -0
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.0.dist-info}/licenses/LICENSE +0 -0
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.0.dist-info}/top_level.txt +0 -0
@@ -1,74 +1,48 @@
|
|
1
|
-
import logging
|
2
|
-
from abc import (
|
3
|
-
ABC,
|
4
|
-
abstractmethod,
|
5
|
-
)
|
6
1
|
from collections import (
|
7
2
|
defaultdict,
|
8
3
|
)
|
9
4
|
from typing import (
|
10
|
-
|
11
|
-
)
|
12
|
-
|
13
|
-
from django.db.models import (
|
14
|
-
Q,
|
5
|
+
TYPE_CHECKING,
|
15
6
|
)
|
16
7
|
|
17
8
|
from m3_db_utils.consts import (
|
18
9
|
DEFAULT_ORDER_NUMBER,
|
19
10
|
)
|
20
11
|
|
21
|
-
from edu_rdm_integration.consts import (
|
12
|
+
from edu_rdm_integration.core.consts import (
|
22
13
|
REGIONAL_DATA_MART_INTEGRATION_COLLECTING_DATA,
|
23
14
|
REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA,
|
24
15
|
)
|
25
|
-
from edu_rdm_integration.
|
26
|
-
|
27
|
-
get_collecting_managers_max_period_ended_dates,
|
28
|
-
get_exporting_managers_max_period_ended_dates,
|
29
|
-
save_command_log_link,
|
16
|
+
from edu_rdm_integration.core.storages import (
|
17
|
+
RegionalDataMartEntityStorage,
|
30
18
|
)
|
31
|
-
from edu_rdm_integration.models import (
|
32
|
-
ExportingDataSubStageUploaderClientLog,
|
19
|
+
from edu_rdm_integration.rdm_entities.models import (
|
33
20
|
RegionalDataMartEntityEnum,
|
34
|
-
TransferredEntity,
|
35
21
|
)
|
36
|
-
from edu_rdm_integration.
|
37
|
-
|
22
|
+
from edu_rdm_integration.stages.collect_data.helpers import (
|
23
|
+
get_collecting_managers_max_period_ended_dates,
|
24
|
+
)
|
25
|
+
from edu_rdm_integration.stages.export_data.helpers import (
|
26
|
+
get_exporting_managers_max_period_ended_dates,
|
38
27
|
)
|
39
28
|
|
40
29
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
# Идентификатор команды для передачи сигналу manager_created
|
46
|
-
self.command_id: Optional[int] = kwargs.get('command_id')
|
47
|
-
|
48
|
-
self._file_handler: Optional[logging.FileHandler] = None
|
49
|
-
|
50
|
-
self._add_file_handler()
|
51
|
-
|
52
|
-
@property
|
53
|
-
@abstractmethod
|
54
|
-
def _log_file_path(self) -> str:
|
55
|
-
"""Путь до лог файла."""
|
56
|
-
|
57
|
-
def _add_file_handler(self) -> None:
|
58
|
-
"""Добавляет обработчик логов."""
|
59
|
-
if self.command_id:
|
60
|
-
self._file_handler = logging.FileHandler(self._log_file_path)
|
30
|
+
if TYPE_CHECKING:
|
31
|
+
from datetime import (
|
32
|
+
datetime,
|
33
|
+
)
|
61
34
|
|
62
|
-
|
63
|
-
|
35
|
+
from django.db.models import (
|
36
|
+
QuerySet,
|
37
|
+
)
|
64
38
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
logging.getLogger('info_logger').removeHandler(self._file_handler)
|
69
|
-
logging.getLogger('exception_logger').removeHandler(self._file_handler)
|
39
|
+
from function_tools.managers import (
|
40
|
+
RunnerManager,
|
41
|
+
)
|
70
42
|
|
71
|
-
|
43
|
+
from edu_rdm_integration.pipelines.transfer.models import (
|
44
|
+
TransferredEntity,
|
45
|
+
)
|
72
46
|
|
73
47
|
|
74
48
|
class BaseTransferLatestEntitiesDataMixin:
|
@@ -87,12 +61,11 @@ class BaseTransferLatestEntitiesDataMixin:
|
|
87
61
|
self._entites_models_map = defaultdict(list)
|
88
62
|
|
89
63
|
def get_entity_qs(self) -> 'QuerySet[TransferredEntity]':
|
90
|
-
"""Возвращает сущностей сбора и выгрузки."""
|
64
|
+
"""Возвращает QuerySet сущностей сбора и выгрузки."""
|
91
65
|
raise NotImplementedError
|
92
66
|
|
93
67
|
def _collect_transferred_entities(self) -> None:
|
94
68
|
"""Собирает сущности РВД, по которым будет произведен сбор и экспорт данных."""
|
95
|
-
|
96
69
|
self._transferred_entities = [
|
97
70
|
(RegionalDataMartEntityEnum.get_model_enum_value(key=entity), export_enabled)
|
98
71
|
for entity, export_enabled in self.get_entity_qs().values_list('entity', 'export_enabled')
|
@@ -101,8 +74,11 @@ class BaseTransferLatestEntitiesDataMixin:
|
|
101
74
|
# Собираем словарь по сущностям с моделями для сборки
|
102
75
|
for entity, _ in self._transferred_entities:
|
103
76
|
self._entites_models_map[entity.key].extend(
|
104
|
-
(
|
105
|
-
|
77
|
+
(
|
78
|
+
model_enum
|
79
|
+
for model_enum in (*entity.additional_model_enums, entity.main_model_enum)
|
80
|
+
if model_enum.order_number != DEFAULT_ORDER_NUMBER
|
81
|
+
)
|
106
82
|
)
|
107
83
|
|
108
84
|
def _collect_managers(self) -> None:
|
@@ -0,0 +1,48 @@
|
|
1
|
+
from django.db.models import (
|
2
|
+
CASCADE,
|
3
|
+
BooleanField,
|
4
|
+
OneToOneField,
|
5
|
+
PositiveIntegerField,
|
6
|
+
)
|
7
|
+
from m3 import (
|
8
|
+
json_encode,
|
9
|
+
)
|
10
|
+
from m3.db import (
|
11
|
+
BaseObjectModel,
|
12
|
+
)
|
13
|
+
|
14
|
+
from edu_rdm_integration.pipelines.transfer.enums import (
|
15
|
+
EntityLevelQueueTypeEnum,
|
16
|
+
)
|
17
|
+
from edu_rdm_integration.rdm_entities.models import (
|
18
|
+
RegionalDataMartEntityEnum,
|
19
|
+
)
|
20
|
+
|
21
|
+
|
22
|
+
class TransferredEntity(BaseObjectModel):
|
23
|
+
"""Сущность, по которой должен быть произведен сбор и экспорт данных."""
|
24
|
+
|
25
|
+
entity = OneToOneField(
|
26
|
+
to=RegionalDataMartEntityEnum,
|
27
|
+
verbose_name='Сущность',
|
28
|
+
on_delete=CASCADE,
|
29
|
+
)
|
30
|
+
export_enabled = BooleanField(
|
31
|
+
verbose_name='Включение экспорта для сущности',
|
32
|
+
default=True,
|
33
|
+
)
|
34
|
+
queue_level = PositiveIntegerField(
|
35
|
+
choices=EntityLevelQueueTypeEnum.get_choices(),
|
36
|
+
default=EntityLevelQueueTypeEnum.BASE,
|
37
|
+
verbose_name='Уровень очереди',
|
38
|
+
)
|
39
|
+
|
40
|
+
class Meta:
|
41
|
+
db_table = 'rdm_transferred_entity'
|
42
|
+
verbose_name = 'Сущность, по которой должен быть произведен сбор и экспорт данных'
|
43
|
+
verbose_name_plural = 'Сущности, по которым должен быть произведен сбор и экспорт данных'
|
44
|
+
|
45
|
+
@json_encode
|
46
|
+
def no_export(self):
|
47
|
+
"""Формирует отображение признака отключения экспорта."""
|
48
|
+
return 'Нет' if self.export_enabled else 'Да'
|
@@ -1,5 +1,5 @@
|
|
1
|
-
from
|
2
|
-
|
1
|
+
from datetime import (
|
2
|
+
datetime,
|
3
3
|
)
|
4
4
|
from typing import (
|
5
5
|
TYPE_CHECKING,
|
@@ -13,13 +13,13 @@ from celery.schedules import (
|
|
13
13
|
from django.conf import (
|
14
14
|
settings,
|
15
15
|
)
|
16
|
-
from django.core.cache import (
|
17
|
-
cache,
|
18
|
-
)
|
19
16
|
from django.utils import (
|
20
17
|
timezone,
|
21
18
|
)
|
22
19
|
|
20
|
+
from educommon import (
|
21
|
+
logger,
|
22
|
+
)
|
23
23
|
from educommon.async_task.models import (
|
24
24
|
AsyncTaskType,
|
25
25
|
RunningTask,
|
@@ -27,122 +27,52 @@ from educommon.async_task.models import (
|
|
27
27
|
from educommon.async_task.tasks import (
|
28
28
|
UniquePeriodicAsyncTask,
|
29
29
|
)
|
30
|
+
from educommon.django.db.mixins.validation import (
|
31
|
+
QuerySet,
|
32
|
+
)
|
30
33
|
from educommon.utils.date import (
|
31
34
|
get_today_min_datetime,
|
32
35
|
)
|
33
36
|
|
34
|
-
from edu_rdm_integration.
|
35
|
-
BaseTransferLatestEntitiesDataMixin,
|
36
|
-
)
|
37
|
-
from edu_rdm_integration.collect_and_export_data.models import (
|
38
|
-
EduRdmCollectDataCommandProgress,
|
39
|
-
EduRdmExportDataCommandProgress,
|
40
|
-
)
|
41
|
-
from edu_rdm_integration.collect_data.collect import (
|
42
|
-
BaseCollectLatestModelsData,
|
43
|
-
)
|
44
|
-
from edu_rdm_integration.collect_data.helpers import (
|
45
|
-
set_failed_status_suspended_collecting_data_stages,
|
46
|
-
)
|
47
|
-
from edu_rdm_integration.consts import (
|
37
|
+
from edu_rdm_integration.core.consts import (
|
48
38
|
FAST_TRANSFER_TASK_QUEUE_NAME,
|
49
39
|
LONG_TRANSFER_TASK_QUEUE_NAME,
|
50
40
|
TASK_QUEUE_NAME,
|
51
41
|
)
|
52
|
-
from edu_rdm_integration.enums import (
|
42
|
+
from edu_rdm_integration.core.enums import (
|
53
43
|
CommandType,
|
44
|
+
)
|
45
|
+
from edu_rdm_integration.core.helpers import (
|
46
|
+
save_command_log_link,
|
47
|
+
)
|
48
|
+
from edu_rdm_integration.pipelines.transfer.enums import (
|
54
49
|
EntityLevelQueueTypeEnum,
|
55
|
-
FileUploadStatusEnum,
|
56
50
|
)
|
57
|
-
from edu_rdm_integration.
|
58
|
-
|
59
|
-
UploadData,
|
51
|
+
from edu_rdm_integration.pipelines.transfer.mixins import (
|
52
|
+
BaseTransferLatestEntitiesDataMixin,
|
60
53
|
)
|
61
|
-
from edu_rdm_integration.
|
62
|
-
|
54
|
+
from edu_rdm_integration.pipelines.transfer.models import (
|
55
|
+
TransferredEntity,
|
63
56
|
)
|
64
|
-
from edu_rdm_integration.
|
65
|
-
|
57
|
+
from edu_rdm_integration.stages.collect_data.models import (
|
58
|
+
EduRdmCollectDataCommandProgress,
|
66
59
|
)
|
67
|
-
from edu_rdm_integration.
|
68
|
-
|
69
|
-
save_command_log_link,
|
60
|
+
from edu_rdm_integration.stages.collect_data.operations import (
|
61
|
+
BaseCollectLatestModelsData,
|
70
62
|
)
|
71
|
-
from edu_rdm_integration.models import (
|
72
|
-
|
73
|
-
|
63
|
+
from edu_rdm_integration.stages.export_data.models import (
|
64
|
+
EduRdmExportDataCommandProgress,
|
65
|
+
)
|
66
|
+
from edu_rdm_integration.stages.export_data.operations import (
|
67
|
+
ExportLatestEntitiesData,
|
74
68
|
)
|
75
69
|
|
76
70
|
|
77
71
|
if TYPE_CHECKING:
|
78
|
-
from
|
79
|
-
|
80
|
-
)
|
81
|
-
|
82
|
-
|
83
|
-
class RDMCheckUploadStatus(UniquePeriodicAsyncTask):
|
84
|
-
"""Периодическая задача для сбора статусов по загрузке файла в витрину."""
|
85
|
-
|
86
|
-
queue = TASK_QUEUE_NAME
|
87
|
-
routing_key = TASK_QUEUE_NAME
|
88
|
-
description = 'Сбор статусов загрузки данных в витрину "Региональная витрина данных"'
|
89
|
-
lock_expire_seconds = settings.RDM_UPLOAD_STATUS_TASK_LOCK_EXPIRE_SECONDS
|
90
|
-
task_type = AsyncTaskType.UNKNOWN
|
91
|
-
run_every = crontab(
|
92
|
-
minute=settings.RDM_UPLOAD_STATUS_TASK_MINUTE,
|
93
|
-
hour=settings.RDM_UPLOAD_STATUS_TASK_HOUR,
|
94
|
-
day_of_week=settings.RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK,
|
95
|
-
)
|
96
|
-
|
97
|
-
def process(self, *args, **kwargs):
|
98
|
-
"""Выполнение."""
|
99
|
-
super().process(*args, **kwargs)
|
100
|
-
|
101
|
-
# Получаем незавершенные загрузки данных в витрину
|
102
|
-
in_progress_uploads = ExportingDataSubStageUploaderClientLog.objects.filter(
|
103
|
-
file_upload_status=FileUploadStatusEnum.IN_PROGRESS,
|
104
|
-
is_emulation=False,
|
105
|
-
).select_related('attachment')
|
106
|
-
|
107
|
-
UploadStatusHelper(in_progress_uploads, cache).run()
|
108
|
-
|
109
|
-
|
110
|
-
class CheckSuspendedExportedStagePeriodicTask(UniquePeriodicAsyncTask):
|
111
|
-
"""Периодическая задача поиска зависших этапов/подэтапов экспорта."""
|
112
|
-
|
113
|
-
queue = TASK_QUEUE_NAME
|
114
|
-
routing_key = TASK_QUEUE_NAME
|
115
|
-
description = 'Поиск зависших этапов/подэтапов экспорта в "Региональная витрина данных"'
|
116
|
-
lock_expire_seconds = settings.RDM_CHECK_SUSPEND_TASK_LOCK_EXPIRE_SECONDS
|
117
|
-
task_type = AsyncTaskType.SYSTEM
|
118
|
-
run_every = crontab(
|
119
|
-
minute=settings.RDM_CHECK_SUSPEND_TASK_MINUTE,
|
120
|
-
hour=settings.RDM_CHECK_SUSPEND_TASK_HOUR,
|
121
|
-
day_of_week=settings.RDM_CHECK_SUSPEND_TASK_DAY_OF_WEEK,
|
72
|
+
from django.db.models import (
|
73
|
+
QuerySet,
|
122
74
|
)
|
123
75
|
|
124
|
-
def process(self, *args, **kwargs):
|
125
|
-
"""Выполнение задачи."""
|
126
|
-
super().process(*args, **kwargs)
|
127
|
-
|
128
|
-
change_status_collecting_result = set_failed_status_suspended_collecting_data_stages()
|
129
|
-
change_status_exporting_result = set_failed_status_suspended_exporting_data_stages()
|
130
|
-
|
131
|
-
task_result = {
|
132
|
-
'Прервано сборок': (
|
133
|
-
f'Этапов {change_status_collecting_result["change_stage_count"]}'
|
134
|
-
f' и подэтапов {change_status_collecting_result["change_sub_stage_count"]}'
|
135
|
-
),
|
136
|
-
'Прервано выгрузок': (
|
137
|
-
f'Этапов {change_status_exporting_result["change_stage_count"]}'
|
138
|
-
f' и подэтапов {change_status_exporting_result["change_sub_stage_count"]}'
|
139
|
-
),
|
140
|
-
}
|
141
|
-
|
142
|
-
self.set_progress(
|
143
|
-
values=task_result
|
144
|
-
)
|
145
|
-
|
146
76
|
|
147
77
|
class BaseTransferLatestEntitiesDataPeriodicTask(BaseTransferLatestEntitiesDataMixin, UniquePeriodicAsyncTask):
|
148
78
|
"""Базовая периодическая задача сбора и выгрузки данных для переиспользования в разных очередях."""
|
@@ -186,8 +116,7 @@ class BaseTransferLatestEntitiesDataPeriodicTask(BaseTransferLatestEntitiesDataM
|
|
186
116
|
"""Создает команду сбора данных моделей РВД."""
|
187
117
|
manager = self._collecting_data_managers[model]
|
188
118
|
manager_last_collected = (
|
189
|
-
self._collecting_data_manager_to_logs_period_end.get(manager.uuid)
|
190
|
-
or get_today_min_datetime()
|
119
|
+
self._collecting_data_manager_to_logs_period_end.get(manager.uuid) or get_today_min_datetime()
|
191
120
|
)
|
192
121
|
|
193
122
|
period_started_at = manager_last_collected
|
@@ -218,9 +147,10 @@ class BaseTransferLatestEntitiesDataPeriodicTask(BaseTransferLatestEntitiesDataM
|
|
218
147
|
type=CommandType.AUTO,
|
219
148
|
)
|
220
149
|
|
150
|
+
return None
|
151
|
+
|
221
152
|
def _prepare_collect_model_data_class(
|
222
|
-
self,
|
223
|
-
command: EduRdmCollectDataCommandProgress
|
153
|
+
self, command: EduRdmCollectDataCommandProgress
|
224
154
|
) -> BaseCollectLatestModelsData:
|
225
155
|
"""Подготавливает объект класса сбора данных моделей РВД."""
|
226
156
|
return BaseCollectLatestModelsData(
|
@@ -252,9 +182,13 @@ class BaseTransferLatestEntitiesDataPeriodicTask(BaseTransferLatestEntitiesDataM
|
|
252
182
|
self._period_ended_at = None
|
253
183
|
self.prepare_collect_export_managers()
|
254
184
|
|
255
|
-
task_id =
|
256
|
-
|
257
|
-
|
185
|
+
task_id = (
|
186
|
+
RunningTask.objects.filter(
|
187
|
+
pk=self.request.id,
|
188
|
+
)
|
189
|
+
.values_list('pk', flat=True)
|
190
|
+
.first()
|
191
|
+
)
|
258
192
|
|
259
193
|
collected_entity_models = set()
|
260
194
|
|
@@ -267,13 +201,17 @@ class BaseTransferLatestEntitiesDataPeriodicTask(BaseTransferLatestEntitiesDataM
|
|
267
201
|
collected_entity_models.add(model_enum_value.key)
|
268
202
|
try:
|
269
203
|
self._run_collect_model_data(model_enum_value.key, task_id)
|
270
|
-
except Exception:
|
204
|
+
except Exception as e:
|
205
|
+
logger.warning(e)
|
206
|
+
|
271
207
|
continue
|
272
208
|
|
273
209
|
try:
|
274
210
|
if export_enabled:
|
275
211
|
self._run_export_entity_data(entity_enum.key, task_id)
|
276
|
-
except Exception:
|
212
|
+
except Exception as e:
|
213
|
+
logger.warning(e)
|
214
|
+
|
277
215
|
continue
|
278
216
|
|
279
217
|
|
@@ -292,6 +230,7 @@ class TransferLatestEntitiesDataPeriodicTask(BaseTransferLatestEntitiesDataPerio
|
|
292
230
|
)
|
293
231
|
|
294
232
|
def get_entity_qs(self) -> 'QuerySet[TransferredEntity]':
|
233
|
+
"""Возвращает QuerySet сущностей сбора и выгрузки."""
|
295
234
|
return TransferredEntity.objects.filter(queue_level=EntityLevelQueueTypeEnum.BASE)
|
296
235
|
|
297
236
|
|
@@ -310,6 +249,7 @@ class TransferLatestEntitiesDataFastPeriodicTask(BaseTransferLatestEntitiesDataP
|
|
310
249
|
)
|
311
250
|
|
312
251
|
def get_entity_qs(self) -> 'QuerySet[TransferredEntity]':
|
252
|
+
"""Возвращает QuerySet сущностей сбора и выгрузки."""
|
313
253
|
return TransferredEntity.objects.filter(queue_level=EntityLevelQueueTypeEnum.FAST)
|
314
254
|
|
315
255
|
|
@@ -328,50 +268,11 @@ class TransferLatestEntitiesDataLongPeriodicTask(BaseTransferLatestEntitiesDataP
|
|
328
268
|
)
|
329
269
|
|
330
270
|
def get_entity_qs(self) -> 'QuerySet[TransferredEntity]':
|
271
|
+
"""Возвращает QuerySet сущностей сбора и выгрузки."""
|
331
272
|
return TransferredEntity.objects.filter(queue_level=EntityLevelQueueTypeEnum.LONG)
|
332
273
|
|
333
274
|
|
334
|
-
class UploadDataAsyncTask(UniquePeriodicAsyncTask):
|
335
|
-
"""Формирование очереди файлов и их отправка."""
|
336
|
-
|
337
|
-
queue = TASK_QUEUE_NAME
|
338
|
-
routing_key = TASK_QUEUE_NAME
|
339
|
-
description = 'Отправка данных в витрину "Региональная витрина данных"'
|
340
|
-
lock_expire_seconds = settings.RDM_UPLOAD_DATA_TASK_LOCK_EXPIRE_SECONDS
|
341
|
-
task_type = AsyncTaskType.SYSTEM
|
342
|
-
run_every = crontab(
|
343
|
-
minute=settings.RDM_UPLOAD_DATA_TASK_MINUTE,
|
344
|
-
hour=settings.RDM_UPLOAD_DATA_TASK_HOUR,
|
345
|
-
day_of_week=settings.RDM_UPLOAD_DATA_TASK_DAY_OF_WEEK,
|
346
|
-
)
|
347
|
-
|
348
|
-
def process(self, *args, **kwargs):
|
349
|
-
"""Выполнение."""
|
350
|
-
super().process(*args, **kwargs)
|
351
|
-
|
352
|
-
queue = RdmRedisSubStageAttachmentQueue()
|
353
|
-
upload_data = UploadData(
|
354
|
-
data_cache=cache,
|
355
|
-
queue=queue,
|
356
|
-
)
|
357
|
-
|
358
|
-
upload_result = upload_data.upload_data()
|
359
|
-
|
360
|
-
task_result = {
|
361
|
-
'Общий объем отправленных файлов': f"{upload_result['total_file_size']}",
|
362
|
-
'Очередь отправки переполнена': 'Да' if upload_result['queue_is_full'] else 'Нет',
|
363
|
-
'Сущности, отправленные в витрину': upload_result['uploaded_entities']
|
364
|
-
}
|
365
|
-
|
366
|
-
self.set_progress(
|
367
|
-
values=task_result
|
368
|
-
)
|
369
|
-
|
370
|
-
|
371
275
|
celery_app = celery.app.app_or_default()
|
372
|
-
celery_app.register_task(RDMCheckUploadStatus)
|
373
|
-
celery_app.register_task(CheckSuspendedExportedStagePeriodicTask)
|
374
276
|
celery_app.register_task(TransferLatestEntitiesDataPeriodicTask)
|
375
|
-
celery_app.register_task(UploadDataAsyncTask)
|
376
277
|
celery_app.register_task(TransferLatestEntitiesDataFastPeriodicTask)
|
377
|
-
celery_app.register_task(TransferLatestEntitiesDataLongPeriodicTask)
|
278
|
+
celery_app.register_task(TransferLatestEntitiesDataLongPeriodicTask)
|
@@ -13,7 +13,7 @@ from educommon.utils.ui import (
|
|
13
13
|
append_template_globals,
|
14
14
|
)
|
15
15
|
|
16
|
-
from edu_rdm_integration.models import (
|
16
|
+
from edu_rdm_integration.pipelines.transfer.models import (
|
17
17
|
TransferredEntity,
|
18
18
|
)
|
19
19
|
|
@@ -25,12 +25,8 @@ class TransferredEntityListWindow(BaseListWindow):
|
|
25
25
|
"""Инициализация компонентов окна."""
|
26
26
|
super()._init_components()
|
27
27
|
|
28
|
-
self.export_off_button = ExtButton(
|
29
|
-
|
30
|
-
)
|
31
|
-
self.export_on_button = ExtButton(
|
32
|
-
text='Включить экспорт', handler='onExport'
|
33
|
-
)
|
28
|
+
self.export_off_button = ExtButton(text='Отключить экспорт', handler='offExport')
|
29
|
+
self.export_on_button = ExtButton(text='Включить экспорт', handler='onExport')
|
34
30
|
|
35
31
|
def _do_layout(self):
|
36
32
|
"""Размещение компонентов окна на форме."""
|
@@ -43,9 +39,7 @@ class TransferredEntityListWindow(BaseListWindow):
|
|
43
39
|
super().set_params(params, *args, **kwargs)
|
44
40
|
|
45
41
|
append_template_globals(self, 'ui-js/transferred-entity-list.js')
|
46
|
-
self.export_change_action_url = (
|
47
|
-
params['pack'].export_change_action.get_absolute_url()
|
48
|
-
)
|
42
|
+
self.export_change_action_url = params['pack'].export_change_action.get_absolute_url()
|
49
43
|
self.pack = params['pack']
|
50
44
|
|
51
45
|
|