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,327 +0,0 @@
|
|
1
|
-
from datetime import (
|
2
|
-
date,
|
3
|
-
datetime,
|
4
|
-
time,
|
5
|
-
)
|
6
|
-
from typing import (
|
7
|
-
TYPE_CHECKING,
|
8
|
-
)
|
9
|
-
|
10
|
-
import uploader_client
|
11
|
-
from django.core.cache import (
|
12
|
-
DEFAULT_CACHE_ALIAS,
|
13
|
-
caches,
|
14
|
-
)
|
15
|
-
from django.core.management.base import (
|
16
|
-
BaseCommand,
|
17
|
-
)
|
18
|
-
from uploader_client.adapters import (
|
19
|
-
UploaderAdapter,
|
20
|
-
)
|
21
|
-
from uploader_client.contrib.rdm.interfaces.configurations import (
|
22
|
-
RegionalDataMartUploaderConfig,
|
23
|
-
)
|
24
|
-
|
25
|
-
from edu_rdm_integration.collect_data.collect import (
|
26
|
-
BaseCollectModelsData,
|
27
|
-
)
|
28
|
-
from edu_rdm_integration.consts import (
|
29
|
-
DATETIME_FORMAT,
|
30
|
-
)
|
31
|
-
from edu_rdm_integration.export_data.export import (
|
32
|
-
BaseExportEntitiesData,
|
33
|
-
)
|
34
|
-
from edu_rdm_integration.models import (
|
35
|
-
RegionalDataMartEntityEnum,
|
36
|
-
RegionalDataMartModelEnum,
|
37
|
-
)
|
38
|
-
|
39
|
-
|
40
|
-
if TYPE_CHECKING:
|
41
|
-
from django.core.management.base import (
|
42
|
-
CommandParser,
|
43
|
-
)
|
44
|
-
from uploader_client.interfaces import (
|
45
|
-
OpenAPIRequest,
|
46
|
-
)
|
47
|
-
|
48
|
-
|
49
|
-
class BaseCollectModelDataCommand(BaseCommand):
|
50
|
-
"""
|
51
|
-
Базовая команда для выполнения сбора данных моделей РВД.
|
52
|
-
"""
|
53
|
-
|
54
|
-
def add_arguments(self, parser: 'CommandParser'):
|
55
|
-
"""
|
56
|
-
Добавление параметров.
|
57
|
-
"""
|
58
|
-
models = ', '.join([
|
59
|
-
f'{key} - {value.title}'
|
60
|
-
for key, value in RegionalDataMartModelEnum.get_enum_data().items()
|
61
|
-
])
|
62
|
-
models_help_text = (
|
63
|
-
f'Значением параметра является перечисление моделей РВД, для которых должен быть произведен сбор данных. '
|
64
|
-
f'Перечисление моделей:\n{models}. Если модели не указываются, то сбор данных производится для всех '
|
65
|
-
f'моделей. Модели перечисляются через запятую без пробелов.'
|
66
|
-
)
|
67
|
-
parser.add_argument(
|
68
|
-
'--models',
|
69
|
-
action='store',
|
70
|
-
dest='models',
|
71
|
-
type=lambda e: e.split(','),
|
72
|
-
help=models_help_text,
|
73
|
-
)
|
74
|
-
|
75
|
-
parser.add_argument(
|
76
|
-
'--logs_period_started_at',
|
77
|
-
action='store',
|
78
|
-
dest='logs_period_started_at',
|
79
|
-
type=lambda started_at: datetime.strptime(started_at, DATETIME_FORMAT),
|
80
|
-
default=datetime.combine(date.today(), time.min),
|
81
|
-
help=(
|
82
|
-
'Дата и время начала периода обрабатываемых логов. Значение предоставляется в формате '
|
83
|
-
'"дд.мм.гггг чч:мм:сс". По умолчанию, сегодняшний день, время 00:00:00.'
|
84
|
-
),
|
85
|
-
)
|
86
|
-
|
87
|
-
parser.add_argument(
|
88
|
-
'--logs_period_ended_at',
|
89
|
-
action='store',
|
90
|
-
dest='logs_period_ended_at',
|
91
|
-
type=lambda ended_at: datetime.strptime(ended_at, DATETIME_FORMAT),
|
92
|
-
default=datetime.combine(date.today(), time.max),
|
93
|
-
help=(
|
94
|
-
'Дата и время конца периода обрабатываемых логов. Значение предоставляется в формате '
|
95
|
-
'"дд.мм.гггг чч:мм:сс". По умолчанию, сегодняшний день, время 23:59:59.'
|
96
|
-
),
|
97
|
-
)
|
98
|
-
|
99
|
-
def _prepare_collect_models_data_class(self, *args, **kwargs) -> BaseCollectModelsData:
|
100
|
-
"""Возвращает объект класса сбора данных моделей РВД."""
|
101
|
-
raise NotImplementedError
|
102
|
-
|
103
|
-
def handle(self, *args, **kwargs):
|
104
|
-
"""
|
105
|
-
Выполнение действий команды.
|
106
|
-
"""
|
107
|
-
collect_models_data = self._prepare_collect_models_data_class(*args, **kwargs)
|
108
|
-
collect_models_data.collect()
|
109
|
-
|
110
|
-
|
111
|
-
class BaseExportEntityDataCommand(BaseCommand):
|
112
|
-
"""
|
113
|
-
Базовая команда для выполнения выгрузки данных сущностей РВД за указанный период.
|
114
|
-
"""
|
115
|
-
|
116
|
-
def add_arguments(self, parser: 'CommandParser'):
|
117
|
-
"""
|
118
|
-
Добавление параметров.
|
119
|
-
"""
|
120
|
-
entities = ', '.join([
|
121
|
-
f'{key} - {value.title}'
|
122
|
-
for key, value in RegionalDataMartEntityEnum.get_enum_data().items()
|
123
|
-
])
|
124
|
-
entities_help_text = (
|
125
|
-
f'Значением параметра является перечисление сущностей РВД, для которых должена быть произведена выгрузка '
|
126
|
-
f'данных. Перечисление сущностей:\n{entities}. Если сущности не указываются, то выгрузка данных '
|
127
|
-
f'производится для всех сущностей. Сущности перечисляются через запятую без пробелов.'
|
128
|
-
)
|
129
|
-
parser.add_argument(
|
130
|
-
'--entities',
|
131
|
-
action='store',
|
132
|
-
dest='entities',
|
133
|
-
type=lambda e: e.split(','),
|
134
|
-
help=entities_help_text,
|
135
|
-
)
|
136
|
-
|
137
|
-
parser.add_argument(
|
138
|
-
'--period_started_at',
|
139
|
-
action='store',
|
140
|
-
dest='period_started_at',
|
141
|
-
type=lambda started_at: datetime.strptime(started_at, DATETIME_FORMAT),
|
142
|
-
default=datetime.combine(date.today(), time.min),
|
143
|
-
help=(
|
144
|
-
'Дата и время начала периода сбора записей моделей РВД. Значение предоставляется в формате '
|
145
|
-
'"дд.мм.гггг чч:мм:сс". По умолчанию, сегодняшний день, время 00:00:00.'
|
146
|
-
),
|
147
|
-
)
|
148
|
-
|
149
|
-
parser.add_argument(
|
150
|
-
'--period_ended_at',
|
151
|
-
action='store',
|
152
|
-
dest='period_ended_at',
|
153
|
-
type=(
|
154
|
-
lambda ended_at: datetime.strptime(ended_at, DATETIME_FORMAT).replace(microsecond=time.max.microsecond)
|
155
|
-
),
|
156
|
-
default=datetime.combine(date.today(), time.max),
|
157
|
-
help=(
|
158
|
-
'Дата и время конца периода сбора записей моделей РВД. Значение предоставляется в формате '
|
159
|
-
'"дд.мм.гггг чч:мм:сс". По умолчанию, сегодняшний день, время 23:59:59.'
|
160
|
-
),
|
161
|
-
)
|
162
|
-
parser.add_argument(
|
163
|
-
'--task_id',
|
164
|
-
action='store',
|
165
|
-
dest='task_id',
|
166
|
-
type=str,
|
167
|
-
default=None,
|
168
|
-
help='task_id для поиска асинхронной задачи',
|
169
|
-
)
|
170
|
-
parser.add_argument(
|
171
|
-
'--no-update-modified',
|
172
|
-
dest='update_modified',
|
173
|
-
action='store_false',
|
174
|
-
default=True,
|
175
|
-
help='Не обновлять поле modified моделей',
|
176
|
-
)
|
177
|
-
|
178
|
-
def _prepare_export_entities_data_class(self, *args, **kwargs) -> BaseExportEntitiesData:
|
179
|
-
"""Возвращает объект класса экспорта данных сущностей РВД."""
|
180
|
-
raise NotImplementedError
|
181
|
-
|
182
|
-
def handle(self, *args, **kwargs):
|
183
|
-
"""
|
184
|
-
Выполнение действий команды.
|
185
|
-
"""
|
186
|
-
export_entities_data = self._prepare_export_entities_data_class(*args, **kwargs)
|
187
|
-
export_entities_data.export()
|
188
|
-
|
189
|
-
|
190
|
-
class BaseCollectModelsDataByGeneratingLogsCommand(BaseCollectModelDataCommand):
|
191
|
-
"""
|
192
|
-
Команда сбора данных моделей РВД на основе существующих в БД данных моделей ЭШ.
|
193
|
-
|
194
|
-
Можно регулировать, для каких моделей должен быть произведен сбор данных, и период, за который должны
|
195
|
-
быть собраны логи. Логи формируются в процессе выполнения команды при помощи генератора логов LogGenerator для
|
196
|
-
указанной модели.
|
197
|
-
"""
|
198
|
-
|
199
|
-
# flake8: noqa: A003
|
200
|
-
help = 'Команда сбора данных моделей РВД на основе существующих в БД данных моделей продукта'
|
201
|
-
|
202
|
-
def add_arguments(self, parser: 'CommandParser'):
|
203
|
-
"""
|
204
|
-
Добавление параметров.
|
205
|
-
"""
|
206
|
-
super().add_arguments(parser=parser)
|
207
|
-
|
208
|
-
parser.add_argument(
|
209
|
-
'--institute_ids',
|
210
|
-
action='store',
|
211
|
-
dest='institute_ids',
|
212
|
-
type=lambda v: tuple(map(int, v.split(','))),
|
213
|
-
default=(),
|
214
|
-
help='Идентификаторы учебных заведений, для которых производится выгрузка.',
|
215
|
-
)
|
216
|
-
|
217
|
-
|
218
|
-
class BaseDatamartClientCommand(BaseCommand):
|
219
|
-
"""Базовая команда для загрузки данных/получение статуса в РВД с использованием uploader_client."""
|
220
|
-
|
221
|
-
TIMEOUT = 300
|
222
|
-
REQUEST_RETRIES = 1
|
223
|
-
|
224
|
-
def add_arguments(self, parser):
|
225
|
-
"""Добавление параметров."""
|
226
|
-
parser.add_argument(
|
227
|
-
'--url',
|
228
|
-
type=str,
|
229
|
-
required=True,
|
230
|
-
help='url хоста Datamart Studio',
|
231
|
-
)
|
232
|
-
parser.add_argument(
|
233
|
-
'--datamart_mnemonic',
|
234
|
-
type=str,
|
235
|
-
required=True,
|
236
|
-
help='мнемоника Витрины',
|
237
|
-
)
|
238
|
-
parser.add_argument(
|
239
|
-
'--organization_ogrn',
|
240
|
-
type=str,
|
241
|
-
required=True,
|
242
|
-
help='ОГРН организации, в рамках которой развёрнута Витрина',
|
243
|
-
)
|
244
|
-
parser.add_argument(
|
245
|
-
'--installation_name',
|
246
|
-
type=str,
|
247
|
-
required=True,
|
248
|
-
help='имя инсталляции в целевой Витрине',
|
249
|
-
)
|
250
|
-
parser.add_argument(
|
251
|
-
'--installation_id',
|
252
|
-
type=int,
|
253
|
-
required=True,
|
254
|
-
help='идентификатор инсталляции (присутствует в её названии)',
|
255
|
-
)
|
256
|
-
parser.add_argument(
|
257
|
-
'--username',
|
258
|
-
type=str,
|
259
|
-
required=True,
|
260
|
-
help='имя пользователя IAM',
|
261
|
-
)
|
262
|
-
parser.add_argument(
|
263
|
-
'--password',
|
264
|
-
type=str,
|
265
|
-
required=True,
|
266
|
-
help='пароль пользователя IAM',
|
267
|
-
)
|
268
|
-
|
269
|
-
def _configure_agent_client(
|
270
|
-
self,
|
271
|
-
url,
|
272
|
-
datamart_mnemonic,
|
273
|
-
organization_ogrn,
|
274
|
-
installation_name,
|
275
|
-
installation_id,
|
276
|
-
username,
|
277
|
-
password,
|
278
|
-
):
|
279
|
-
"""Конфигурирование клиента загрузчика данных в Витрину."""
|
280
|
-
uploader_client.set_config(
|
281
|
-
RegionalDataMartUploaderConfig(
|
282
|
-
interface='uploader_client.contrib.rdm.interfaces.rest.ProxyAPIInterface',
|
283
|
-
cache=caches[DEFAULT_CACHE_ALIAS],
|
284
|
-
url=url,
|
285
|
-
datamart_name=datamart_mnemonic,
|
286
|
-
organization_ogrn=organization_ogrn,
|
287
|
-
installation_name=installation_name,
|
288
|
-
installation_id=installation_id,
|
289
|
-
username=username,
|
290
|
-
password=password,
|
291
|
-
timeout=self.TIMEOUT,
|
292
|
-
request_retries=self.REQUEST_RETRIES,
|
293
|
-
)
|
294
|
-
)
|
295
|
-
|
296
|
-
def _get_request(self, **options) -> 'OpenAPIRequest':
|
297
|
-
"""Возвращает запрос для отправки в РВД."""
|
298
|
-
raise NotImplementedError
|
299
|
-
|
300
|
-
def handle(self, *args, **options):
|
301
|
-
"""Выполнение действий команды."""
|
302
|
-
self._configure_agent_client(
|
303
|
-
url=options['url'],
|
304
|
-
datamart_mnemonic=options['datamart_mnemonic'],
|
305
|
-
organization_ogrn=options['organization_ogrn'],
|
306
|
-
installation_name=options['installation_name'],
|
307
|
-
installation_id=options['installation_id'],
|
308
|
-
username=options['username'],
|
309
|
-
password=options['password'],
|
310
|
-
)
|
311
|
-
|
312
|
-
request = self._get_request(**options)
|
313
|
-
|
314
|
-
result = UploaderAdapter().send(request)
|
315
|
-
|
316
|
-
if result.error:
|
317
|
-
self.stdout.write(self.style.ERROR(f'ERROR:\n'))
|
318
|
-
self.stdout.write(
|
319
|
-
f'{result.error}\n'
|
320
|
-
f'REQUEST:\n"{result.log.request}"\n\n'
|
321
|
-
f'RESPONSE:\n"{result.log.response}"\n'
|
322
|
-
)
|
323
|
-
else:
|
324
|
-
self.stdout.write(self.style.SUCCESS(f'SUCCESS:\n'))
|
325
|
-
self.stdout.write(
|
326
|
-
f'Response with {result.response.status_code} code and content:\n{result.response.text}\n'
|
327
|
-
)
|