edu-rdm-integration 3.15.3__tar.gz → 3.15.4__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 (261) hide show
  1. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/CHANGELOG.md +107 -0
  2. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/PKG-INFO +1 -1
  3. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/consts.py +8 -0
  4. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/registry/actions.py +4 -3
  5. edu_rdm_integration-3.15.4/src/edu_rdm_integration/stages/collect_data/registry/templates/ui-js/collect-command-window.js +77 -0
  6. edu_rdm_integration-3.15.4/src/edu_rdm_integration/stages/collect_data/registry/templates/ui-js/validators.js +51 -0
  7. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/registry/ui.py +18 -2
  8. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration.egg-info/PKG-INFO +1 -1
  9. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration.egg-info/SOURCES.txt +2 -0
  10. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/CONDUCT.md +0 -0
  11. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/LICENSE +0 -0
  12. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/MANIFEST.in +0 -0
  13. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/README.md +0 -0
  14. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/pyproject.toml +0 -0
  15. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/setup.cfg +0 -0
  16. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/__init__.py +0 -0
  17. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/apps.py +0 -0
  18. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/collect_and_export_data/__init__.py +0 -0
  19. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/collect_and_export_data/apps.py +0 -0
  20. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +0 -0
  21. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/collect_and_export_data/migrations/0002_auto_20250204_1413.py +0 -0
  22. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/collect_and_export_data/migrations/0003_auto_20250704_0725.py +0 -0
  23. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/collect_and_export_data/migrations/__init__.py +0 -0
  24. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/collect_and_export_data/models.py +0 -0
  25. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/__init__.py +0 -0
  26. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/enums.py +0 -0
  27. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/helpers.py +0 -0
  28. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/mapping.py +0 -0
  29. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/operations.py +0 -0
  30. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/redis_cache.py +0 -0
  31. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/registry/__init__.py +0 -0
  32. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/registry/actions.py +0 -0
  33. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/registry/apps.py +0 -0
  34. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/registry/templates/ui-js/start-task.js +0 -0
  35. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/registry/ui.py +0 -0
  36. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/signals.py +0 -0
  37. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/storages.py +0 -0
  38. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/typing.py +0 -0
  39. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/core/utils.py +0 -0
  40. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0001_initial.py +0 -0
  41. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +0 -0
  42. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -0
  43. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0004_uploaderclientlog.py +0 -0
  44. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0005_auto_20231204_1224.py +0 -0
  45. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0006_request_status_data.py +0 -0
  46. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -0
  47. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0008_transferredentity.py +0 -0
  48. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0009_auto_20240522_1619.py +0 -0
  49. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0010_transferredentity_export_enabled.py +0 -0
  50. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0011_exportingdatasubstageentity.py +0 -0
  51. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0012_exportingdatasubstageattachment_attachment_size.py +0 -0
  52. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0013_set_attachment_size.py +0 -0
  53. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0014_uploaddatacommand.py +0 -0
  54. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0015_set_exporting_sub_stage_status.py +0 -0
  55. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0016_transferredentity_queue_level.py +0 -0
  56. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0017_delete_uploaddatacommand.py +0 -0
  57. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/0018_auto_20250704_0725.py +0 -0
  58. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/migrations/__init__.py +0 -0
  59. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/models.py +0 -0
  60. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/__init__.py +0 -0
  61. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/__init__.py +0 -0
  62. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/actions.py +0 -0
  63. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/app_meta.py +0 -0
  64. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/apps.py +0 -0
  65. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/enums.py +0 -0
  66. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/migrations/0001_initial.py +0 -0
  67. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/migrations/__init__.py +0 -0
  68. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/mixins.py +0 -0
  69. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/models.py +0 -0
  70. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/tasks.py +0 -0
  71. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/templates/ui-js/transferred-entity-list.js +0 -0
  72. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/pipelines/transfer/ui.py +0 -0
  73. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_entities/__init__.py +0 -0
  74. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_entities/apps.py +0 -0
  75. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_entities/entities.py +0 -0
  76. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_entities/migrations/0001_initial.py +0 -0
  77. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_entities/migrations/0002_rename_regionaldatamartentityenum_rdmentityenum.py +0 -0
  78. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_entities/migrations/__init__.py +0 -0
  79. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_entities/mixins.py +0 -0
  80. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_entities/models.py +0 -0
  81. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_entities/utils.py +0 -0
  82. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_models/__init__.py +0 -0
  83. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_models/apps.py +0 -0
  84. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_models/migrations/0001_initial.py +0 -0
  85. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_models/migrations/0002_rename_regionaldatamartmodelenum_rdmmodelenum.py +0 -0
  86. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_models/migrations/__init__.py +0 -0
  87. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_models/mixins.py +0 -0
  88. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_models/models.py +0 -0
  89. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/rdm_models/utils.py +0 -0
  90. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/__init__.py +0 -0
  91. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/__init__.py +0 -0
  92. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/apps.py +0 -0
  93. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/consts.py +0 -0
  94. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/__init__.py +0 -0
  95. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/__init__.py-tpl +0 -0
  96. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/apps.py-tpl +0 -0
  97. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/caches.py-tpl +0 -0
  98. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/consts.py-tpl +0 -0
  99. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/enums.py-tpl +0 -0
  100. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/errors.py-tpl +0 -0
  101. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/functions.py-tpl +0 -0
  102. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/helpers.py-tpl +0 -0
  103. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/managers.py-tpl +0 -0
  104. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/presenters.py-tpl +0 -0
  105. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/results.py-tpl +0 -0
  106. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/runners.py-tpl +0 -0
  107. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/strings.py-tpl +0 -0
  108. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/tests.py-tpl +0 -0
  109. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/function_templates/function_collect_data_template/validators.py-tpl +0 -0
  110. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/__init__.py +0 -0
  111. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/base/__init__.py +0 -0
  112. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/base/caches.py +0 -0
  113. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/base/consts.py +0 -0
  114. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/base/functions.py +0 -0
  115. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/base/helpers.py +0 -0
  116. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/base/managers.py +0 -0
  117. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/base/mixins.py +0 -0
  118. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/base/runners.py +0 -0
  119. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/__init__.py +0 -0
  120. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/__init__.py +0 -0
  121. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/caches.py +0 -0
  122. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/consts.py +0 -0
  123. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/enums.py +0 -0
  124. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/errors.py +0 -0
  125. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/functions.py +0 -0
  126. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/helpers.py +0 -0
  127. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/managers.py +0 -0
  128. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/presenters.py +0 -0
  129. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/results.py +0 -0
  130. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/runners.py +0 -0
  131. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/strings.py +0 -0
  132. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/tests.py +0 -0
  133. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/base/validators.py +0 -0
  134. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/calculated/strategies.py +0 -0
  135. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/__init__.py +0 -0
  136. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/__init__.py +0 -0
  137. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/caches.py +0 -0
  138. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/consts.py +0 -0
  139. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/enums.py +0 -0
  140. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/errors.py +0 -0
  141. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/functions.py +0 -0
  142. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/helpers.py +0 -0
  143. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/managers.py +0 -0
  144. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/presenters.py +0 -0
  145. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/results.py +0 -0
  146. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/runners.py +0 -0
  147. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/strings.py +0 -0
  148. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/tests.py +0 -0
  149. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/base/validators.py +0 -0
  150. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/functions/non_calculated/strategies.py +0 -0
  151. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/generators.py +0 -0
  152. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/helpers.py +0 -0
  153. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/management/__init__.py +0 -0
  154. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/management/base.py +0 -0
  155. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/management/commands/__init__.py +0 -0
  156. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/management/commands/collect_latest_models_data.py +0 -0
  157. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/management/commands/collect_models_data.py +0 -0
  158. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/migrations/0001_initial.py +0 -0
  159. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/migrations/0002_edurdmcollectdatacommandprogress.py +0 -0
  160. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/migrations/0003_auto_20250704_0810.py +0 -0
  161. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/migrations/0004_auto_20250704_0825.py +0 -0
  162. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/migrations/__init__.py +0 -0
  163. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/mixins.py +0 -0
  164. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/models.py +0 -0
  165. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/operations.py +0 -0
  166. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/registry/__init__.py +0 -0
  167. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/registry/apps.py +0 -0
  168. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/registry/templates/ui-js/create-collect-command-win.js +0 -0
  169. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/collect_data/tests.py +0 -0
  170. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/__init__.py +0 -0
  171. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/apps.py +0 -0
  172. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/consts.py +0 -0
  173. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/__init__.py +0 -0
  174. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/__init__.py-tpl +0 -0
  175. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/apps.py-tpl +0 -0
  176. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/caches.py-tpl +0 -0
  177. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/consts.py-tpl +0 -0
  178. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/enums.py-tpl +0 -0
  179. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/errors.py-tpl +0 -0
  180. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/functions.py-tpl +0 -0
  181. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/helpers.py-tpl +0 -0
  182. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/managers.py-tpl +0 -0
  183. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/presenters.py-tpl +0 -0
  184. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/results.py-tpl +0 -0
  185. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/runners.py-tpl +0 -0
  186. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/strings.py-tpl +0 -0
  187. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/tests.py-tpl +0 -0
  188. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/function_templates/function_export_data_template/validators.py-tpl +0 -0
  189. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/__init__.py +0 -0
  190. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/__init__.py +0 -0
  191. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/caches.py +0 -0
  192. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/consts.py +0 -0
  193. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/enums.py +0 -0
  194. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/errors.py +0 -0
  195. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/functions.py +0 -0
  196. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/helpers.py +0 -0
  197. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/managers.py +0 -0
  198. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/presenters.py +0 -0
  199. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/requests.py +0 -0
  200. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/results.py +0 -0
  201. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/runners.py +0 -0
  202. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/strings.py +0 -0
  203. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/tests.py +0 -0
  204. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/functions/base/validators.py +0 -0
  205. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/generators.py +0 -0
  206. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/helpers.py +0 -0
  207. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/management/__init__.py +0 -0
  208. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/management/base.py +0 -0
  209. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/management/commands/__init__.py +0 -0
  210. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/management/commands/export_entities_data.py +0 -0
  211. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/management/commands/export_latest_entities_data.py +0 -0
  212. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/migrations/0001_initial.py +0 -0
  213. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/migrations/0002_auto_20250704_0810.py +0 -0
  214. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/migrations/__init__.py +0 -0
  215. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/mixins.py +0 -0
  216. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/models.py +0 -0
  217. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/operations.py +0 -0
  218. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/registry/__init__.py +0 -0
  219. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/registry/actions.py +0 -0
  220. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/registry/apps.py +0 -0
  221. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/registry/templates/ui-js/create-export-command-win.js +0 -0
  222. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/registry/templates/ui-js/stage_for_export.js +0 -0
  223. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/registry/ui.py +0 -0
  224. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/export_data/strategies.py +0 -0
  225. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/service/__init__.py +0 -0
  226. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/service/apps.py +0 -0
  227. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/service/tasks.py +0 -0
  228. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/__init__.py +0 -0
  229. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/apps.py +0 -0
  230. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/consts.py +0 -0
  231. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/dataclasses.py +0 -0
  232. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/enums.py +0 -0
  233. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/export_managers.py +0 -0
  234. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/helpers.py +0 -0
  235. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/management/__init__.py +0 -0
  236. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/management/base.py +0 -0
  237. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/management/commands/__init__.py +0 -0
  238. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/management/commands/async_fix_attachment_size.py +0 -0
  239. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/management/commands/check_upload_status.py +0 -0
  240. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/management/commands/datamart_status.py +0 -0
  241. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/management/commands/datamart_upload.py +0 -0
  242. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/migrations/0001_initial.py +0 -0
  243. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/migrations/0002_auto_20250704_0810.py +0 -0
  244. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/migrations/__init__.py +0 -0
  245. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/models.py +0 -0
  246. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/operations.py +0 -0
  247. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/queues.py +0 -0
  248. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/tasks.py +0 -0
  249. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/__init__.py +0 -0
  250. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/actions.py +0 -0
  251. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/apps.py +0 -0
  252. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/enums.py +0 -0
  253. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/managers.py +0 -0
  254. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/migrations/0001_initial.py +0 -0
  255. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/migrations/__init__.py +0 -0
  256. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/models.py +0 -0
  257. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/templates/ui-js/object-grid-buttons.js +0 -0
  258. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration/stages/upload_data/uploader_log/ui.py +0 -0
  259. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration.egg-info/dependency_links.txt +0 -0
  260. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration.egg-info/requires.txt +0 -0
  261. {edu_rdm_integration-3.15.3 → edu_rdm_integration-3.15.4}/src/edu_rdm_integration.egg-info/top_level.txt +0 -0
