edu-rdm-integration 3.9.1__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} +30 -192
- 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.1.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.1.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.1.dist-info → edu_rdm_integration-3.10.0.dist-info}/WHEEL +0 -0
- {edu_rdm_integration-3.9.1.dist-info → edu_rdm_integration-3.10.0.dist-info}/licenses/LICENSE +0 -0
- {edu_rdm_integration-3.9.1.dist-info → edu_rdm_integration-3.10.0.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,4 @@
|
|
1
|
-
"""
|
2
|
-
Команда для проставления расчетов файла . По умолчанию собирается за месяц. Обновление работает асинхронно.
|
1
|
+
"""Команда для проставления расчетов файла . По умолчанию собирается за месяц. Обновление работает асинхронно.
|
3
2
|
|
4
3
|
Выполнение:
|
5
4
|
django-admin async_fix_attachment_size --chunk_size=50 --count_store_size --connection_pool_size=5
|
@@ -15,7 +14,6 @@ django-admin async_fix_attachment_size --chunk_size=50 --count_store_size --conn
|
|
15
14
|
--async_workers_count количество одновременных асинхронных воркеров-исполнителей по умолчанию 20
|
16
15
|
"""
|
17
16
|
|
18
|
-
|
19
17
|
import asyncio
|
20
18
|
from datetime import (
|
21
19
|
date,
|
@@ -39,12 +37,12 @@ from educommon.utils.seqtools import (
|
|
39
37
|
make_chunks,
|
40
38
|
)
|
41
39
|
|
42
|
-
from edu_rdm_integration.
|
43
|
-
FileUploadStatusEnum,
|
44
|
-
)
|
45
|
-
from edu_rdm_integration.models import (
|
40
|
+
from edu_rdm_integration.stages.export_data.models import (
|
46
41
|
ExportingDataSubStageAttachment,
|
47
42
|
)
|
43
|
+
from edu_rdm_integration.stages.upload_data.enums import (
|
44
|
+
FileUploadStatusEnum,
|
45
|
+
)
|
48
46
|
|
49
47
|
|
50
48
|
DEFAULT_QUERYSET_CHUNK_SIZE = 500
|
@@ -61,7 +59,7 @@ class Command(BaseCommand):
|
|
61
59
|
'Команда для проставления размера по умолчанию (в байтах) для отправленных файлов.'
|
62
60
|
)
|
63
61
|
|
64
|
-
def __init__(self,
|
62
|
+
def __init__(self, *args, **kwargs):
|
65
63
|
super().__init__(*args, **kwargs)
|
66
64
|
|
67
65
|
self.result = {
|
@@ -76,25 +74,21 @@ class Command(BaseCommand):
|
|
76
74
|
'--chunk_size',
|
77
75
|
type=int,
|
78
76
|
default=DEFAULT_QUERYSET_CHUNK_SIZE,
|
79
|
-
help='Кол-во единовременно изменяемых элементов в запросе'
|
77
|
+
help='Кол-во единовременно изменяемых элементов в запросе',
|
78
|
+
)
|
79
|
+
(
|
80
|
+
parser.add_argument(
|
81
|
+
'--count_store_size', action='store_true', default=False, help='Рассчитать размер файлов'
|
82
|
+
),
|
80
83
|
)
|
81
84
|
parser.add_argument(
|
82
|
-
'--
|
83
|
-
action='store_true',
|
84
|
-
default=False,
|
85
|
-
help='Рассчитать размер файлов'
|
86
|
-
),
|
87
|
-
parser.add_argument(
|
88
|
-
'--connection_pool_size',
|
89
|
-
type=int,
|
90
|
-
default=DEFAULT_POOL_SIZE,
|
91
|
-
help='Кол-во одновременных коннектов к базе'
|
85
|
+
'--connection_pool_size', type=int, default=DEFAULT_POOL_SIZE, help='Кол-во одновременных коннектов к базе'
|
92
86
|
)
|
93
87
|
parser.add_argument(
|
94
88
|
'--async_workers_count',
|
95
89
|
type=int,
|
96
90
|
default=DEFAULT_ASYNC_WORKERS_COUNT,
|
97
|
-
help='Кол-во одновременных асинхронных воркеров-исполнителей'
|
91
|
+
help='Кол-во одновременных асинхронных воркеров-исполнителей',
|
98
92
|
)
|
99
93
|
parser.add_argument(
|
100
94
|
'--date_begin',
|
@@ -108,11 +102,7 @@ class Command(BaseCommand):
|
|
108
102
|
)
|
109
103
|
|
110
104
|
def get_attachments_fix_query(
|
111
|
-
self,
|
112
|
-
chunk_size: int,
|
113
|
-
date_begin: date,
|
114
|
-
date_end: date,
|
115
|
-
count_store_size: bool
|
105
|
+
self, chunk_size: int, date_begin: date, date_end: date, count_store_size: bool
|
116
106
|
) -> list[tuple[int, int]]:
|
117
107
|
"""Формирование id файлов, которым надо обновить размер."""
|
118
108
|
logger.info('Определение файлов, которым надо обновить размер.')
|
@@ -128,25 +118,22 @@ class Command(BaseCommand):
|
|
128
118
|
for chunk in make_chunks(attachment_query.iterator(), chunk_size):
|
129
119
|
if count_store_size:
|
130
120
|
update_attachments.append(
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
121
|
+
[
|
122
|
+
(
|
123
|
+
attachment.id,
|
124
|
+
attachment.attachment.size
|
125
|
+
if attachment.attachment.field.storage.exists(attachment.attachment.name)
|
126
|
+
else DEFAULT_FILE_SIZE,
|
127
|
+
)
|
128
|
+
for attachment in chunk
|
129
|
+
]
|
139
130
|
)
|
140
131
|
else:
|
141
132
|
update_attachments.append([(attachment.id, DEFAULT_FILE_SIZE) for attachment in chunk])
|
142
133
|
|
143
134
|
return update_attachments
|
144
135
|
|
145
|
-
async def execute_update_sql(
|
146
|
-
self,
|
147
|
-
pool: asyncpg.Pool,
|
148
|
-
data: list[tuple[int, int]]
|
149
|
-
) -> None:
|
136
|
+
async def execute_update_sql(self, pool: asyncpg.Pool, data: list[tuple[int, int]]) -> None:
|
150
137
|
"""Метод для исполнения сгенерированного UPDATE sql запроса."""
|
151
138
|
self.result['initial_count_rows_to_fix'] += len(data)
|
152
139
|
logger.info('Обновление размера файлов')
|
@@ -157,18 +144,14 @@ class Command(BaseCommand):
|
|
157
144
|
UPDATE rdm_exporting_data_sub_stage_attachment
|
158
145
|
set attachment_size = $2
|
159
146
|
where id = $1;
|
160
|
-
""",
|
147
|
+
""",
|
148
|
+
data,
|
161
149
|
)
|
162
150
|
self.result['fixed_rows_count'] += len(data)
|
163
151
|
except Exception as ex:
|
164
152
|
self.result['errors'].append(str(ex))
|
165
153
|
|
166
|
-
async def fix_attachment_size(
|
167
|
-
self,
|
168
|
-
fix_queries: list,
|
169
|
-
pool_size: int = None,
|
170
|
-
workers_count: int = None
|
171
|
-
) -> None:
|
154
|
+
async def fix_attachment_size(self, fix_queries: list, pool_size: int = None, workers_count: int = None) -> None:
|
172
155
|
"""Асинхронное обновление размера файлов."""
|
173
156
|
pool = await asyncpg.create_pool(
|
174
157
|
max_size=pool_size,
|
@@ -177,7 +160,7 @@ class Command(BaseCommand):
|
|
177
160
|
port=DB_SETTINGS['PORT'],
|
178
161
|
user=DB_SETTINGS['USER'],
|
179
162
|
password=DB_SETTINGS['PASSWORD'],
|
180
|
-
database=DB_SETTINGS['NAME']
|
163
|
+
database=DB_SETTINGS['NAME'],
|
181
164
|
)
|
182
165
|
if len(fix_queries) > workers_count:
|
183
166
|
for chunk in make_chunks(fix_queries, workers_count):
|
@@ -192,9 +175,9 @@ class Command(BaseCommand):
|
|
192
175
|
connection_pool_size: int,
|
193
176
|
chunk_size: int,
|
194
177
|
date_begin: date,
|
195
|
-
date_end:date,
|
178
|
+
date_end: date,
|
196
179
|
async_workers_count: int,
|
197
|
-
count_store_size: bool
|
180
|
+
count_store_size: bool,
|
198
181
|
):
|
199
182
|
"""Обновление размеров файла."""
|
200
183
|
fix_queries = self.get_attachments_fix_query(chunk_size, date_begin, date_end, count_store_size)
|
@@ -228,12 +211,7 @@ class Command(BaseCommand):
|
|
228
211
|
logger.info('Обновление размеров файла\n')
|
229
212
|
|
230
213
|
self.update_attachment_size(
|
231
|
-
connection_pool_size,
|
232
|
-
chunk_size,
|
233
|
-
date_begin,
|
234
|
-
date_end,
|
235
|
-
async_workers_count,
|
236
|
-
count_store_size
|
214
|
+
connection_pool_size, chunk_size, date_begin, date_end, async_workers_count, count_store_size
|
237
215
|
)
|
238
216
|
|
239
217
|
delta = datetime.now() - time_start
|
edu_rdm_integration/{management → stages/upload_data/management}/commands/check_upload_status.py
RENAMED
@@ -1,5 +1,4 @@
|
|
1
|
-
"""
|
2
|
-
Команда для проверки состояния отправленных в витрину данных.
|
1
|
+
"""Команда для проверки состояния отправленных в витрину данных.
|
3
2
|
|
4
3
|
Необязательные параметры:
|
5
4
|
--period_started_at - дата и время начала периода загрузки данных в витрину
|
@@ -9,6 +8,7 @@
|
|
9
8
|
Пример использования:
|
10
9
|
python manage.py check_upload_status --period_started_at="01.11.2023 10:00:00" --thread_count=4
|
11
10
|
"""
|
11
|
+
|
12
12
|
from datetime import (
|
13
13
|
date,
|
14
14
|
datetime,
|
@@ -18,6 +18,7 @@ from typing import (
|
|
18
18
|
TYPE_CHECKING,
|
19
19
|
Any,
|
20
20
|
)
|
21
|
+
|
21
22
|
from django.core.cache import (
|
22
23
|
cache,
|
23
24
|
)
|
@@ -25,16 +26,16 @@ from django.core.management.base import (
|
|
25
26
|
BaseCommand,
|
26
27
|
)
|
27
28
|
|
28
|
-
from edu_rdm_integration.consts import (
|
29
|
+
from edu_rdm_integration.core.consts import (
|
29
30
|
DATETIME_FORMAT,
|
30
31
|
)
|
31
|
-
from edu_rdm_integration.enums import (
|
32
|
+
from edu_rdm_integration.stages.upload_data.enums import (
|
32
33
|
FileUploadStatusEnum,
|
33
34
|
)
|
34
|
-
from edu_rdm_integration.helpers import (
|
35
|
+
from edu_rdm_integration.stages.upload_data.helpers import (
|
35
36
|
UploadStatusHelper,
|
36
37
|
)
|
37
|
-
from edu_rdm_integration.models import (
|
38
|
+
from edu_rdm_integration.stages.upload_data.models import (
|
38
39
|
ExportingDataSubStageUploaderClientLog,
|
39
40
|
)
|
40
41
|
|
edu_rdm_integration/{management → stages/upload_data/management}/commands/datamart_status.py
RENAMED
@@ -1,13 +1,13 @@
|
|
1
|
-
from edu_rdm_integration.export_data.base.requests import (
|
1
|
+
from edu_rdm_integration.stages.export_data.functions.base.requests import (
|
2
2
|
RegionalDataMartStatusRequest,
|
3
3
|
)
|
4
|
-
from edu_rdm_integration.management.
|
4
|
+
from edu_rdm_integration.stages.upload_data.management.base import (
|
5
5
|
BaseDatamartClientCommand,
|
6
6
|
)
|
7
7
|
|
8
8
|
|
9
|
+
# ruff: noqa: D101
|
9
10
|
class Command(BaseDatamartClientCommand):
|
10
|
-
|
11
11
|
help = 'Команда для получения статуса загрузки файла в РВД с использованием uploader-client.' # noqa A003
|
12
12
|
|
13
13
|
def add_arguments(self, parser):
|
edu_rdm_integration/{management → stages/upload_data/management}/commands/datamart_upload.py
RENAMED
@@ -2,17 +2,17 @@ from pathlib import (
|
|
2
2
|
Path,
|
3
3
|
)
|
4
4
|
|
5
|
-
from edu_rdm_integration.export_data.base.requests import (
|
5
|
+
from edu_rdm_integration.stages.export_data.functions.base.requests import (
|
6
6
|
RegionalDataMartEntityRequest,
|
7
7
|
)
|
8
|
-
from edu_rdm_integration.management.
|
8
|
+
from edu_rdm_integration.stages.upload_data.management.base import (
|
9
9
|
BaseDatamartClientCommand,
|
10
10
|
)
|
11
11
|
|
12
12
|
|
13
|
+
# ruff: noqa: D101
|
13
14
|
class Command(BaseDatamartClientCommand):
|
14
|
-
|
15
|
-
help = 'Команда для загрузки csv-файла в РВД с использованием uploader-client.' # noqa A003
|
15
|
+
help = 'Команда для загрузки csv-файла в РВД с использованием uploader-client.'
|
16
16
|
|
17
17
|
def add_arguments(self, parser):
|
18
18
|
"""Добавление параметров."""
|
@@ -0,0 +1,161 @@
|
|
1
|
+
# Generated by Django 3.2.24 on 2025-06-28 14:21
|
2
|
+
|
3
|
+
import django.db.models.deletion
|
4
|
+
from django.db import (
|
5
|
+
migrations,
|
6
|
+
models,
|
7
|
+
)
|
8
|
+
|
9
|
+
import educommon.django.db.mixins
|
10
|
+
import m3_db_utils.mixins
|
11
|
+
|
12
|
+
|
13
|
+
class Migration(migrations.Migration):
|
14
|
+
initial = True
|
15
|
+
|
16
|
+
dependencies = [
|
17
|
+
('edu_rdm_integration_export_data_stage', '0001_initial'),
|
18
|
+
('uploader_client', '0001_initial'),
|
19
|
+
]
|
20
|
+
|
21
|
+
operations = [
|
22
|
+
migrations.SeparateDatabaseAndState(
|
23
|
+
state_operations=[
|
24
|
+
migrations.CreateModel(
|
25
|
+
name='DataMartRequestStatus',
|
26
|
+
fields=[
|
27
|
+
('title', models.TextField(verbose_name='расшифровка значения')),
|
28
|
+
('value', models.IntegerField(verbose_name='значение')),
|
29
|
+
(
|
30
|
+
'key',
|
31
|
+
models.CharField(
|
32
|
+
db_index=True, max_length=512, primary_key=True, serialize=False, verbose_name='ключ'
|
33
|
+
),
|
34
|
+
),
|
35
|
+
('order_number', models.PositiveIntegerField(default=100000, verbose_name='Порядковый номер')),
|
36
|
+
],
|
37
|
+
options={
|
38
|
+
'verbose_name': 'Статус загрузки данных в Витрину',
|
39
|
+
'verbose_name_plural': 'Статусы загрузки данных в Витрину',
|
40
|
+
'db_table': 'rdm_request_status',
|
41
|
+
},
|
42
|
+
bases=(m3_db_utils.mixins.BaseValueMixin, models.Model),
|
43
|
+
),
|
44
|
+
migrations.CreateModel(
|
45
|
+
name='ExportingDataSubStageUploaderClientLog',
|
46
|
+
fields=[
|
47
|
+
(
|
48
|
+
'id',
|
49
|
+
models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
50
|
+
),
|
51
|
+
(
|
52
|
+
'request_id',
|
53
|
+
models.CharField(
|
54
|
+
blank=True, db_index=True, max_length=100, verbose_name='Id запроса загрузки в витрину'
|
55
|
+
),
|
56
|
+
),
|
57
|
+
('is_emulation', models.BooleanField(default=False, verbose_name='Включен режим эмуляции')),
|
58
|
+
(
|
59
|
+
'file_upload_status',
|
60
|
+
models.SmallIntegerField(
|
61
|
+
blank=True,
|
62
|
+
choices=[
|
63
|
+
(1, 'В процессе загрузки в витрину'),
|
64
|
+
(2, 'Загрузка в витрину закончена'),
|
65
|
+
(3, 'Ошибка загрузки в витрину'),
|
66
|
+
],
|
67
|
+
null=True,
|
68
|
+
verbose_name='Общий статус загрузки файла в витрину',
|
69
|
+
),
|
70
|
+
),
|
71
|
+
(
|
72
|
+
'created',
|
73
|
+
models.DateTimeField(
|
74
|
+
auto_now_add=True, db_index=True, null=True, verbose_name='Дата создания'
|
75
|
+
),
|
76
|
+
),
|
77
|
+
(
|
78
|
+
'modified',
|
79
|
+
models.DateTimeField(
|
80
|
+
auto_now=True, db_index=True, null=True, verbose_name='Дата изменения'
|
81
|
+
),
|
82
|
+
),
|
83
|
+
(
|
84
|
+
'attachment',
|
85
|
+
models.ForeignKey(
|
86
|
+
on_delete=django.db.models.deletion.CASCADE,
|
87
|
+
to='edu_rdm_integration_export_data_stage.exportingdatasubstageattachment',
|
88
|
+
verbose_name='Прикрепленный файл',
|
89
|
+
),
|
90
|
+
),
|
91
|
+
(
|
92
|
+
'entry',
|
93
|
+
models.ForeignKey(
|
94
|
+
on_delete=django.db.models.deletion.CASCADE,
|
95
|
+
related_name='uploader_client_log',
|
96
|
+
to='uploader_client.entry',
|
97
|
+
verbose_name='Лог запроса и ответа',
|
98
|
+
),
|
99
|
+
),
|
100
|
+
(
|
101
|
+
'sub_stage',
|
102
|
+
models.ForeignKey(
|
103
|
+
on_delete=django.db.models.deletion.CASCADE,
|
104
|
+
to='edu_rdm_integration_export_data_stage.exportingdatasubstage',
|
105
|
+
verbose_name='Подэтап выгрузки данных',
|
106
|
+
),
|
107
|
+
),
|
108
|
+
],
|
109
|
+
options={
|
110
|
+
'verbose_name': 'Лог запроса подэтапа выгрузки данных',
|
111
|
+
'verbose_name_plural': 'Лог запроса подэтапа выгрузки данных',
|
112
|
+
'db_table': 'rdm_exporting_data_sub_stage_uploader_client_log',
|
113
|
+
},
|
114
|
+
bases=(educommon.django.db.mixins.ReprStrPreModelMixin, models.Model),
|
115
|
+
),
|
116
|
+
migrations.CreateModel(
|
117
|
+
name='UploadStatusRequestLog',
|
118
|
+
fields=[
|
119
|
+
(
|
120
|
+
'id',
|
121
|
+
models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
122
|
+
),
|
123
|
+
(
|
124
|
+
'entry',
|
125
|
+
models.ForeignKey(
|
126
|
+
on_delete=django.db.models.deletion.CASCADE,
|
127
|
+
related_name='upload_status_request_log',
|
128
|
+
to='uploader_client.entry',
|
129
|
+
verbose_name='Cвязь запроса статуса с запросом в витрину',
|
130
|
+
),
|
131
|
+
),
|
132
|
+
(
|
133
|
+
'request_status',
|
134
|
+
models.ForeignKey(
|
135
|
+
blank=True,
|
136
|
+
null=True,
|
137
|
+
on_delete=django.db.models.deletion.PROTECT,
|
138
|
+
to='edu_rdm_integration_upload_data_stage.datamartrequeststatus',
|
139
|
+
verbose_name='Статус запроса в витрине',
|
140
|
+
),
|
141
|
+
),
|
142
|
+
(
|
143
|
+
'upload',
|
144
|
+
models.ForeignKey(
|
145
|
+
on_delete=django.db.models.deletion.CASCADE,
|
146
|
+
to='edu_rdm_integration_upload_data_stage.exportingdatasubstageuploaderclientlog',
|
147
|
+
verbose_name='Cвязь запроса статуса с загрузкой файла в витрину',
|
148
|
+
),
|
149
|
+
),
|
150
|
+
],
|
151
|
+
options={
|
152
|
+
'verbose_name': 'Лог запроса подэтапа выгрузки данных',
|
153
|
+
'verbose_name_plural': 'Логи запроса подэтапа выгрузки данных',
|
154
|
+
'db_table': 'rdm_upload_status_request_log',
|
155
|
+
},
|
156
|
+
bases=(educommon.django.db.mixins.ReprStrPreModelMixin, models.Model),
|
157
|
+
),
|
158
|
+
],
|
159
|
+
database_operations=[],
|
160
|
+
),
|
161
|
+
]
|
File without changes
|
@@ -0,0 +1,175 @@
|
|
1
|
+
from django.db.models import (
|
2
|
+
CASCADE,
|
3
|
+
PROTECT,
|
4
|
+
BooleanField,
|
5
|
+
CharField,
|
6
|
+
DateTimeField,
|
7
|
+
ForeignKey,
|
8
|
+
SmallIntegerField,
|
9
|
+
)
|
10
|
+
from m3.db import (
|
11
|
+
BaseObjectModel,
|
12
|
+
)
|
13
|
+
from uploader_client.models import (
|
14
|
+
Entry,
|
15
|
+
)
|
16
|
+
|
17
|
+
from educommon.django.db.mixins import (
|
18
|
+
ReprStrPreModelMixin,
|
19
|
+
)
|
20
|
+
from m3_db_utils.models import (
|
21
|
+
ModelEnumValue,
|
22
|
+
TitledIntegerModelEnum,
|
23
|
+
)
|
24
|
+
|
25
|
+
from edu_rdm_integration.stages.export_data.models import (
|
26
|
+
ExportingDataSubStage,
|
27
|
+
ExportingDataSubStageAttachment,
|
28
|
+
)
|
29
|
+
from edu_rdm_integration.stages.upload_data.enums import (
|
30
|
+
FileUploadStatusEnum,
|
31
|
+
)
|
32
|
+
|
33
|
+
|
34
|
+
class DataMartRequestStatus(TitledIntegerModelEnum):
|
35
|
+
"""Модель-перечисление статусов загрузки данных в Витрину."""
|
36
|
+
|
37
|
+
UPLOAD_TO_BUFFER = ModelEnumValue(
|
38
|
+
value=-1,
|
39
|
+
title='Загрузка данных в буффер',
|
40
|
+
)
|
41
|
+
|
42
|
+
BUFFERED = ModelEnumValue(
|
43
|
+
value=0,
|
44
|
+
title='Запрос буфферизирован',
|
45
|
+
)
|
46
|
+
|
47
|
+
WAIT_FOR_OPEN_DELTA = ModelEnumValue(
|
48
|
+
value=1,
|
49
|
+
title='Ожидает открытия дельты',
|
50
|
+
)
|
51
|
+
|
52
|
+
IN_PROCESSING = ModelEnumValue(
|
53
|
+
value=2,
|
54
|
+
title='В обработке',
|
55
|
+
)
|
56
|
+
|
57
|
+
SUCCESSFULLY_PROCESSED = ModelEnumValue(
|
58
|
+
value=3,
|
59
|
+
title='Успешно обработан',
|
60
|
+
)
|
61
|
+
|
62
|
+
FAILED_PROCESSING = ModelEnumValue(
|
63
|
+
value=4,
|
64
|
+
title='Ошибка обработки запроса',
|
65
|
+
)
|
66
|
+
|
67
|
+
REQUEST_ID_NOT_FOUND = ModelEnumValue(
|
68
|
+
value=5,
|
69
|
+
title='Идентификатор запроса не обнаружен',
|
70
|
+
)
|
71
|
+
|
72
|
+
FORMAT_LOGICAL_CONTROL = ModelEnumValue(
|
73
|
+
value=6,
|
74
|
+
title='Форматно-логический контроль',
|
75
|
+
)
|
76
|
+
|
77
|
+
FLC_ERROR = ModelEnumValue(
|
78
|
+
value=7,
|
79
|
+
title='Ошибки ФЛК',
|
80
|
+
)
|
81
|
+
|
82
|
+
class Meta:
|
83
|
+
db_table = 'rdm_request_status'
|
84
|
+
verbose_name = 'Статус загрузки данных в Витрину'
|
85
|
+
verbose_name_plural = 'Статусы загрузки данных в Витрину'
|
86
|
+
|
87
|
+
|
88
|
+
class ExportingDataSubStageUploaderClientLog(ReprStrPreModelMixin, BaseObjectModel):
|
89
|
+
"""Связь лога Загрузчика данных с подэтапом выгрузки данных."""
|
90
|
+
|
91
|
+
entry = ForeignKey(
|
92
|
+
to=Entry,
|
93
|
+
verbose_name='Лог запроса и ответа',
|
94
|
+
on_delete=CASCADE,
|
95
|
+
related_name='uploader_client_log',
|
96
|
+
)
|
97
|
+
|
98
|
+
sub_stage = ForeignKey(
|
99
|
+
to=ExportingDataSubStage,
|
100
|
+
verbose_name='Подэтап выгрузки данных',
|
101
|
+
on_delete=CASCADE,
|
102
|
+
)
|
103
|
+
|
104
|
+
attachment = ForeignKey(
|
105
|
+
to=ExportingDataSubStageAttachment,
|
106
|
+
verbose_name='Прикрепленный файл',
|
107
|
+
on_delete=CASCADE,
|
108
|
+
)
|
109
|
+
|
110
|
+
request_id = CharField(
|
111
|
+
verbose_name='Id запроса загрузки в витрину',
|
112
|
+
max_length=100,
|
113
|
+
blank=True,
|
114
|
+
db_index=True,
|
115
|
+
)
|
116
|
+
|
117
|
+
is_emulation = BooleanField(
|
118
|
+
verbose_name='Включен режим эмуляции',
|
119
|
+
default=False,
|
120
|
+
)
|
121
|
+
|
122
|
+
file_upload_status = SmallIntegerField(
|
123
|
+
verbose_name='Общий статус загрузки файла в витрину',
|
124
|
+
choices=FileUploadStatusEnum.get_choices(),
|
125
|
+
null=True,
|
126
|
+
blank=True,
|
127
|
+
)
|
128
|
+
|
129
|
+
created = DateTimeField(
|
130
|
+
verbose_name='Дата создания',
|
131
|
+
auto_now_add=True,
|
132
|
+
null=True,
|
133
|
+
blank=True,
|
134
|
+
db_index=True,
|
135
|
+
)
|
136
|
+
modified = DateTimeField(
|
137
|
+
verbose_name='Дата изменения',
|
138
|
+
auto_now=True,
|
139
|
+
null=True,
|
140
|
+
blank=True,
|
141
|
+
db_index=True,
|
142
|
+
)
|
143
|
+
|
144
|
+
class Meta:
|
145
|
+
db_table = 'rdm_exporting_data_sub_stage_uploader_client_log'
|
146
|
+
verbose_name = 'Лог запроса подэтапа выгрузки данных'
|
147
|
+
verbose_name_plural = 'Лог запроса подэтапа выгрузки данных'
|
148
|
+
|
149
|
+
|
150
|
+
class UploadStatusRequestLog(ReprStrPreModelMixin, BaseObjectModel):
|
151
|
+
"""Модель связывающая статусы, загрузку файла в витрину и http-запрос к витрине."""
|
152
|
+
|
153
|
+
upload = ForeignKey(
|
154
|
+
verbose_name='Cвязь запроса статуса с загрузкой файла в витрину',
|
155
|
+
to=ExportingDataSubStageUploaderClientLog,
|
156
|
+
on_delete=CASCADE,
|
157
|
+
)
|
158
|
+
entry = ForeignKey(
|
159
|
+
verbose_name='Cвязь запроса статуса с запросом в витрину',
|
160
|
+
to=Entry,
|
161
|
+
on_delete=CASCADE,
|
162
|
+
related_name='upload_status_request_log',
|
163
|
+
)
|
164
|
+
request_status = ForeignKey(
|
165
|
+
verbose_name='Статус запроса в витрине',
|
166
|
+
to=DataMartRequestStatus,
|
167
|
+
on_delete=PROTECT,
|
168
|
+
null=True,
|
169
|
+
blank=True,
|
170
|
+
)
|
171
|
+
|
172
|
+
class Meta:
|
173
|
+
db_table = 'rdm_upload_status_request_log'
|
174
|
+
verbose_name = 'Лог запроса подэтапа выгрузки данных'
|
175
|
+
verbose_name_plural = 'Логи запроса подэтапа выгрузки данных'
|