edu-rdm-integration 3.17.0__tar.gz → 3.18.0__tar.gz

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.

Potentially problematic release.


This version of edu-rdm-integration might be problematic. Click here for more details.

Files changed (271) hide show
  1. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/CHANGELOG.md +41 -2
  2. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/PKG-INFO +5 -4
  3. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/README.md +1 -0
  4. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/pyproject.toml +3 -3
  5. edu_rdm_integration-3.18.0/src/edu_rdm_integration/models.py +1 -0
  6. edu_rdm_integration-3.18.0/src/edu_rdm_integration/pipelines/cleanup_outdated_data/apps.py +11 -0
  7. edu_rdm_integration-3.18.0/src/edu_rdm_integration/pipelines/cleanup_outdated_data/management/commands/rdm_cleanup_outdated_data.py +20 -0
  8. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_entities/models.py +42 -0
  9. edu_rdm_integration-3.18.0/src/edu_rdm_integration/rdm_models/models.py +200 -0
  10. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/base/helpers.py +1 -0
  11. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/base/mixins.py +1 -0
  12. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/base/runners.py +3 -4
  13. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/strategies.py +1 -0
  14. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/strategies.py +1 -0
  15. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/models.py +2 -5
  16. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/operations.py +6 -5
  17. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/caches.py +9 -3
  18. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/functions.py +3 -4
  19. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/runners.py +1 -0
  20. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/tests.py +3 -6
  21. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/strategies.py +1 -0
  22. edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/service/model_outdated_data/cleaners.py +26 -0
  23. edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/service/model_outdated_data/managers.py +45 -0
  24. edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/upload_data/management/__init__.py +0 -0
  25. edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/upload_data/management/commands/__init__.py +0 -0
  26. edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/upload_data/migrations/__init__.py +0 -0
  27. edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/upload_data/uploader_log/__init__.py +0 -0
  28. edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/upload_data/uploader_log/migrations/__init__.py +0 -0
  29. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration.egg-info/PKG-INFO +5 -4
  30. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration.egg-info/SOURCES.txt +9 -0
  31. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration.egg-info/requires.txt +3 -3
  32. edu_rdm_integration-3.17.0/src/edu_rdm_integration/models.py +0 -1
  33. edu_rdm_integration-3.17.0/src/edu_rdm_integration/rdm_models/models.py +0 -73
  34. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/CONDUCT.md +0 -0
  35. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/LICENSE +0 -0
  36. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/MANIFEST.in +0 -0
  37. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/setup.cfg +0 -0
  38. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/__init__.py +0 -0
  39. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/apps.py +0 -0
  40. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/collect_and_export_data/__init__.py +0 -0
  41. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/collect_and_export_data/apps.py +0 -0
  42. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +0 -0
  43. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/collect_and_export_data/migrations/0002_auto_20250204_1413.py +0 -0
  44. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/collect_and_export_data/migrations/0003_auto_20250704_0725.py +0 -0
  45. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/collect_and_export_data/migrations/__init__.py +0 -0
  46. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/collect_and_export_data/models.py +0 -0
  47. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/__init__.py +0 -0
  48. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/consts.py +0 -0
  49. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/enums.py +0 -0
  50. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/helpers.py +0 -0
  51. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/mapping.py +0 -0
  52. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/operations.py +0 -0
  53. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/redis_cache.py +0 -0
  54. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/registry/__init__.py +0 -0
  55. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/registry/actions.py +0 -0
  56. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/registry/apps.py +0 -0
  57. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/registry/templates/ui-js/start-task.js +0 -0
  58. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/registry/ui.py +0 -0
  59. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/signals.py +0 -0
  60. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/storages.py +0 -0
  61. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/typing.py +0 -0
  62. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/core/utils.py +0 -0
  63. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0001_initial.py +0 -0
  64. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +0 -0
  65. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -0
  66. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0004_uploaderclientlog.py +0 -0
  67. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0005_auto_20231204_1224.py +0 -0
  68. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0006_request_status_data.py +0 -0
  69. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -0
  70. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0008_transferredentity.py +0 -0
  71. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0009_auto_20240522_1619.py +0 -0
  72. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0010_transferredentity_export_enabled.py +0 -0
  73. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0011_exportingdatasubstageentity.py +0 -0
  74. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0012_exportingdatasubstageattachment_attachment_size.py +0 -0
  75. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0013_set_attachment_size.py +0 -0
  76. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0014_uploaddatacommand.py +0 -0
  77. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0015_set_exporting_sub_stage_status.py +0 -0
  78. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0016_transferredentity_queue_level.py +0 -0
  79. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0017_delete_uploaddatacommand.py +0 -0
  80. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/0018_auto_20250704_0725.py +0 -0
  81. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/migrations/__init__.py +0 -0
  82. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/__init__.py +0 -0
  83. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/pipelines/transfer → edu_rdm_integration-3.18.0/src/edu_rdm_integration/pipelines/cleanup_outdated_data}/__init__.py +0 -0
  84. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/pipelines/transfer/migrations → edu_rdm_integration-3.18.0/src/edu_rdm_integration/pipelines/cleanup_outdated_data/management}/__init__.py +0 -0
  85. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/rdm_entities → edu_rdm_integration-3.18.0/src/edu_rdm_integration/pipelines/cleanup_outdated_data/management/commands}/__init__.py +0 -0
  86. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/rdm_entities/migrations → edu_rdm_integration-3.18.0/src/edu_rdm_integration/pipelines/transfer}/__init__.py +0 -0
  87. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/actions.py +0 -0
  88. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/app_meta.py +0 -0
  89. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/apps.py +0 -0
  90. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/enums.py +0 -0
  91. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/migrations/0001_initial.py +0 -0
  92. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/rdm_models → edu_rdm_integration-3.18.0/src/edu_rdm_integration/pipelines/transfer/migrations}/__init__.py +0 -0
  93. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/mixins.py +0 -0
  94. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/models.py +0 -0
  95. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/tasks.py +0 -0
  96. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/templates/ui-js/transferred-entity-list.js +0 -0
  97. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/pipelines/transfer/ui.py +0 -0
  98. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/rdm_models/migrations → edu_rdm_integration-3.18.0/src/edu_rdm_integration/rdm_entities}/__init__.py +0 -0
  99. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_entities/apps.py +0 -0
  100. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_entities/entities.py +0 -0
  101. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_entities/migrations/0001_initial.py +0 -0
  102. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_entities/migrations/0002_rename_regionaldatamartentityenum_rdmentityenum.py +0 -0
  103. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages → edu_rdm_integration-3.18.0/src/edu_rdm_integration/rdm_entities/migrations}/__init__.py +0 -0
  104. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_entities/mixins.py +0 -0
  105. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_entities/utils.py +0 -0
  106. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data → edu_rdm_integration-3.18.0/src/edu_rdm_integration/rdm_models}/__init__.py +0 -0
  107. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_models/apps.py +0 -0
  108. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_models/migrations/0001_initial.py +0 -0
  109. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_models/migrations/0002_rename_regionaldatamartmodelenum_rdmmodelenum.py +0 -0
  110. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/function_templates → edu_rdm_integration-3.18.0/src/edu_rdm_integration/rdm_models/migrations}/__init__.py +0 -0
  111. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_models/mixins.py +0 -0
  112. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/rdm_models/utils.py +0 -0
  113. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/functions → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages}/__init__.py +0 -0
  114. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/functions/base → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data}/__init__.py +0 -0
  115. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/apps.py +0 -0
  116. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/consts.py +0 -0
  117. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/functions/calculated → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/function_templates}/__init__.py +0 -0
  118. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/__init__.py-tpl +0 -0
  119. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/apps.py-tpl +0 -0
  120. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/caches.py-tpl +0 -0
  121. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/consts.py-tpl +0 -0
  122. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/enums.py-tpl +0 -0
  123. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/errors.py-tpl +0 -0
  124. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/functions.py-tpl +0 -0
  125. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/helpers.py-tpl +0 -0
  126. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/managers.py-tpl +0 -0
  127. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/presenters.py-tpl +0 -0
  128. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/results.py-tpl +0 -0
  129. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/runners.py-tpl +0 -0
  130. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/strings.py-tpl +0 -0
  131. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/tests.py-tpl +0 -0
  132. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/validators.py-tpl +0 -0
  133. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/functions/calculated/base → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/functions}/__init__.py +0 -0
  134. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/functions/non_calculated → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/functions/base}/__init__.py +0 -0
  135. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/base/caches.py +0 -0
  136. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/base/consts.py +0 -0
  137. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/base/functions.py +3 -3
  138. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/base/managers.py +6 -6
  139. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/functions/calculated}/__init__.py +0 -0
  140. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/management → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/functions/calculated/base}/__init__.py +0 -0
  141. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/caches.py +4 -4
  142. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/consts.py +0 -0
  143. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/enums.py +0 -0
  144. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/errors.py +0 -0
  145. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/functions.py +0 -0
  146. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/helpers.py +0 -0
  147. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/managers.py +0 -0
  148. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/presenters.py +0 -0
  149. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/results.py +0 -0
  150. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/runners.py +0 -0
  151. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/strings.py +0 -0
  152. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/tests.py +0 -0
  153. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/validators.py +0 -0
  154. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/management/commands → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/functions/non_calculated}/__init__.py +0 -0
  155. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/migrations → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base}/__init__.py +0 -0
  156. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/caches.py +4 -4
  157. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/consts.py +0 -0
  158. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/enums.py +0 -0
  159. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/errors.py +0 -0
  160. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/functions.py +0 -0
  161. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/helpers.py +0 -0
  162. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/managers.py +0 -0
  163. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/presenters.py +0 -0
  164. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/results.py +0 -0
  165. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/runners.py +0 -0
  166. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/strings.py +0 -0
  167. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/tests.py +0 -0
  168. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/validators.py +0 -0
  169. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/generators.py +0 -0
  170. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/helpers.py +0 -0
  171. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/collect_data/registry → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/management}/__init__.py +0 -0
  172. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/management/base.py +0 -0
  173. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/export_data → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/management/commands}/__init__.py +0 -0
  174. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/management/commands/collect_latest_models_data.py +0 -0
  175. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/management/commands/collect_models_data.py +0 -0
  176. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/migrations/0001_initial.py +0 -0
  177. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/migrations/0002_edurdmcollectdatacommandprogress.py +0 -0
  178. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/migrations/0003_auto_20250704_0810.py +0 -0
  179. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/migrations/0004_auto_20250704_0825.py +0 -0
  180. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/export_data/function_templates → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/migrations}/__init__.py +0 -0
  181. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/mixins.py +0 -0
  182. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/export_data/functions → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/collect_data/registry}/__init__.py +0 -0
  183. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/registry/actions.py +0 -0
  184. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/registry/apps.py +0 -0
  185. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/registry/templates/ui-js/collect-command-window.js +0 -0
  186. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/registry/templates/ui-js/validators.js +0 -0
  187. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/registry/ui.py +0 -0
  188. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/collect_data/tests.py +4 -4
  189. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/export_data/functions/base → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/export_data}/__init__.py +0 -0
  190. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/apps.py +0 -0
  191. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/consts.py +0 -0
  192. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/export_data/management → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/export_data/function_templates}/__init__.py +0 -0
  193. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/__init__.py-tpl +0 -0
  194. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/apps.py-tpl +0 -0
  195. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/caches.py-tpl +0 -0
  196. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/consts.py-tpl +0 -0
  197. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/enums.py-tpl +0 -0
  198. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/errors.py-tpl +0 -0
  199. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/functions.py-tpl +0 -0
  200. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/helpers.py-tpl +0 -0
  201. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/managers.py-tpl +0 -0
  202. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/presenters.py-tpl +0 -0
  203. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/results.py-tpl +0 -0
  204. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/runners.py-tpl +0 -0
  205. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/strings.py-tpl +0 -0
  206. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/tests.py-tpl +0 -0
  207. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/validators.py-tpl +0 -0
  208. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/export_data/management/commands → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/export_data/functions}/__init__.py +0 -0
  209. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/export_data/migrations → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/export_data/functions/base}/__init__.py +0 -0
  210. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/consts.py +0 -0
  211. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/enums.py +0 -0
  212. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/errors.py +0 -0
  213. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/helpers.py +4 -4
  214. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/managers.py +3 -3
  215. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/presenters.py +0 -0
  216. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/requests.py +0 -0
  217. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/results.py +0 -0
  218. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/strings.py +0 -0
  219. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/functions/base/validators.py +0 -0
  220. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/generators.py +0 -0
  221. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/helpers.py +0 -0
  222. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/export_data/registry → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/export_data/management}/__init__.py +0 -0
  223. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/management/base.py +0 -0
  224. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/service → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/export_data/management/commands}/__init__.py +0 -0
  225. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/management/commands/export_entities_data.py +0 -0
  226. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/management/commands/export_latest_entities_data.py +0 -0
  227. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/migrations/0001_initial.py +0 -0
  228. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/migrations/0002_auto_20250704_0810.py +0 -0
  229. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/upload_data → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/export_data/migrations}/__init__.py +0 -0
  230. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/mixins.py +0 -0
  231. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/models.py +3 -3
  232. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/operations.py +0 -0
  233. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/upload_data/management → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/export_data/registry}/__init__.py +0 -0
  234. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/registry/actions.py +0 -0
  235. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/registry/apps.py +0 -0
  236. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/registry/templates/ui-js/create-export-command-win.js +0 -0
  237. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/registry/templates/ui-js/stage_for_export.js +0 -0
  238. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/export_data/registry/ui.py +0 -0
  239. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/upload_data/management/commands → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/service}/__init__.py +0 -0
  240. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/service/apps.py +0 -0
  241. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/upload_data/migrations → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/service/model_outdated_data}/__init__.py +0 -0
  242. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/upload_data/uploader_log → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/service/outdated_service_data}/__init__.py +0 -0
  243. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/service/tasks.py +0 -0
  244. {edu_rdm_integration-3.17.0/src/edu_rdm_integration/stages/upload_data/uploader_log/migrations → edu_rdm_integration-3.18.0/src/edu_rdm_integration/stages/upload_data}/__init__.py +0 -0
  245. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/apps.py +0 -0
  246. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/consts.py +0 -0
  247. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/dataclasses.py +0 -0
  248. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/enums.py +0 -0
  249. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/export_managers.py +0 -0
  250. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/helpers.py +0 -0
  251. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/management/base.py +0 -0
  252. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/management/commands/async_fix_attachment_size.py +0 -0
  253. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/management/commands/check_upload_status.py +0 -0
  254. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/management/commands/datamart_status.py +0 -0
  255. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/management/commands/datamart_upload.py +0 -0
  256. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/migrations/0001_initial.py +0 -0
  257. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/migrations/0002_auto_20250704_0810.py +0 -0
  258. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/models.py +0 -0
  259. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/operations.py +0 -0
  260. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/queues.py +0 -0
  261. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/tasks.py +0 -0
  262. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/uploader_log/actions.py +0 -0
  263. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/uploader_log/apps.py +0 -0
  264. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/uploader_log/enums.py +0 -0
  265. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/uploader_log/managers.py +0 -0
  266. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/uploader_log/migrations/0001_initial.py +0 -0
  267. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/uploader_log/models.py +0 -0
  268. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/uploader_log/templates/ui-js/object-grid-buttons.js +0 -0
  269. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration/stages/upload_data/uploader_log/ui.py +0 -0
  270. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration.egg-info/dependency_links.txt +0 -0
  271. {edu_rdm_integration-3.17.0 → edu_rdm_integration-3.18.0}/src/edu_rdm_integration.egg-info/top_level.txt +0 -0
