edu-rdm-integration 3.9.2__py3-none-any.whl → 3.10.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- edu_rdm_integration/__init__.py +0 -1
- edu_rdm_integration/adapters/apps.py +15 -2
- edu_rdm_integration/adapters/caches.py +25 -12
- edu_rdm_integration/adapters/errors.py +13 -2
- edu_rdm_integration/adapters/functions.py +53 -14
- edu_rdm_integration/adapters/helpers.py +34 -8
- edu_rdm_integration/adapters/managers.py +41 -5
- edu_rdm_integration/adapters/presenters.py +26 -2
- edu_rdm_integration/adapters/receivers.py +16 -2
- edu_rdm_integration/adapters/results.py +50 -4
- edu_rdm_integration/adapters/runners.py +79 -20
- edu_rdm_integration/adapters/strategies.py +56 -54
- edu_rdm_integration/adapters/validators.py +43 -4
- edu_rdm_integration/apps.py +3 -23
- edu_rdm_integration/collect_and_export_data/__init__.py +1 -1
- edu_rdm_integration/collect_and_export_data/apps.py +1 -0
- edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +107 -17
- edu_rdm_integration/collect_and_export_data/migrations/0002_auto_20250204_1413.py +4 -2
- edu_rdm_integration/collect_and_export_data/models.py +1 -67
- edu_rdm_integration/{consts.py → core/consts.py} +0 -11
- edu_rdm_integration/{enums.py → core/enums.py} +7 -54
- edu_rdm_integration/core/helpers.py +331 -0
- edu_rdm_integration/core/operations.py +71 -0
- edu_rdm_integration/core/redis_cache.py +20 -0
- edu_rdm_integration/{collect_and_export_data → core/registry}/actions.py +6 -12
- edu_rdm_integration/core/registry/apps.py +11 -0
- edu_rdm_integration/{collect_and_export_data → core/registry}/ui.py +1 -1
- edu_rdm_integration/{storages.py → core/storages.py} +8 -17
- edu_rdm_integration/{utils.py → core/utils.py} +29 -91
- edu_rdm_integration/migrations/0001_initial.py +294 -44
- edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +1 -3
- edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -1
- edu_rdm_integration/migrations/0004_uploaderclientlog.py +1 -2
- edu_rdm_integration/migrations/0005_auto_20231204_1224.py +16 -4
- edu_rdm_integration/migrations/0006_request_status_data.py +60 -58
- edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -1
- edu_rdm_integration/migrations/0009_auto_20240522_1619.py +1 -5
- edu_rdm_integration/migrations/0010_transferredentity_export_enabled.py +0 -1
- edu_rdm_integration/migrations/0011_exportingdatasubstageentity.py +16 -3
- edu_rdm_integration/migrations/0012_exportingdatasubstageattachment_attachment_size.py +0 -1
- edu_rdm_integration/migrations/0013_set_attachment_size.py +8 -12
- edu_rdm_integration/migrations/0014_uploaddatacommand.py +33 -6
- edu_rdm_integration/migrations/0015_set_exporting_sub_stage_status.py +1 -5
- edu_rdm_integration/migrations/0016_transferredentity_queue_level.py +2 -2
- edu_rdm_integration/migrations/0017_delete_uploaddatacommand.py +3 -2
- edu_rdm_integration/migrations/__init__.py +1 -0
- edu_rdm_integration/{registry → pipelines/transfer}/actions.py +13 -26
- edu_rdm_integration/pipelines/transfer/app_meta.py +18 -0
- edu_rdm_integration/pipelines/transfer/apps.py +19 -0
- edu_rdm_integration/pipelines/transfer/enums.py +34 -0
- edu_rdm_integration/pipelines/transfer/migrations/0001_initial.py +57 -0
- edu_rdm_integration/{base.py → pipelines/transfer/mixins.py} +29 -53
- edu_rdm_integration/pipelines/transfer/models.py +48 -0
- edu_rdm_integration/{tasks.py → pipelines/transfer/tasks.py} +51 -150
- edu_rdm_integration/{registry → pipelines/transfer}/ui.py +4 -10
- edu_rdm_integration/rdm_entities/apps.py +11 -0
- edu_rdm_integration/{entities.py → rdm_entities/entities.py} +67 -57
- edu_rdm_integration/rdm_entities/migrations/0001_initial.py +44 -0
- edu_rdm_integration/{enum_register → rdm_entities}/mixins.py +8 -59
- edu_rdm_integration/rdm_entities/models.py +63 -0
- edu_rdm_integration/rdm_entities/utils.py +33 -0
- edu_rdm_integration/rdm_models/apps.py +16 -0
- edu_rdm_integration/rdm_models/migrations/0001_initial.py +40 -0
- edu_rdm_integration/rdm_models/mixins.py +67 -0
- edu_rdm_integration/rdm_models/models.py +73 -0
- edu_rdm_integration/rdm_models/utils.py +23 -0
- edu_rdm_integration/stages/collect_data/apps.py +11 -0
- edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/functions.py-tpl +2 -2
- edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/managers.py-tpl +1 -1
- edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/runners.py-tpl +1 -1
- edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/tests.py-tpl +2 -1
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/caches.py +2 -2
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/functions.py +15 -18
- edu_rdm_integration/stages/collect_data/functions/base/helpers.py +20 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/managers.py +20 -27
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/mixins.py +38 -55
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/runners.py +2 -5
- edu_rdm_integration/stages/collect_data/functions/calculated/__init__.py +0 -0
- edu_rdm_integration/stages/collect_data/functions/calculated/base/__init__.py +0 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/caches.py +3 -7
- edu_rdm_integration/stages/collect_data/functions/calculated/base/errors.py +7 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/functions.py +8 -16
- edu_rdm_integration/stages/collect_data/functions/calculated/base/helpers.py +24 -0
- edu_rdm_integration/stages/collect_data/functions/calculated/base/managers.py +19 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/presenters.py +1 -3
- edu_rdm_integration/stages/collect_data/functions/calculated/base/results.py +12 -0
- edu_rdm_integration/stages/collect_data/functions/calculated/base/runners.py +28 -0
- edu_rdm_integration/stages/collect_data/functions/calculated/base/validators.py +20 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/strategies.py +32 -70
- edu_rdm_integration/stages/collect_data/functions/non_calculated/__init__.py +0 -0
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/__init__.py +0 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/caches.py +13 -22
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/errors.py +7 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/functions.py +8 -16
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/helpers.py +24 -0
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/managers.py +19 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/presenters.py +1 -3
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/results.py +12 -0
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/runners.py +28 -0
- edu_rdm_integration/stages/collect_data/functions/non_calculated/base/validators.py +20 -0
- edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/strategies.py +32 -70
- edu_rdm_integration/{collect_data → stages/collect_data}/generators.py +9 -14
- edu_rdm_integration/stages/collect_data/helpers.py +154 -0
- edu_rdm_integration/stages/collect_data/management/__init__.py +0 -0
- edu_rdm_integration/stages/collect_data/management/base.py +100 -0
- edu_rdm_integration/stages/collect_data/management/commands/__init__.py +0 -0
- edu_rdm_integration/{management → stages/collect_data/management}/commands/collect_latest_models_data.py +5 -7
- edu_rdm_integration/{management → stages/collect_data/management}/commands/collect_models_data.py +5 -7
- edu_rdm_integration/stages/collect_data/migrations/0001_initial.py +187 -0
- edu_rdm_integration/stages/collect_data/migrations/0002_edurdmcollectdatacommandprogress.py +105 -0
- edu_rdm_integration/stages/collect_data/migrations/__init__.py +0 -0
- edu_rdm_integration/stages/collect_data/mixins.py +56 -0
- edu_rdm_integration/stages/collect_data/models.py +318 -0
- edu_rdm_integration/{collect_data/collect.py → stages/collect_data/operations.py} +30 -43
- edu_rdm_integration/stages/collect_data/registry/__init__.py +0 -0
- edu_rdm_integration/{collect_data → stages/collect_data/registry}/actions.py +17 -20
- edu_rdm_integration/stages/collect_data/registry/apps.py +11 -0
- edu_rdm_integration/{collect_data → stages/collect_data/registry}/ui.py +8 -15
- edu_rdm_integration/{collect_data → stages/collect_data}/tests.py +2 -2
- edu_rdm_integration/stages/export_data/__init__.py +0 -0
- edu_rdm_integration/stages/export_data/apps.py +11 -0
- edu_rdm_integration/stages/export_data/function_templates/__init__.py +0 -0
- edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/functions.py-tpl +2 -2
- edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/managers.py-tpl +2 -2
- edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/runners.py-tpl +2 -2
- edu_rdm_integration/stages/export_data/functions/__init__.py +0 -0
- edu_rdm_integration/stages/export_data/functions/base/__init__.py +0 -0
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/caches.py +3 -8
- edu_rdm_integration/stages/export_data/functions/base/errors.py +7 -0
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/functions.py +28 -59
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/helpers.py +7 -17
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/managers.py +19 -28
- edu_rdm_integration/stages/export_data/functions/base/presenters.py +11 -0
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/requests.py +13 -40
- edu_rdm_integration/stages/export_data/functions/base/results.py +12 -0
- edu_rdm_integration/{export_data → stages/export_data/functions}/base/runners.py +9 -21
- edu_rdm_integration/stages/export_data/functions/base/validators.py +20 -0
- edu_rdm_integration/{export_data → stages/export_data}/generators.py +7 -6
- edu_rdm_integration/stages/export_data/helpers.py +203 -0
- edu_rdm_integration/stages/export_data/management/__init__.py +0 -0
- edu_rdm_integration/stages/export_data/management/base.py +101 -0
- edu_rdm_integration/stages/export_data/management/commands/__init__.py +0 -0
- edu_rdm_integration/{management → stages/export_data/management}/commands/export_entities_data.py +5 -7
- edu_rdm_integration/{management → stages/export_data/management}/commands/export_latest_entities_data.py +5 -7
- edu_rdm_integration/stages/export_data/migrations/0001_initial.py +324 -0
- edu_rdm_integration/stages/export_data/migrations/__init__.py +0 -0
- edu_rdm_integration/stages/export_data/mixins.py +50 -0
- edu_rdm_integration/stages/export_data/models.py +362 -0
- edu_rdm_integration/{export_data/export.py → stages/export_data/operations.py} +13 -152
- edu_rdm_integration/stages/export_data/registry/__init__.py +0 -0
- edu_rdm_integration/{export_data → stages/export_data/registry}/actions.py +18 -18
- edu_rdm_integration/stages/export_data/registry/apps.py +11 -0
- edu_rdm_integration/{export_data → stages/export_data/registry}/ui.py +5 -7
- edu_rdm_integration/{export_data → stages/export_data}/strategies.py +30 -68
- edu_rdm_integration/stages/service/__init__.py +0 -0
- edu_rdm_integration/stages/service/apps.py +19 -0
- edu_rdm_integration/stages/service/tasks.py +63 -0
- edu_rdm_integration/stages/upload_data/__init__.py +0 -0
- edu_rdm_integration/stages/upload_data/apps.py +19 -0
- edu_rdm_integration/stages/upload_data/consts.py +10 -0
- edu_rdm_integration/{export_data → stages/upload_data}/dataclasses.py +1 -0
- edu_rdm_integration/stages/upload_data/enums.py +17 -0
- edu_rdm_integration/{export_data/export_manager.py → stages/upload_data/export_managers.py} +73 -68
- edu_rdm_integration/stages/upload_data/helpers.py +164 -0
- edu_rdm_integration/stages/upload_data/management/__init__.py +0 -0
- edu_rdm_integration/stages/upload_data/management/base.py +134 -0
- edu_rdm_integration/stages/upload_data/management/commands/__init__.py +0 -0
- edu_rdm_integration/{management → stages/upload_data/management}/commands/async_fix_attachment_size.py +32 -54
- edu_rdm_integration/{management → stages/upload_data/management}/commands/check_upload_status.py +7 -6
- edu_rdm_integration/{management → stages/upload_data/management}/commands/datamart_status.py +3 -3
- edu_rdm_integration/{management → stages/upload_data/management}/commands/datamart_upload.py +4 -4
- edu_rdm_integration/stages/upload_data/migrations/0001_initial.py +161 -0
- edu_rdm_integration/stages/upload_data/migrations/__init__.py +0 -0
- edu_rdm_integration/stages/upload_data/models.py +175 -0
- edu_rdm_integration/stages/upload_data/operations.py +156 -0
- edu_rdm_integration/{export_data/queue.py → stages/upload_data/queues.py} +10 -8
- edu_rdm_integration/stages/upload_data/tasks.py +103 -0
- edu_rdm_integration/stages/upload_data/uploader_log/__init__.py +0 -0
- edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/actions.py +14 -16
- edu_rdm_integration/stages/upload_data/uploader_log/apps.py +11 -0
- edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/managers.py +15 -30
- edu_rdm_integration/stages/upload_data/uploader_log/migrations/0001_initial.py +31 -0
- edu_rdm_integration/stages/upload_data/uploader_log/migrations/__init__.py +0 -0
- edu_rdm_integration/stages/upload_data/uploader_log/models.py +86 -0
- edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/ui.py +8 -6
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/METADATA +238 -238
- edu_rdm_integration-3.10.1.dist-info/RECORD +257 -0
- edu_rdm_integration/app_meta.py +0 -16
- edu_rdm_integration/app_settings.py +0 -77
- edu_rdm_integration/collect_and_export_data/utils.py +0 -224
- edu_rdm_integration/collect_data/base/helpers.py +0 -26
- edu_rdm_integration/collect_data/calculated/base/errors.py +0 -9
- edu_rdm_integration/collect_data/calculated/base/helpers.py +0 -32
- edu_rdm_integration/collect_data/calculated/base/managers.py +0 -23
- edu_rdm_integration/collect_data/calculated/base/results.py +0 -16
- edu_rdm_integration/collect_data/calculated/base/runners.py +0 -36
- edu_rdm_integration/collect_data/calculated/base/validators.py +0 -28
- edu_rdm_integration/collect_data/helpers.py +0 -92
- edu_rdm_integration/collect_data/non_calculated/base/errors.py +0 -9
- edu_rdm_integration/collect_data/non_calculated/base/helpers.py +0 -32
- edu_rdm_integration/collect_data/non_calculated/base/managers.py +0 -23
- edu_rdm_integration/collect_data/non_calculated/base/results.py +0 -16
- edu_rdm_integration/collect_data/non_calculated/base/runners.py +0 -36
- edu_rdm_integration/collect_data/non_calculated/base/validators.py +0 -28
- edu_rdm_integration/enum_register/register.py +0 -79
- edu_rdm_integration/export_data/base/errors.py +0 -9
- edu_rdm_integration/export_data/base/presenters.py +0 -13
- edu_rdm_integration/export_data/base/results.py +0 -16
- edu_rdm_integration/export_data/base/validators.py +0 -28
- edu_rdm_integration/export_data/helpers.py +0 -92
- edu_rdm_integration/helpers.py +0 -412
- edu_rdm_integration/management/general.py +0 -327
- edu_rdm_integration/models.py +0 -982
- edu_rdm_integration/redis_cache.py +0 -51
- edu_rdm_integration/uploader_log/apps.py +0 -10
- edu_rdm_integration-3.9.2.dist-info/RECORD +0 -198
- /edu_rdm_integration/{collect_data → core}/__init__.py +0 -0
- /edu_rdm_integration/{mapping.py → core/mapping.py} +0 -0
- /edu_rdm_integration/{collect_data/base → core/registry}/__init__.py +0 -0
- /edu_rdm_integration/{templates → core/registry/templates}/ui-js/start-task.js +0 -0
- /edu_rdm_integration/{signals.py → core/signals.py} +0 -0
- /edu_rdm_integration/{typing.py → core/typing.py} +0 -0
- /edu_rdm_integration/{collect_data/calculated → pipelines}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data/calculated/base → pipelines/transfer}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data/non_calculated → pipelines/transfer/migrations}/__init__.py +0 -0
- /edu_rdm_integration/{templates → pipelines/transfer/templates}/ui-js/transferred-entity-list.js +0 -0
- /edu_rdm_integration/{collect_data/non_calculated/base → rdm_entities}/__init__.py +0 -0
- /edu_rdm_integration/{enum_register → rdm_entities/migrations}/__init__.py +0 -0
- /edu_rdm_integration/{export_data → rdm_models}/__init__.py +0 -0
- /edu_rdm_integration/{export_data/base → rdm_models/migrations}/__init__.py +0 -0
- /edu_rdm_integration/{function_templates → stages}/__init__.py +0 -0
- /edu_rdm_integration/{management → stages/collect_data}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data/const.py → stages/collect_data/consts.py} +0 -0
- /edu_rdm_integration/{management/commands → stages/collect_data/function_templates}/__init__.py +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/__init__.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/apps.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/caches.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/consts.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/enums.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/errors.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/helpers.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/presenters.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/results.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/strings.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/validators.py-tpl +0 -0
- /edu_rdm_integration/{registry → stages/collect_data/functions}/__init__.py +0 -0
- /edu_rdm_integration/{uploader_log → stages/collect_data/functions/base}/__init__.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/consts.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/consts.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/enums.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/strings.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/tests.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/consts.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/enums.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/strings.py +0 -0
- /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/tests.py +0 -0
- /edu_rdm_integration/{export_data → stages/export_data}/consts.py +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/__init__.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/apps.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/caches.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/consts.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/enums.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/errors.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/helpers.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/presenters.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/results.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/strings.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/tests.py-tpl +0 -0
- /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/validators.py-tpl +0 -0
- /edu_rdm_integration/{export_data → stages/export_data/functions}/base/consts.py +0 -0
- /edu_rdm_integration/{export_data → stages/export_data/functions}/base/enums.py +0 -0
- /edu_rdm_integration/{export_data → stages/export_data/functions}/base/strings.py +0 -0
- /edu_rdm_integration/{export_data → stages/export_data/functions}/base/tests.py +0 -0
- /edu_rdm_integration/{templates → stages/export_data/registry/templates}/ui-js/stage_for_export.js +0 -0
- /edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/enums.py +0 -0
- /edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/templates/ui-js/object-grid-buttons.js +0 -0
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/WHEEL +0 -0
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/licenses/LICENSE +0 -0
- {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/top_level.txt +0 -0
@@ -14,10 +14,6 @@ from typing import (
|
|
14
14
|
from django.conf import (
|
15
15
|
settings,
|
16
16
|
)
|
17
|
-
from edu_rdm_integration.uploader_log.enums import (
|
18
|
-
RequestResultStatus,
|
19
|
-
)
|
20
|
-
|
21
17
|
from django.db.models import (
|
22
18
|
Q,
|
23
19
|
)
|
@@ -27,6 +23,9 @@ from m3_ext.ui.icons import (
|
|
27
23
|
from objectpack.actions import (
|
28
24
|
ObjectPack,
|
29
25
|
)
|
26
|
+
from objectpack.filters import (
|
27
|
+
CustomFilter,
|
28
|
+
)
|
30
29
|
|
31
30
|
from educommon.objectpack.actions import (
|
32
31
|
ExtObjectRowsAction,
|
@@ -44,21 +43,19 @@ from educommon.utils.ui import (
|
|
44
43
|
append_template_globals,
|
45
44
|
)
|
46
45
|
|
47
|
-
from edu_rdm_integration.
|
46
|
+
from edu_rdm_integration.stages.upload_data.uploader_log.enums import (
|
47
|
+
RequestResultStatus,
|
48
|
+
)
|
49
|
+
from edu_rdm_integration.stages.upload_data.uploader_log.models import (
|
48
50
|
UploaderClientLog,
|
49
51
|
)
|
50
|
-
from edu_rdm_integration.uploader_log.ui import (
|
52
|
+
from edu_rdm_integration.stages.upload_data.uploader_log.ui import (
|
51
53
|
UploaderLogInfoWindow,
|
52
54
|
)
|
53
|
-
from objectpack.filters import (
|
54
|
-
CustomFilter,
|
55
|
-
)
|
56
55
|
|
57
56
|
|
58
57
|
class UploaderLogPack(ObjectPack):
|
59
|
-
"""
|
60
|
-
Пак журнала Загрузчика данных в витрину.
|
61
|
-
"""
|
58
|
+
"""Пак журнала Загрузчика данных в витрину."""
|
62
59
|
|
63
60
|
title = 'Журнал логов РВД'
|
64
61
|
model = UploaderClientLog
|
@@ -104,13 +101,14 @@ class UploaderLogPack(ObjectPack):
|
|
104
101
|
tooltip='C',
|
105
102
|
default_value=date.today() - timedelta(days=1),
|
106
103
|
editable=False,
|
107
|
-
lookup=lambda v: Q(request_datetime__gte=datetime.combine(v, time.min))
|
108
|
-
)
|
104
|
+
lookup=lambda v: Q(request_datetime__gte=datetime.combine(v, time.min)),
|
105
|
+
)
|
106
|
+
& _fd(
|
109
107
|
'request_datetime',
|
110
108
|
tooltip='По',
|
111
109
|
default_value=date.today,
|
112
110
|
editable=False,
|
113
|
-
lookup=lambda v: Q(request_datetime__lte=datetime.combine(v, time.max))
|
111
|
+
lookup=lambda v: Q(request_datetime__lte=datetime.combine(v, time.max)),
|
114
112
|
),
|
115
113
|
'width': 11,
|
116
114
|
},
|
@@ -251,10 +249,10 @@ class UploaderLogPack(ObjectPack):
|
|
251
249
|
|
252
250
|
Args:
|
253
251
|
menu: Объект меню.
|
252
|
+
|
254
253
|
Returns:
|
255
254
|
Подменю "Администрирование -> Региональная витрина данных -> Журнал логов РВД".
|
256
255
|
"""
|
257
|
-
|
258
256
|
if settings.RDM_MENU_ITEM:
|
259
257
|
return menu.SubMenu(
|
260
258
|
'Администрирование',
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from django.apps import (
|
2
|
+
AppConfig,
|
3
|
+
)
|
4
|
+
|
5
|
+
|
6
|
+
class UploaderLoggerConfig(AppConfig): # noqa D101
|
7
|
+
"""Приложение для работы с логами выгрузки данных в РВД."""
|
8
|
+
|
9
|
+
name = 'edu_rdm_integration.stages.upload_data.uploader_log'
|
10
|
+
label = 'edu_rdm_integration_uploader_log'
|
11
|
+
verbose_name = 'Журнал логов РВД'
|
@@ -12,7 +12,7 @@ from django.db.models.functions import (
|
|
12
12
|
Cast,
|
13
13
|
)
|
14
14
|
|
15
|
-
from edu_rdm_integration.uploader_log.enums import (
|
15
|
+
from edu_rdm_integration.stages.upload_data.uploader_log.enums import (
|
16
16
|
RequestResultStatus,
|
17
17
|
)
|
18
18
|
|
@@ -26,9 +26,8 @@ class UploaderClientLogManager(Manager):
|
|
26
26
|
|
27
27
|
result_status = Case(
|
28
28
|
When(
|
29
|
-
Q(Q(error__isnull=True) | Q(error__exact=''))
|
30
|
-
|
31
|
-
then=Value(RequestResultStatus.SUCCESS)
|
29
|
+
Q(Q(error__isnull=True) | Q(error__exact='')) & Q(Q(response__isnull=False) & ~Q(response__exact='')),
|
30
|
+
then=Value(RequestResultStatus.SUCCESS),
|
32
31
|
),
|
33
32
|
default=Value(RequestResultStatus.ERROR),
|
34
33
|
output_field=PositiveSmallIntegerField(),
|
@@ -37,30 +36,21 @@ class UploaderClientLogManager(Manager):
|
|
37
36
|
query = query.annotate(
|
38
37
|
request_datetime=F('date_time'),
|
39
38
|
attachment_file=Case(
|
40
|
-
When(
|
41
|
-
request__icontains='POST',
|
42
|
-
then=F('uploader_client_log__attachment__attachment')
|
43
|
-
),
|
39
|
+
When(request__icontains='POST', then=F('uploader_client_log__attachment__attachment')),
|
44
40
|
When(
|
45
41
|
request__icontains='GET',
|
46
42
|
then=F('upload_status_request_log__upload__attachment__attachment'),
|
47
43
|
),
|
48
44
|
default=Value(''),
|
49
|
-
output_field
|
45
|
+
output_field=CharField(),
|
50
46
|
),
|
51
47
|
status_code=Case(
|
52
|
-
When(
|
53
|
-
request__icontains='POST',
|
54
|
-
then=Value('', output_field=CharField())
|
55
|
-
),
|
48
|
+
When(request__icontains='POST', then=Value('', output_field=CharField())),
|
56
49
|
When(
|
57
50
|
request__icontains='GET',
|
58
|
-
then=Cast(
|
59
|
-
'upload_status_request_log__request_status__value',
|
60
|
-
output_field=CharField()
|
61
|
-
),
|
51
|
+
then=Cast('upload_status_request_log__request_status__value', output_field=CharField()),
|
62
52
|
),
|
63
|
-
default=Value('')
|
53
|
+
default=Value(''),
|
64
54
|
),
|
65
55
|
status_description=Case(
|
66
56
|
When(
|
@@ -71,7 +61,8 @@ class UploaderClientLogManager(Manager):
|
|
71
61
|
request__icontains='GET',
|
72
62
|
then=F('upload_status_request_log__request_status__title'),
|
73
63
|
),
|
74
|
-
default=Value(''),
|
64
|
+
default=Value(''),
|
65
|
+
output_field=CharField(),
|
75
66
|
),
|
76
67
|
is_emulation=Case(
|
77
68
|
When(
|
@@ -82,20 +73,14 @@ class UploaderClientLogManager(Manager):
|
|
82
73
|
request__icontains='GET',
|
83
74
|
then=F('upload_status_request_log__upload__is_emulation'),
|
84
75
|
),
|
85
|
-
default=Value(False)
|
76
|
+
default=Value(False),
|
86
77
|
),
|
87
78
|
request_id=Case(
|
88
|
-
When(
|
89
|
-
|
90
|
-
|
91
|
-
),
|
92
|
-
When(
|
93
|
-
request__icontains='GET',
|
94
|
-
then=F('upload_status_request_log__upload__request_id')
|
95
|
-
),
|
96
|
-
default=Value('')
|
79
|
+
When(request__icontains='POST', then=F('uploader_client_log__request_id')),
|
80
|
+
When(request__icontains='GET', then=F('upload_status_request_log__upload__request_id')),
|
81
|
+
default=Value(''),
|
97
82
|
),
|
98
|
-
result_status=result_status
|
83
|
+
result_status=result_status,
|
99
84
|
)
|
100
85
|
|
101
86
|
return query
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Generated by Django 3.2.24 on 2025-06-28 14:22
|
2
|
+
|
3
|
+
from django.db import (
|
4
|
+
migrations,
|
5
|
+
)
|
6
|
+
|
7
|
+
|
8
|
+
class Migration(migrations.Migration):
|
9
|
+
initial = True
|
10
|
+
|
11
|
+
dependencies = [
|
12
|
+
('uploader_client', '0001_initial'),
|
13
|
+
]
|
14
|
+
|
15
|
+
operations = [
|
16
|
+
migrations.SeparateDatabaseAndState(
|
17
|
+
state_operations=[
|
18
|
+
migrations.CreateModel(
|
19
|
+
name='UploaderClientLog',
|
20
|
+
fields=[],
|
21
|
+
options={
|
22
|
+
'proxy': True,
|
23
|
+
'indexes': [],
|
24
|
+
'constraints': [],
|
25
|
+
},
|
26
|
+
bases=('uploader_client.entry',),
|
27
|
+
),
|
28
|
+
],
|
29
|
+
database_operations=[],
|
30
|
+
),
|
31
|
+
]
|
File without changes
|
@@ -0,0 +1,86 @@
|
|
1
|
+
from functools import (
|
2
|
+
cached_property,
|
3
|
+
)
|
4
|
+
from io import (
|
5
|
+
StringIO,
|
6
|
+
)
|
7
|
+
from typing import (
|
8
|
+
Optional,
|
9
|
+
)
|
10
|
+
|
11
|
+
from django.db.models import (
|
12
|
+
Manager,
|
13
|
+
)
|
14
|
+
from uploader_client.models import (
|
15
|
+
Entry,
|
16
|
+
)
|
17
|
+
|
18
|
+
from edu_rdm_integration.stages.upload_data.uploader_log.enums import (
|
19
|
+
RequestResultStatus,
|
20
|
+
)
|
21
|
+
from edu_rdm_integration.stages.upload_data.uploader_log.managers import (
|
22
|
+
UploaderClientLogManager,
|
23
|
+
)
|
24
|
+
|
25
|
+
|
26
|
+
class UploaderClientLog(Entry):
|
27
|
+
"""Прокси модель Загрузчика данных в витрину."""
|
28
|
+
|
29
|
+
objects = UploaderClientLogManager()
|
30
|
+
base_objects = Manager()
|
31
|
+
|
32
|
+
@cached_property
|
33
|
+
def http_method_and_url(self) -> tuple[str, str]:
|
34
|
+
"""Возвращает http-метод и url из поля запроса Entry.request."""
|
35
|
+
request = StringIO(self.request)
|
36
|
+
request_first_line = request.readline()
|
37
|
+
request.close()
|
38
|
+
|
39
|
+
method, url = request_first_line.split(' ')[:2]
|
40
|
+
if not (method and url.startswith('http')):
|
41
|
+
method = url = ''
|
42
|
+
|
43
|
+
return method.strip('[]'), url
|
44
|
+
|
45
|
+
@cached_property
|
46
|
+
def http_response_status(self) -> Optional[str]:
|
47
|
+
"""Статус-код запроса к витрине."""
|
48
|
+
try:
|
49
|
+
http_status = self.response.split(' ')[0].strip('[]')
|
50
|
+
|
51
|
+
if not http_status:
|
52
|
+
return None
|
53
|
+
|
54
|
+
if 200 <= int(http_status) < 300:
|
55
|
+
http_status = 'Успех'
|
56
|
+
elif int(http_status) >= 400:
|
57
|
+
http_status = 'Ошибка'
|
58
|
+
except (IndexError, AttributeError):
|
59
|
+
http_status = None
|
60
|
+
|
61
|
+
return http_status
|
62
|
+
|
63
|
+
@property
|
64
|
+
def http_method(self) -> str:
|
65
|
+
"""Значение http-метода."""
|
66
|
+
return self.http_method_and_url[0]
|
67
|
+
|
68
|
+
@property
|
69
|
+
def request_url(self) -> str:
|
70
|
+
"""URL запроса."""
|
71
|
+
return self.http_method_and_url[1]
|
72
|
+
|
73
|
+
@property
|
74
|
+
def request_error(self) -> Optional[str]:
|
75
|
+
"""Ошибка запроса."""
|
76
|
+
return self.error
|
77
|
+
|
78
|
+
@property
|
79
|
+
def result_status_display(self) -> str:
|
80
|
+
"""Результат запроса."""
|
81
|
+
result_status = getattr(self, 'result_status', RequestResultStatus.ERROR)
|
82
|
+
|
83
|
+
return RequestResultStatus.values.get(result_status) or RequestResultStatus.values[RequestResultStatus.ERROR]
|
84
|
+
|
85
|
+
class Meta:
|
86
|
+
proxy = True
|
@@ -45,12 +45,14 @@ class UploaderLogInfoWindow(BaseEditWindow):
|
|
45
45
|
"""Размещение компонентов окна на форме."""
|
46
46
|
super(UploaderLogInfoWindow, self)._do_layout()
|
47
47
|
|
48
|
-
self.form.items.extend(
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
48
|
+
self.form.items.extend(
|
49
|
+
(
|
50
|
+
self.field__request,
|
51
|
+
self.field__response,
|
52
|
+
self.field__error,
|
53
|
+
self.field__attachment,
|
54
|
+
)
|
55
|
+
)
|
54
56
|
|
55
57
|
def set_params(self, params):
|
56
58
|
"""Настройка окна."""
|