@@ -29,6 +29,60 @@
29
29
  ### Удалено
30
30
 
31
31
 
32
+ ## [3.15.4] - 2025-01-27
33
+
34
+ Улучшена валидация полей формы сбора данных, добавлена логика взаимозависимости полей batch_size и split_by,
35
+ оптимизирована производительность bulk_create операций.
36
+
37
+ ### Добавлено
38
+
39
+ - Добавлен файл validators.js с валидаторами для полей формы
40
+ - Добавлен валидатор instituteIdsValidator для поля institute_ids
41
+ - Добавлен валидатор instituteCountValidator для поля institute_count
42
+ - Добавлен файл collect-command-window.js с JavaScript логикой для формы
43
+ - Добавлена логика взаимозависимости полей batch_size и split_by
44
+ - Добавлен параметр RDM_COLLECT_PROGRESS_BATCH_SIZE для настройки размера батча
45
+
46
+ ### Изменено
47
+
48
+ - Поле institute_ids: добавлены label, max_length и client_id
49
+ - Поле institute_count: подключен валидатор instituteCountValidator
50
+ - Поле split_by: установлено editable=False для ограничения ввода только из списка
51
+ - Метод save_row в actions.py: заменена логика сохранения на bulk_create с настраиваемым batch_size
52
+ - Добавлена JavaScript логика для корректной проверки обязательности взаимозависимых полей
53
+
54
+ ### Добавлены новые настройки
55
+
56
+ | Название настройки в settings | Описание | Значение по умолчанию |
57
+ |-----------------------------------|-----------------------------------------------------------------------------------------|-----------------------|
58
+ | RDM_COLLECT_PROGRESS_BATCH_SIZE | Размер батча для bulk_create операций при сборе данных РВД. | 10000 |
59
+
60
+ В settings.py:
61
+
62
+ - Добавить значение по умолчанию:
63
+ ```
64
+ PROJECT_DEFAULT_CONFIG.update({
65
+ ...
66
+ ('rmd_general', 'COLLECT_PROGRESS_BATCH_SIZE'): 10000,
67
+ ...
68
+ })
69
+ ```
70
+
71
+ - Получить значение настройки из конфигурационного файла:
72
+ ```
73
+ # Размер батча для bulk_create операций при сборе данных РВД.
74
+ COLLECT_PROGRESS_BATCH_SIZE = conf.get_int('rmd_general', 'COLLECT_PROGRESS_BATCH_SIZE')
75
+ ```
76
+
77
+ В дефолтный конфиг проекта необходимо добавить:
78
+
79
+ ```
80
+ [rmd_general]
81
+ # Размер батча для bulk_create операций при сборе данных РВД.
82
+ COLLECT_PROGRESS_BATCH_SIZE = 10000
83
+ ```
84
+
85
+
32
86
  ## [3.15.3] - 2025-08-12
