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