@@ -29,17 +29,56 @@
29
29
  ### Удалено
30
30
 
31
31
 
32
+ ## [3.18.0] - 2025-08-29
33
+
34
+ Добавлено новое приложение `edu_rdm_integration.pipelines.cleanup_outdated_data`, которое необходимо подключить в
35
+ settings.py в установленные приложения.
36
+
37
+ Реализован механизм создания уборщиков устаревших данных моделей РВД. Их регистрация производится в модели-перечислении
38
+ `RDMModelEnum` при вызове метода `extend` в параметре `outdated_data_cleaners`. Запуск уборщиков производится при помощи
39
+ менеджера, который запускается в команде `rdm_cleanup_outdated_data`. Сама команда используется в качестве ночного
40
+ скрипта. В менеджере производится обход всех зарегистрированных моделей РВД в модели-перечислении `RDMModelEnum`, при
41
+ наличии уборщиков они запускаются.
42
+
43
+ Изменен алгоритм расчета порядкового номера элемента в модели-перечислении `RDMModelEnum`. Теперь, при расширении
44
+ модели-перечислении производится перерасчет всех порядковых номеров уже зарегистрированных значений, кроме установленных
45
+ вручную. Порядковые номера определяются согласно нахождению в последовательности из моделей, отсортированных по
46
+ зависимости между собой - от меньшей зависимости к большей. Такое поведение было достигнуто путем указания моделей в
47
+ фиктивных внешних ключах.
48
+
49
+ Во всех регистрациях моделей РВД были убраны порядковые номера order_number для автоматического расчета значений. При
50
+ миграции на данную версию, аналогичную работу будет необходимо проделать на продукте.
51
+
52
+ Повышены минимальные версии пакетов:
53
+ - educommon>=3.25.0;
54
+ - m3-db-utils>=0.7.0.
55
+
56
+ ### Добавлено
57
+
58
+ - [EDUDEVOPS-94](https://jira.bars.group/browse/EDUDEVOPS-94)
59
+ MINOR Топологическая сортировка моделей РВД согласно зависимости между собой.
60
+
61
+ - [EDUDEVOPS-94](https://jira.bars.group/browse/EDUDEVOPS-94)
62
+ MINOR Добавлена команда/ночной скрипт rdm_cleanup_outdated_data`.
63
+
64
+ ### Изменено
65
+
66
+ - [EDUDEVOPS-94](https://jira.bars.group/browse/EDUDEVOPS-94)
67
+ MINOR Установка значения order_number в элементах RDMModelEnum производится при добавлении в модель перечислении и
68
+ пересчитывается при добавлении новых значений.
69
+
70
+
32
71
  ## [3.17.0] - 2025-01-27
33
72
 
34
73
  Добавлено предупреждение пользователя о недостаточности данных и новая зависимость m3-ui.
35
74
 
36
75
  ### Добавлено
37
76
  [EDUCLLG-7932](https://jira.bars.group/browse/EDUCLLG-7932)
38
- - Добавлена зависимость `m3-ui>=2.2.122,<2.3` в `pyproject.toml`
77
+ MINOR Добавлена зависимость `m3-ui>=2.2.122,<2.3` в `pyproject.toml`
39
78
 
40
79
  ### Изменено
41
80
  [EDUCLLG-7932](https://jira.bars.group/browse/EDUCLLG-7932)
42
- - Метод `generate` в `generators.py`: изменена логика - вместо создания пустых команд при отсутствии данных теперь возвращается предупреждение
81
+ MINOR `generate` в `generators.py`: изменена логика - вместо создания пустых команд при отсутствии данных теперь возвращается предупреждение
43
82
 
44
83
 
45
84
  ## [3.16.2] - 2025-08-19
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edu-rdm-integration
3
- Version: 3.17.0
3
+ Version: 3.18.0
4
4
  Summary: Интеграция с Региональной витриной данных
5
5
  Author-email: BARS Group <education_dev@bars.group>
6
6
  Project-URL: Homepage, https://stash.bars-open.ru/projects/EDUBASE/repos/edu-rdm-integration/browse
@@ -27,15 +27,15 @@ Requires-Dist: transliterate<2
27
27
  Requires-Dist: Django<5.0,>=3.1
28
28
  Requires-Dist: celery<5.3,>=4.4.7
29
29
  Requires-Dist: asyncpg==0.23.0
30
- Requires-Dist: educommon<4,>=3.24.0
30
+ Requires-Dist: educommon<4,>=3.25.0
31
31
  Requires-Dist: edu-function-tools<1,>=0.2.0
32
- Requires-Dist: m3-db-utils<1,>=0.3.10
32
+ Requires-Dist: m3-db-utils<1,>=0.7.0
33
33
  Requires-Dist: m3-django-compat<2,>=1.10.2
34
34
  Requires-Dist: m3-ui<2.3,>=2.2.122
35
35
  Requires-Dist: uploader-client<1,>=0.3.0
36
36
  Provides-Extra: dev
37
37
  Requires-Dist: isort==5.12.0; extra == "dev"
38
- Requires-Dist: ruff==0.12.0; extra == "dev"
38
+ Requires-Dist: ruff==0.12.1; extra == "dev"
39
39
  Requires-Dist: flake8<7,>=4.0.1; extra == "dev"
40
40
  Requires-Dist: pytest<8,>=3.2.5; extra == "dev"
41
41
  Requires-Dist: pytest-cov<5; extra == "dev"
@@ -125,6 +125,7 @@ INSTALLED_APPS = (
125
125
  'edu_rdm_integration.core.registry',
126
126
  'edu_rdm_integration.rdm_entities',
127
127
  'edu_rdm_integration.rdm_models',
128
+ 'edu_rdm_integration.pipelines.cleanup_outdated_data',
128
129
  'edu_rdm_integration.pipelines.transfer',
129
130
  'edu_rdm_integration.stages.collect_data',
130
131
  'edu_rdm_integration.stages.export_data',
@@ -77,6 +77,7 @@ INSTALLED_APPS = (
77
77
  'edu_rdm_integration.core.registry',
78
78
  'edu_rdm_integration.rdm_entities',
79
79
  'edu_rdm_integration.rdm_models',
80
+ 'edu_rdm_integration.pipelines.cleanup_outdated_data',
80
81
  'edu_rdm_integration.pipelines.transfer',
81
82
  'edu_rdm_integration.stages.collect_data',
82
83
  'edu_rdm_integration.stages.export_data',
@@ -22,9 +22,9 @@ dependencies = [
22
22
  'Django>=3.1,<5.0',
23
23
  'celery>=4.4.7,<5.3',
24
24
  'asyncpg==0.23.0',
25
- 'educommon>=3.24.0,<4',
25
+ 'educommon>=3.25.0,<4',
26
26
  'edu-function-tools>=0.2.0,<1',
27
- 'm3-db-utils>=0.3.10,<1',
27
+ 'm3-db-utils>=0.7.0,<1',
28
28
  'm3-django-compat>=1.10.2,<2',
29
29
  'm3-ui>=2.2.122,<2.3',
30
30
  'uploader-client>=0.3.0,<1',
@@ -55,7 +55,7 @@ Repository = 'https://stash.bars-open.ru/scm/edubase/edu-rdm-integration.git'
55
55
  [project.optional-dependencies]
56
56
  dev = [
57
57
  'isort==5.12.0',
58
- 'ruff==0.12.0',
58
+ 'ruff==0.12.1',
59
59
  'flake8>=4.0.1,<7',
60
60
  'pytest>=3.2.5,<8',
61
61
  'pytest-cov<5',
@@ -0,0 +1 @@
1
+ # Модели
@@ -0,0 +1,11 @@
1
+ from django.apps import (
2
+ AppConfig,
3
+ )
4
+
5
+
6
+ class RDMCleanupOutdatedDataAppConfig(AppConfig):
7
+ """Приложение для организации процесса очистки устаревших данных РВД."""
8
+
9
+ name = 'edu_rdm_integration.pipelines.cleanup_outdated_data'
10
+ label = 'edu_rdm_integration_cleanup_outdated_data_pipeline'
11
+ verbose_name = 'Приложение для организации процесса очистки устаревших данных РВД.'
@@ -0,0 +1,20 @@
1
+ from django.core.management import (
2
+ BaseCommand,
3
+ )
4
+
5
+ from edu_rdm_integration.stages.service.model_outdated_data.managers import (
6
+ ModelOutdatedDataCleanerManager,
7
+ )
8
+
9
+
10
+ class Command(BaseCommand):
11
+ """Ночная команда для очистки устаревших данных РВД."""
12
+
13
+ nightly_script = True
14
+
15
+ help = 'Ночная команда для очистки устаревших данных РВД.'
16
+
17
+ def handle(self, *args, **options):
18
+ """Запуск очистки устаревших данных РВД."""
19
+ model_data_cleaner_manager = ModelOutdatedDataCleanerManager()
20
+ model_data_cleaner_manager.run()
@@ -1,3 +1,11 @@
1
+ from typing import (
2
+ Optional,
3
+ Type,
4
+ )
5
+
6
+ from educommon.integration_entities.entities import (
7
+ BaseEntity,
8
+ )
1
9
  from m3_db_utils.models import (
2
10
  ModelEnumValue,
3
11
  TitledModelEnum,
@@ -61,3 +69,37 @@ class RDMEntityEnum(TitledModelEnum):
61
69
  model_enums = sorted(model_enums, key=lambda value: value.order_number)
62
70
 
63
71
  return model_enums
72
+
73
+ @classmethod
74
+ def extend(
75
+ cls,
76
+ key,
77
+ title: str = '',
78
+ entity: Type[BaseEntity] = None,
79
+ main_model_enum: tuple = (),
80
+ additional_model_enums: tuple = (),
81
+ order_number: Optional[int] = None,
82
+ *args,
83
+ **kwargs,
84
+ ):
85
+ """Метод расширения модели-перечисления, например из плагина.
86
+
87
+ Необходимо, чтобы сама модель-перечисление была расширяемой. Для этого необходимо, чтобы был установлен
88
+ extensible = True в Meta.
89
+
90
+ Args:
91
+ key: ключ элемента перечисления, указывается заглавными буквами с разделителем нижнее подчеркивание
92
+ title: название элемента перечисления
93
+ entity: сущность, регистрируемая в модели-перечислении
94
+ main_model_enum: основная модель РВД из модели-перечисления
95
+ additional_model_enums: дополнительные модели РВД из модели-перечисления
96
+ order_number: порядковый номер значения модели перечисления используемый при сортировке
97
+ args: порядковые аргументы для создания значения модели перечисления
98
+ kwargs: именованные аргументы для создания значения модели перечисления
99
+ """
100
+ try:
101
+ order_number = cls._calculate_order_number(order_number=order_number)
102
+ except ValueError as e:
103
+ raise ValueError(f'Trying register entity "{entity.__name__}". {e.args[0]}')
104
+
105
+ setattr(cls, key, ModelEnumValue(key=key, order_number=order_number, **kwargs))
@@ -0,0 +1,200 @@
1
+ from typing import (
2
+ Optional,
3
+ Type,
4
+ )
5
+
6
+ from django.db.models import (
7
+ CASCADE,
8
+ DateTimeField,
9
+ ForeignKey,
10
+ SmallIntegerField,
11
+ )
12
+ from m3.db import (
13
+ BaseObjectModel,
14
+ )
15
+
16
+ from educommon.django.db.mixins import (
17
+ ReprStrPreModelMixin,
18
+ )
19
+ from educommon.integration_entities.enums import (
20
+ EntityLogOperation,
21
+ )
22
+ from educommon.utils.seqtools import (
23
+ topological_sort,
24
+ )
25
+ from m3_db_utils.models import (
26
+ FictiveForeignKeyField,
27
+ ModelEnumValue,
28
+ TitledModelEnum,
29
+ )
30
+
31
+
32
+ class BaseRDMModel(ReprStrPreModelMixin, BaseObjectModel):
33
+ """Базовая модель РВД."""
34
+
35
+ collecting_sub_stage = ForeignKey(
36
+ verbose_name='Подэтап сбора данных',
37
+ to='edu_rdm_integration_collect_data_stage.RDMCollectingDataSubStage',
38
+ on_delete=CASCADE,
39
+ )
40
+ exporting_sub_stage = ForeignKey(
41
+ verbose_name='Подэтап выгрузки данных',
42
+ to='edu_rdm_integration_export_data_stage.RDMExportingDataSubStage',
43
+ blank=True,
44
+ null=True,
45
+ on_delete=CASCADE,
46
+ )
47
+ operation = SmallIntegerField(
48
+ verbose_name='Действие',
49
+ choices=EntityLogOperation.get_choices(),
50
+ )
51
+
52
+ created = DateTimeField(
53
+ verbose_name='Дата создания',
54
+ auto_now_add=True,
55
+ null=True,
56
+ blank=True,
57
+ db_index=True,
58
+ )
59
+ modified = DateTimeField(
60
+ verbose_name='Дата изменения',
61
+ auto_now=True,
62
+ null=True,
63
+ blank=True,
64
+ db_index=True,
65
+ )
66
+
67
+ @property
68
+ def attrs_for_repr_str(self):
69
+ """Список атрибутов для отображения экземпляра модели."""
70
+ return ['collecting_sub_stage', 'exporting_sub_stage', 'operation', 'created', 'modified']
71
+
72
+ class Meta:
73
+ abstract = True
74
+
75
+
76
+ class RDMModelEnum(TitledModelEnum):
77
+ """Модель-перечисление моделей "Региональная витрина данных"."""
78
+
79
+ is_strict_order_number = True
80
+ """Флаг, указывающий на уникальность порядкового номера элементов модели-перечисления."""
81
+
82
+ class Meta:
83
+ db_table = 'rdm_model'
84
+ extensible = True
85
+ verbose_name = 'Модель-перечисление моделей "Региональной витрины данных"'
86
+ verbose_name_plural = 'Модели-перечисления моделей "Региональной витрины данных"'
87
+
88
+ @classmethod
89
+ def _get_model_dependencies(cls, model: Type[BaseRDMModel]) -> list[tuple[str, str]]:
90
+ """Получение списка зависимостей модели РВД."""
91
+ model_dependencies = []
92
+
93
+ for field in model._meta.concrete_fields:
94
+ if isinstance(field, FictiveForeignKeyField):
95
+ model_dependencies.append(field.to)
96
+ elif isinstance(field, ForeignKey):
97
+ model_dependencies.append(field.related_model._meta.label)
98
+
99
+ return model_dependencies
100
+
101
+ @classmethod
102
+ def _calculate_order_number(
103
+ cls, order_number: Optional[int], model: Type[BaseRDMModel] = None, *args, **kwargs
104
+ ) -> int:
105
+ """Вычисление порядкового номера элемента модели-перечисления.
106
+
107
+ Если order_number указан, то используется он.
108
+
109
+ При добавлении новой модели РВД в модель-перечисление производится перерасчет порядковых номеров уже
110
+ добавленных элементов. Порядок моделей РВД выстраивается по зависимости друг от друга. Зависимость определяется
111
+ внешними ключами (ForeignKey) и фиктивными внешними ключами (FictiveForeignKey). Сначала идут модели не имеющие
112
+ зависимостей, затем модели, которые зависят от других моделей. Сортировка моделей РВД происходит по алгоритму
113
+ топологической сортировки.
114
+ """
115
+ if order_number is not None:
116
+ return super()._calculate_order_number(order_number=order_number)
117
+
118
+ enum_data = cls._get_enum_data()
119
+ models = [model, *[model_enum_value.model for model_enum_value in enum_data.values()]]
120
+
121
+ models_dependencies = []
122
+ for model in models:
123
+ model_dependencies = cls._get_model_dependencies(model=model)
124
+
125
+ for model_dependency in model_dependencies:
126
+ models_dependencies.append((model._meta.label, model_dependency))
127
+
128
+ sorted_dependencies_models = topological_sort(models_dependencies)
129
+
130
+ ordered_models = [*sorted_dependencies_models.cyclic, *reversed(sorted_dependencies_models.sorted)]
131
+
132
+ for model_enum_value in enum_data.values():
133
+ if model_enum_value.is_manual_order_number:
134
+ try:
135
+ manual_index_model = ordered_models[model_enum_value.order_number - 1]
136
+ except IndexError:
137
+ continue
138
+
139
+ if manual_index_model != model_enum_value.model._meta.label and cls.is_strict_order_number:
140
+ raise ValueError(
141
+ f'Order number "{model_enum_value.order_number}" is already in use in the "{cls.__name__}". '
142
+ f'Please choose a different one.'
143
+ )
144
+ else:
145
+ model_enum_value.order_number = ordered_models.index(model_enum_value.model._meta.label) + 1
146
+
147
+ return ordered_models.index(model._meta.label) + 1
148
+
149
+ @classmethod
150
+ def extend(
151
+ cls,
152
+ key,
153
+ model: Type[BaseRDMModel] = None,
154
+ title: str = '',
155
+ creating_trigger_models: tuple = (),
156
+ loggable_models: tuple = (),
157
+ order_number: Optional[int] = None,
158
+ *args,
159
+ **kwargs,
160
+ ):
161
+ """Метод расширения модели-перечисления, например из плагина.
162
+
163
+ Необходимо, чтобы сама модель-перечисление была расширяемой. Для этого необходимо, чтобы был установлен
164
+ extensible = True в Meta.
165
+
166
+ Args:
167
+ key: ключ элемента перечисления, указывается заглавными буквами с разделителем нижнее подчеркивание
168
+ title: название элемента перечисления
169
+ model: модель, регистрируемая в модели-перечислении
170
+ creating_trigger_models: модели продукта, которые инициируют создание записей модели РВД
171
+ loggable_models: модели продукта, отслеживаемые в логах
172
+ order_number: порядковый номер значения модели перечисления используемый при сортировке
173
+ args: порядковые аргументы для модели-перечисления
174
+ kwargs: именованные аргументы для модели-перечисления
175
+ """
176
+ if model is None:
177
+ raise ValueError(f'Trying extend model "{cls.__name__}". Argument "model" is required.')
178
+
179
+ is_manual_order_number = order_number is not None
180
+
181
+ try:
182
+ order_number = cls._calculate_order_number(
183
+ order_number=order_number,
184
+ model=model,
185
+ )
186
+ except ValueError as e:
187
+ raise ValueError(f'Trying register model "{model.__name__}". {e.args[0]}')
188
+
189
+ model_enum_value = ModelEnumValue(
190
+ key=key,
191
+ model=model,
192
+ title=title,
193
+ creating_trigger_models=creating_trigger_models,
194
+ loggable_models=loggable_models,
195
+ order_number=order_number,
196
+ is_manual_order_number=is_manual_order_number,
197
+ **kwargs,
198
+ )
199
+
200
+ setattr(cls, key, model_enum_value)
@@ -2,6 +2,7 @@ from edu_function_tools.helpers import (
2
2
  EduFunctionHelper,
3
3
  EduRunnerHelper,
4
4
  )
5
+
5
6
  from edu_rdm_integration.core.operations import (
6
7
  ALL_OPERATIONS,
7
8
  UPDATED_OPERATIONS,
@@ -58,6 +58,7 @@ if TYPE_CHECKING:
58
58
  from edu_function_tools.caches import (
59
59
  EduEntityCache,
60
60
  )
61
+
61
62
  from edu_rdm_integration.rdm_models.models import (
62
63
  BaseRDMModel,
63
64
  )
@@ -2,13 +2,12 @@ from django.conf import (
2
2
  settings,
3
3
  )
4
4
 
5
- from educommon.utils.seqtools import (
6
- make_chunks,
7
- )
8
-
9
5
  from edu_function_tools.runners import (
10
6
  EduRunner,
11
7
  )
8
+ from educommon.utils.seqtools import (
9
+ make_chunks,
10
+ )
12
11
 
13
12
 
14
13
  class BaseCollectingDataRunner(EduRunner):
@@ -5,6 +5,7 @@ from typing import (
5
5
  from edu_function_tools.strategies import (
6
6
  EduSyncBaseRunnerLazySavingPredefinedQueueFunctionImplementationStrategy,
7
7
  )
8
+
8
9
  from edu_rdm_integration.core.consts import (
9
10
  REGIONAL_DATA_MART_INTEGRATION_COLLECTING_DATA,
10
11
  )
@@ -5,6 +5,7 @@ from typing import (
5
5
  from edu_function_tools.strategies import (
6
6
  EduSyncBaseRunnerLazySavingPredefinedQueueFunctionImplementationStrategy,
7
7
  )
8
+
8
9
  from edu_rdm_integration.core.consts import (
9
10
  REGIONAL_DATA_MART_INTEGRATION_COLLECTING_DATA,
10
11
  )
@@ -17,9 +17,6 @@ from django.db.models import (
17
17
  from django.utils import (
18
18
  timezone,
19
19
  )
20
- from edu_function_tools.models import (
21
- EduEntity,
22
- )
23
20
  from m3.db import (
24
21
  BaseObjectModel,
25
22
  )
@@ -175,13 +172,13 @@ class RDMCollectingDataSubStage(ReprStrPreModelMixin, BaseObjectModel):
175
172
  """Подэтап сбора данных для сущностей в рамках функции."""
176
173
 
177
174
  stage = ForeignKey(
178
- to=RDMCollectingDataStage,
175
+ to='edu_rdm_integration_collect_data_stage.RDMCollectingDataStage',
179
176
  verbose_name='Этап сбора данных',
180
177
  on_delete=PROTECT,
181
178
  )
182
179
 
183
180
  function = ForeignKey(
184
- to=EduEntity,
181
+ to='function_tools.Entity',
185
182
  verbose_name='Функция',
186
183
  on_delete=PROTECT,
187
184
  )
@@ -17,15 +17,15 @@ from django.utils import (
17
17
  timezone,
18
18
  )
19
19
 
20
+ from edu_function_tools.managers import (
21
+ EduRunnerManager,
22
+ )
20
23
  from educommon import (
21
24
  logger,
22
25
  )
23
26
  from educommon.utils.date import (
24
27
  get_today_min_datetime,
25
28
  )
26
- from edu_function_tools.managers import (
27
- EduRunnerManager,
28
- )
29
29
  from m3_db_utils.consts import (
30
30
  DEFAULT_ORDER_NUMBER,
31
31
  )
@@ -80,8 +80,9 @@ class BaseCollectModelsData(BaseOperationData):
80
80
  super().__init__(**kwargs)
81
81
 
82
82
  # Если модели не указаны, берется значение по умолчанию - все модели:
83
- models = models if models else RDMModelEnum.get_enum_data().keys()
84
- self.models: list[ModelEnumValue] = [RDMModelEnum.get_model_enum_value(model) for model in models]
83
+ model_enum_data = RDMModelEnum.get_enum_data()
84
+ models = models if models else model_enum_data.keys()
85
+ self.models: list[ModelEnumValue] = [v for k, v in model_enum_data.items() if k in models]
85
86
 
86
87
  self.logs_period_started_at = logs_period_started_at
87
88
  self.logs_period_ended_at = logs_period_ended_at
@@ -1,5 +1,5 @@
1
- from educommon.integration_entities.entities import (
2
- BaseEntity,
1
+ from typing_extensions import (
2
+ TYPE_CHECKING,
3
3
  )
4
4
 
5
5
  from edu_function_tools.caches import (
@@ -8,6 +8,12 @@ from edu_function_tools.caches import (
8
8
  )
9
9
 
10
10
 
11
+ if TYPE_CHECKING:
12
+ from educommon.integration_entities.entities import (
13
+ BaseEntity,
14
+ )
15
+
16
+
11
17
  class BaseExportDataRunnerCacheStorage(EduRunnerCacheStorage):
12
18
  """Базовый кеш помощников ранеров функций выгрузки данных для интеграции с "Региональная витрина данных"."""
13
19
 
@@ -15,7 +21,7 @@ class BaseExportDataRunnerCacheStorage(EduRunnerCacheStorage):
15
21
  class BaseExportDataFunctionCacheStorage(EduFunctionCacheStorage):
16
22
  """Базовый кеш помощников функций выгрузки данных для интеграции с "Региональная витрина данных"."""
17
23
 
18
- def _prepare_entity_instances(self, model_ids, *args, **kwargs) -> list[BaseEntity]:
24
+ def _prepare_entity_instances(self, model_ids, *args, **kwargs) -> list['BaseEntity']:
19
25
  """Формирование списка объектов сущностей для дальнейшей выгрузки.
20
26
 
21
27
  Необходимо переопределить логику формирования объектов у потомков.
@@ -15,6 +15,9 @@ from transliterate import (
15
15
  slugify,
16
16
  )
17
17
 
18
+ from edu_function_tools.functions import (
19
+ EduLazySavingPredefinedQueueGlobalHelperFunction,
20
+ )
18
21
  from educommon import (
19
22
  logger,
20
23
  )
@@ -25,9 +28,6 @@ from educommon.integration_entities.mixins import (
25
28
  EntitiesMixin,
26
29
  )
27
30
 
28
- from edu_function_tools.functions import (
29
- EduLazySavingPredefinedQueueGlobalHelperFunction,
30
- )
31
31
  from edu_rdm_integration.core.consts import (
32
32
  LOGS_DELIMITER,
33
33
  )
@@ -236,4 +236,3 @@ class BaseExportDataFunction(
236
236
  def get_function_data(self):
237
237
  """Возвращает словарь с данными сущностей подготовленных к выгрузке."""
238
238
  return self._data
239
-
@@ -1,6 +1,7 @@
1
1
  from edu_function_tools.runners import (
2
2
  EduRunner,
3
3
  )
4
+
4
5
  from edu_rdm_integration.stages.export_data.functions.base.helpers import (
5
6
  BaseExportDataRunnerHelper,
6
7
  )
@@ -80,6 +80,7 @@ class BaseExportTestCase(TestCase):
80
80
 
81
81
  @classmethod
82
82
  def tearDownClass(cls) -> None:
83
+ """Удаляет временные директории."""
83
84
  try:
84
85
  shutil.rmtree(TEST_DIR)
85
86
  except OSError:
@@ -120,8 +121,7 @@ class BaseExportManagerTestCase(BaseExportTestCase):
120
121
  period_ended_at=self.export_period_ended_at,
121
122
  ).first()
122
123
  exported_data_substage = ExportingDataSubStage.objects.filter(
123
- function_id=function_tools_entities[EduEntityType.FUNCTION.key],
124
- stage=exported_data_stage
124
+ function_id=function_tools_entities[EduEntityType.FUNCTION.key], stage=exported_data_stage
125
125
  ).first()
126
126
 
127
127
  return exported_data_stage, exported_data_substage
@@ -153,10 +153,7 @@ class BaseExportFunctionTestCase(BaseExportTestCase):
153
153
  @override_settings(MEDIA_ROOT=(TEST_DIR + '/media'))
154
154
  def run_exporting_function(self, exporting_stage: ExportingDataStage, model_ids: list[int]) -> dict:
155
155
  """Запускает функцию экспорта."""
156
- exporting_function = self.export_function(
157
- stage=exporting_stage,
158
- model_ids=model_ids
159
- )
156
+ exporting_function = self.export_function(stage=exporting_stage, model_ids=model_ids)
160
157
  exporting_function.run()
161
158
 
162
159
  return exporting_function.get_function_data()
@@ -5,6 +5,7 @@ from typing import (
5
5
  from edu_function_tools.strategies import (
6
6
  EduSyncBaseRunnerLazySavingPredefinedQueueFunctionImplementationStrategy,
7
7
  )
8
+
8
9
  from edu_rdm_integration.core.consts import (
9
10
  REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA,
10
11
  )
@@ -0,0 +1,26 @@
1
+ from abc import (
2
+ ABCMeta,
3
+ abstractmethod,
4
+ )
5
+ from typing import (
6
+ TYPE_CHECKING,
7
+ )
8
+
9
+
10
+ if TYPE_CHECKING:
11
+ from m3_db_utils.models import (
12
+ ModelEnumValue,
13
+ )
14
+
15
+
16
+ class BaseModelOutdatedDataCleaner(metaclass=ABCMeta):
17
+ """Базовый класс уборщика устаревших данных моделей РВД."""
18
+
19
+ def __init__(self, model_enum_value: 'ModelEnumValue', *args, **kwargs):
20
+ self._model_enum_value = model_enum_value
21
+
22
+ super().__init__(*args, **kwargs)
23
+
24
+ @abstractmethod
25
+ def run(self):
26
+ """Запуск очистки устаревших данных."""