33
87
 
34
88
  ### Добавлено
@@ -118,6 +172,59 @@
118
172
  MINOR Доработка механизма экспорта данных в РВД - изменена логика проставления экспорта в BaseExportDataFunction
119
173
 
120
174
 
175
+ ## [3.11.4] - 2025-01-27
176
+
177
+ Улучшена валидация полей формы сбора данных, добавлена логика взаимозависимости полей batch_size и split_by,
178
+ оптимизирована производительность bulk_create операций.
179
+
180
+ ### Добавлено
181
+
182
+ - Добавлен файл validators.js с валидаторами для полей формы
183
+ - Добавлен валидатор instituteIdsValidator для поля institute_ids
184
+ - Добавлен валидатор instituteCountValidator для поля institute_count
185
+ - Добавлен файл collect-command-window.js с JavaScript логикой для формы
186
+ - Добавлена логика взаимозависимости полей batch_size и split_by
187
+ - Добавлен параметр RDM_COLLECT_PROGRESS_BATCH_SIZE для настройки размера батча
188
+
189
+ ### Изменено
190
+
191
+ - Поле institute_ids: добавлены label, max_length и client_id
192
+ - Поле institute_count: подключен валидатор instituteCountValidator
193
+ - Поле split_by: установлено editable=False для ограничения ввода только из списка
194
+ - Метод save_row в actions.py: заменена логика сохранения на bulk_create с настраиваемым batch_size
195
+ - Добавлена JavaScript логика для корректной проверки обязательности взаимозависимых полей
196
+
197
+ ### Добавлены новые настройки
198
+
199
+ | Название настройки в settings | Описание | Значение по умолчанию |
200
+ |-----------------------------------|-----------------------------------------------------------------------------------------|-----------------------|
201
+ | RDM_COLLECT_PROGRESS_BATCH_SIZE | Размер батча для bulk_create операций при сборе данных РВД. | 10000 |
202
+
203
+ В settings.py:
204
+
205
+ - Добавить значение по умолчанию:
206
+ ```
207
+ PROJECT_DEFAULT_CONFIG.update({
208
+ ...
209
+ ('rmd_general', 'COLLECT_PROGRESS_BATCH_SIZE'): 10000,
210
+ ...
211
+ })
212
+ ```
213
+
214
+ - Получить значение настройки из конфигурационного файла:
215
+ ```
216
+ # Размер батча для bulk_create операций при сборе данных РВД.
217
+ COLLECT_PROGRESS_BATCH_SIZE = conf.get_int('rmd_general', 'COLLECT_PROGRESS_BATCH_SIZE')
218
+ ```
219
+
220
+ В дефолтный конфиг проекта необходимо добавить:
221
+
222
+ ```
223
+ [rmd_general]
224
+ # Размер батча для bulk_create операций при сборе данных РВД.
225
+ COLLECT_PROGRESS_BATCH_SIZE = 10000
226
+ ```
227
+
121
228
  ## [3.11.3] - 2025-07-25
122
229
 
123
230
  ### Исправлено
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edu-rdm-integration
3
- Version: 3.15.3
3
+ Version: 3.15.4
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
@@ -21,6 +21,14 @@ HASH_ALGORITHM = HashGostFunctionVersion.GOST12_512
21
21
 
22
22
  BATCH_SIZE = 5000
23
23
 
24
+ CHUNK_MAX_VALUE = 100000
25
+ """Максимальное значение для размера чанка при сборе данных РВД.
26
+ Ограничение 100000 предотвращает чрезмерное потребление памяти и блокировку БД
27
+ при обработке больших объемов данных в одном батче."""
28
+
29
+ SPLIT_BY_QUANTITY_MAX_VALUE = 366
30
+ """Максимальное значение для размера подпериода при временном разделении данных."""
31
+
24
32
  ACADEMIC_YEAR = {
25
33
  'start_day': 1,
26
34
  'start_month': 9,
@@ -2,6 +2,9 @@ from functools import (
2
2
  partial,
3
3
  )
4
4
 
5
+ from django.conf import (
6
+ settings,
7
+ )
5
8
  from django.db.models import (
6
9
  F,
7
10
  Func,
@@ -268,6 +271,4 @@ class BaseCollectingDataProgressPack(BaseCommandProgressPack):
268
271
  )
269
272
  for command in commands_to_save
270
273
  ]
271
-
272
- for obj in objs:
273
- super().save_row(obj, create_new, request, context, *args, **kwargs)
274
+ self.model.objects.bulk_create(objs, batch_size=settings.COLLECT_PROGRESS_BATCH_SIZE)
@@ -0,0 +1,77 @@
1
+ {% load educommon %}
2
+ {% include "ui-js/validators.js" %}
3
+
4
+ Ext.onReady(function() {
5
+ // Инициализация валидаторов
6
+ initializeValidators();
7
+
8
+ // Инициализация взаимозависимых полей
9
+ initializeBatchSizeSplitByLogic();
10
+ });
11
+
12
+ function initializeValidators() {
13
+ // Валидатор для institute_ids
14
+ var instituteIdsField = Ext.getCmp('institute_ids');
15
+ if (instituteIdsField) {
16
+ instituteIdsField.validate = instituteIdsValidator;
17
+ instituteIdsField.on('blur', function() {
18
+ this.validate();
19
+ });
20
+ }
21
+
22
+ // Валидатор для institute_count
23
+ var instituteCountField = Ext.getCmp('institute_count');
24
+ if (instituteCountField) {
25
+ var originalValidator = instituteCountField.validate;
26
+
27
+ instituteCountField.validate = function() {
28
+ if (!instituteCountValidator.call(this)) {
29
+ return false;
30
+ }
31
+ if (originalValidator) {
32
+ return originalValidator.call(this);
33
+ }
34
+ return true;
35
+ };
36
+
37
+ instituteCountField.on('blur', function() {
38
+ this.validate();
39
+ });
40
+ }
41
+ }
42
+
43
+ function initializeBatchSizeSplitByLogic() {
44
+ var batchSizeField = Ext.getCmp('batch_size');
45
+ var splitByField = Ext.getCmp('split_by');
46
+
47
+ if (!batchSizeField || !splitByField) {
48
+ return;
49
+ }
50
+
51
+ // Функция для обновления обязательности полей
52
+ function updateFieldRequirements() {
53
+ var batchSizeValue = batchSizeField.getValue();
54
+ var splitByValue = splitByField.getValue();
55
+
56
+ if (splitByValue && splitByValue !== '') {
57
+ batchSizeField.allowBlank = true;
58
+ batchSizeField.clearInvalid();
59
+ } else {
60
+ batchSizeField.allowBlank = false;
61
+ }
62
+
63
+ if (batchSizeValue && batchSizeValue !== '' && batchSizeValue !== 0) {
64
+ splitByField.allowBlank = true;
65
+ splitByField.clearInvalid();
66
+ } else {
67
+ splitByField.allowBlank = false;
68
+ }
69
+ }
70
+
71
+ // Обработчики изменения полей
72
+ batchSizeField.on('change', updateFieldRequirements);
73
+ splitByField.on('change', updateFieldRequirements);
74
+
75
+ // Инициализация при загрузке
76
+ updateFieldRequirements();
77
+ }
@@ -0,0 +1,51 @@
1
+ // Валидатор для поля institute_ids
2
+ var instituteIdsValidator = function () {
3
+ var value = this.getValue();
4
+
5
+ // Если поле пустое - это допустимо
6
+ if (!value || value.trim() === '') {
7
+ this.clearInvalid();
8
+ return true;
9
+ }
10
+
11
+ value = value.trim();
12
+
13
+ if (!/^[0-9,]+$/.test(value)) {
14
+ this.markInvalid('Разрешены только цифры и запятые');
15
+ return false;
16
+ }
17
+
18
+ var numbers = value.split(',');
19
+
20
+ for (var i = 0; i < numbers.length; i++) {
21
+ if (numbers[i].trim() === '') {
22
+ this.markInvalid('Между запятыми не должно быть пустых значений');
23
+ return false;
24
+ }
25
+ }
26
+
27
+ var uniqueNumbers = [];
28
+ for (var j = 0; j < numbers.length; j++) {
29
+ var num = parseInt(numbers[j].trim());
30
+ if (uniqueNumbers.indexOf(num) !== -1) {
31
+ this.markInvalid('ID организаций не должны повторяться');
32
+ return false;
33
+ }
34
+ uniqueNumbers.push(num);
35
+ }
36
+
37
+ this.clearInvalid();
38
+ return true;
39
+ };
40
+
41
+ // Валидатор для поля institute_count - запрещаем 0
42
+ var instituteCountValidator = function() {
43
+ var value = this.getValue();
44
+ if (value === 0) {
45
+ this.markInvalid('Количество организаций не может быть равно 0');
46
+ return false;
47
+ }
48
+
49
+ this.clearInvalid();
50
+ return true;
51
+ };
@@ -24,6 +24,8 @@ from educommon.utils.date import (
24
24
 
25
25
  from edu_rdm_integration.core.consts import (
26
26
  BATCH_SIZE,
27
+ CHUNK_MAX_VALUE,
28
+ SPLIT_BY_QUANTITY_MAX_VALUE,
27
29
  )
28
30
  from edu_rdm_integration.core.registry.ui import (
29
31
  BaseCreateCommandWindow,
@@ -75,8 +77,9 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
75
77
  display_field='split_by',
76
78
  label='Единица подпериода',
77
79
  anchor='100%',
78
- editable=True,
80
+ editable=False,
79
81
  trigger_action_all=True,
82
+ client_id='split_by',
80
83
  )
81
84
  split_by.set_store(ExtDataStore(enumerate(DatesSplitter.get_split_by_modes())))
82
85
  split_by_quantity = ExtNumberField(
@@ -85,6 +88,7 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
85
88
  allow_blank=False,
86
89
  allow_decimals=False,
87
90
  allow_negative=False,
91
+ max_value=SPLIT_BY_QUANTITY_MAX_VALUE,
88
92
  anchor='100%',
89
93
  value=1,
90
94
  )
@@ -109,6 +113,8 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
109
113
  allow_negative=False,
110
114
  anchor='100%',
111
115
  value=BATCH_SIZE,
116
+ max_value=CHUNK_MAX_VALUE,
117
+ client_id='batch_size',
112
118
  )
113
119
  by_institutes = ExtCheckBox(
114
120
  anchor='100%',
@@ -116,10 +122,12 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
116
122
  name='by_institutes',
117
123
  )
118
124
  institute_ids = ExtStringField(
119
- label='id организаций',
125
+ label='ID организаций (через запятую, например: 1,2,3 или оставить пустым для всех)',
120
126
  name='institute_ids',
121
127
  allow_blank=True,
122
128
  anchor='100%',
129
+ max_length=100,
130
+ client_id='institute_ids',
123
131
  )
124
132
  institute_count = ExtNumberField(
125
133
  name='institute_count',
@@ -128,6 +136,8 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
128
136
  anchor='100%',
129
137
  min_value=ALL_UNITS_IN_COMMAND,
130
138
  value=ALL_UNITS_IN_COMMAND,
139
+ client_id='institute_count',
140
+ allow_blank=False,
131
141
  )
132
142
  hint_text = ExtDisplayField(
133
143
  value=(
@@ -156,6 +166,12 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
156
166
  split_mode,
157
167
  )
158
168
 
169
+ def set_params(self, params: Dict[str, Any]) -> None:
170
+ """Устанавливает параметры окна."""
171
+ super().set_params(params)
172
+
173
+ self.template_globals = 'ui-js/collect-command-window.js'
174
+
159
175
 
160
176
  class DetailCollectCommandWindow(BaseEditWindow):
161
177
  """Окно просмотра команды сбора данных модели РВД."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edu-rdm-integration
3
- Version: 3.15.3
3
+ Version: 3.15.4
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
@@ -165,7 +165,9 @@ src/edu_rdm_integration/stages/collect_data/registry/__init__.py
165
165
  src/edu_rdm_integration/stages/collect_data/registry/actions.py
166
166
  src/edu_rdm_integration/stages/collect_data/registry/apps.py
167
167
  src/edu_rdm_integration/stages/collect_data/registry/ui.py
168
+ src/edu_rdm_integration/stages/collect_data/registry/templates/ui-js/collect-command-window.js
168
169
  src/edu_rdm_integration/stages/collect_data/registry/templates/ui-js/create-collect-command-win.js
170
+ src/edu_rdm_integration/stages/collect_data/registry/templates/ui-js/validators.js
169
171
  src/edu_rdm_integration/stages/export_data/__init__.py
170
172
  src/edu_rdm_integration/stages/export_data/apps.py
171
173
  src/edu_rdm_integration/stages/export_data/consts.py