edu-rdm-integration 3.2.3__tar.gz → 3.2.8__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.
Files changed (194) hide show
  1. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/CHANGELOG.md +42 -0
  2. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/MANIFEST.in +1 -0
  3. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/PKG-INFO +43 -1
  4. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/setup.py +1 -1
  5. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/collect.py +10 -2
  6. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/helpers.py +4 -4
  7. edu-rdm-integration-3.2.8/src/edu_rdm_integration/migrations/0009_transferredentity_export_enabled.py +21 -0
  8. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/models.py +11 -0
  9. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/registry/actions.py +31 -0
  10. edu-rdm-integration-3.2.8/src/edu_rdm_integration/registry/ui.py +39 -0
  11. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/tasks.py +37 -27
  12. edu-rdm-integration-3.2.8/src/edu_rdm_integration/templates/ui-js/transferred-entity-list.js +37 -0
  13. edu-rdm-integration-3.2.8/src/edu_rdm_integration/uploader_log/templates/ui-js/object-grid-buttons.js +185 -0
  14. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration.egg-info/PKG-INFO +43 -1
  15. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration.egg-info/SOURCES.txt +5 -1
  16. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/CONDUCT.md +0 -0
  17. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/LICENSE +0 -0
  18. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/README.md +0 -0
  19. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/pyproject.toml +0 -0
  20. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/dependencies/development_packages.txt +0 -0
  21. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/dependencies/external_packages.txt +0 -0
  22. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/dependencies/internal_packages.txt +0 -0
  23. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/dependencies/internal_sources.txt +0 -0
  24. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/dependencies/production_packages.txt +0 -0
  25. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/dependencies/system_packages.txt +0 -0
  26. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/dependencies/testing_packages.txt +0 -0
  27. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/development.txt +0 -0
  28. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/production.txt +0 -0
  29. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/requirements/stage.txt +0 -0
  30. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/setup.cfg +0 -0
  31. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/__init__.py +0 -0
  32. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/__init__.py +0 -0
  33. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/apps.py +0 -0
  34. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/caches.py +0 -0
  35. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/consts.py +0 -0
  36. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/enums.py +0 -0
  37. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/errors.py +0 -0
  38. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/functions.py +0 -0
  39. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/helpers.py +0 -0
  40. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/managers.py +0 -0
  41. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/presenters.py +0 -0
  42. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/receivers.py +0 -0
  43. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/results.py +0 -0
  44. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/runners.py +0 -0
  45. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/strategies.py +0 -0
  46. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/strings.py +0 -0
  47. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/tests.py +0 -0
  48. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/adapters/validators.py +0 -0
  49. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/app_meta.py +0 -0
  50. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/app_settings.py +0 -0
  51. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/apps.py +0 -0
  52. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/base.py +0 -0
  53. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_and_export_data/__init__.py +0 -0
  54. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_and_export_data/apps.py +0 -0
  55. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +0 -0
  56. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_and_export_data/migrations/__init__.py +0 -0
  57. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_and_export_data/models.py +0 -0
  58. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_and_export_data/utils.py +0 -0
  59. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/__init__.py +0 -0
  60. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/base/__init__.py +0 -0
  61. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/base/caches.py +0 -0
  62. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/base/functions.py +0 -0
  63. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/base/helpers.py +0 -0
  64. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/base/managers.py +0 -0
  65. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/base/mixins.py +0 -0
  66. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/base/runners.py +0 -0
  67. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/__init__.py +0 -0
  68. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/__init__.py +0 -0
  69. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/caches.py +0 -0
  70. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/consts.py +0 -0
  71. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/enums.py +0 -0
  72. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/errors.py +0 -0
  73. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/functions.py +0 -0
  74. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/helpers.py +0 -0
  75. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/managers.py +0 -0
  76. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/presenters.py +0 -0
  77. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/results.py +0 -0
  78. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/runners.py +0 -0
  79. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/strings.py +0 -0
  80. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/tests.py +0 -0
  81. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/base/validators.py +0 -0
  82. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/calculated/strategies.py +0 -0
  83. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/generators.py +0 -0
  84. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/helpers.py +0 -0
  85. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/__init__.py +0 -0
  86. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/__init__.py +0 -0
  87. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/caches.py +0 -0
  88. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/consts.py +0 -0
  89. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/enums.py +0 -0
  90. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/errors.py +0 -0
  91. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/functions.py +0 -0
  92. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/helpers.py +0 -0
  93. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/managers.py +0 -0
  94. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/presenters.py +0 -0
  95. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/results.py +0 -0
  96. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/runners.py +0 -0
  97. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/strings.py +0 -0
  98. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/tests.py +0 -0
  99. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/base/validators.py +0 -0
  100. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/non_calculated/strategies.py +0 -0
  101. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/collect_data/tests.py +0 -0
  102. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/consts.py +0 -0
  103. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/entities.py +0 -0
  104. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/enum_register/__init__.py +0 -0
  105. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/enum_register/mixins.py +0 -0
  106. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/enum_register/register.py +0 -0
  107. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/enums.py +0 -0
  108. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/__init__.py +0 -0
  109. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/__init__.py +0 -0
  110. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/caches.py +0 -0
  111. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/consts.py +0 -0
  112. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/enums.py +0 -0
  113. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/errors.py +0 -0
  114. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/functions.py +0 -0
  115. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/helpers.py +0 -0
  116. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/managers.py +0 -0
  117. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/presenters.py +0 -0
  118. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/requests.py +0 -0
  119. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/results.py +0 -0
  120. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/runners.py +0 -0
  121. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/strings.py +0 -0
  122. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/tests.py +0 -0
  123. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/base/validators.py +0 -0
  124. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/consts.py +0 -0
  125. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/export.py +0 -0
  126. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/generators.py +0 -0
  127. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/helpers.py +0 -0
  128. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/export_data/strategies.py +0 -0
  129. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/__init__.py +0 -0
  130. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/__init__.py-tpl +0 -0
  131. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/apps.py-tpl +0 -0
  132. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/caches.py-tpl +0 -0
  133. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/consts.py-tpl +0 -0
  134. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/enums.py-tpl +0 -0
  135. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/errors.py-tpl +0 -0
  136. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/functions.py-tpl +0 -0
  137. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/helpers.py-tpl +0 -0
  138. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/managers.py-tpl +0 -0
  139. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/presenters.py-tpl +0 -0
  140. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/results.py-tpl +0 -0
  141. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/runners.py-tpl +0 -0
  142. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/strings.py-tpl +0 -0
  143. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/tests.py-tpl +0 -0
  144. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_collect_data_template/validators.py-tpl +0 -0
  145. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/__init__.py-tpl +0 -0
  146. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/apps.py-tpl +0 -0
  147. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/caches.py-tpl +0 -0
  148. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/consts.py-tpl +0 -0
  149. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/enums.py-tpl +0 -0
  150. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/errors.py-tpl +0 -0
  151. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/functions.py-tpl +0 -0
  152. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/helpers.py-tpl +0 -0
  153. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/managers.py-tpl +0 -0
  154. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/presenters.py-tpl +0 -0
  155. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/results.py-tpl +0 -0
  156. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/runners.py-tpl +0 -0
  157. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/strings.py-tpl +0 -0
  158. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/tests.py-tpl +0 -0
  159. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/function_templates/function_export_data_template/validators.py-tpl +0 -0
  160. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/__init__.py +0 -0
  161. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/commands/__init__.py +0 -0
  162. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/commands/check_upload_status.py +0 -0
  163. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/commands/collect_latest_models_data.py +0 -0
  164. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/commands/collect_models_data.py +0 -0
  165. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/commands/datamart_status.py +0 -0
  166. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/commands/datamart_upload.py +0 -0
  167. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/commands/export_entities_data.py +0 -0
  168. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/commands/export_latest_entities_data.py +0 -0
  169. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/management/general.py +0 -0
  170. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/mapping.py +0 -0
  171. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/migrations/0001_initial.py +0 -0
  172. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +0 -0
  173. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -0
  174. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/migrations/0004_uploaderclientlog.py +0 -0
  175. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/migrations/0005_auto_20231204_1224.py +0 -0
  176. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/migrations/0006_request_status_data.py +0 -0
  177. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -0
  178. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/migrations/0008_transferredentity.py +0 -0
  179. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/migrations/__init__.py +0 -0
  180. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/registry/__init__.py +0 -0
  181. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/signals.py +0 -0
  182. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/storages.py +0 -0
  183. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/uploader_log/__init__.py +0 -0
  184. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/uploader_log/actions.py +0 -0
  185. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/uploader_log/apps.py +0 -0
  186. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/uploader_log/enums.py +0 -0
  187. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/uploader_log/managers.py +0 -0
  188. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/uploader_log/ui.py +0 -0
  189. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration/utils.py +0 -0
  190. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration.egg-info/dependency_links.txt +0 -0
  191. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration.egg-info/namespace_packages.txt +0 -0
  192. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration.egg-info/not-zip-safe +0 -0
  193. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration.egg-info/requires.txt +0 -0
  194. {edu-rdm-integration-3.2.3 → edu-rdm-integration-3.2.8}/src/edu_rdm_integration.egg-info/top_level.txt +0 -0
@@ -28,6 +28,48 @@
28
28
 
29
29
  ### Удалено
30
30
 
31
+ ## 3.2.8 - 2024-08-02
32
+ Исправлена ошибка задвоения сборки и экспорта в периодической задаче TransferLatestEntitiesDataPeriodicTask.
33
+
34
+ ### Изменено
35
+ - [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
36
+ PATCH Исправлена ошибка задвоения сборки и экспорта в периодической задаче TransferLatestEntitiesDataPeriodicTask.
37
+
38
+
39
+ ## 3.2.7 - 2024-07-31
40
+ Исправлен файл MANIFEST.in для включения в сборку js-шаблонов.
41
+
42
+ ### Изменено
43
+ - [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
44
+ PATCH Добавлено включение js-шаблонов в сборку в файл MANIFEST.in
45
+
46
+
47
+ ## 3.2.6 - 2024-07-23
48
+ Добавлен параметр export_off (Отключение экспорта для сущности) в модель TransferredEntity
49
+ Изменен порядок запуска сбора и экспорта по сущностям в периодической задаче TransferLatestEntitiesDataPeriodicTask
50
+
51
+ ### Изменено
52
+ - [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
53
+ PATCH Добавлен параметр export_off в модель TransferredEntity и изменен порядок запуска сбора и экспорта в
54
+ TransferLatestEntitiesDataPeriodicTask.
55
+
56
+
57
+ ## 3.2.5 - 2024-07-16
58
+ Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
59
+
60
+ ### Изменено
61
+ - [EDUSCHL-22070](https://jira.bars.group/browse/EDUSCHL-22070)
62
+ PATCH Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
63
+
64
+
65
+ ## 3.2.4 - 2024-07-16
66
+ Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
67
+
68
+ ### Изменено
69
+ - [EDUSCHL-22217](https://jira.bars.group/browse/EDUSCHL-22217)
70
+ PATCH Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
71
+ В подзапросах отсутствовало условие фильтрации по статусу.
72
+
31
73
 
32
74
  ## 3.2.3 - 2024-06-06
33
75
  Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
@@ -1,4 +1,5 @@
1
1
  global-exclude *.pyc
2
+ recursive-include src *.js
2
3
  recursive-include src *.py
3
4
  recursive-include src *.py-tpl
4
5
  recursive-include requirements *.txt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edu-rdm-integration
3
- Version: 3.2.3
3
+ Version: 3.2.8
4
4
  Summary: Интеграция с Региональной витриной данных
5
5
  Home-page:
6
6
  Download-URL:
@@ -301,6 +301,48 @@ Requires-Dist: uploader-client<1,>=0.2.1
301
301
 
302
302
  ### Удалено
303
303
 
304
+ ## 3.2.8 - 2024-08-02
305
+ Исправлена ошибка задвоения сборки и экспорта в периодической задаче TransferLatestEntitiesDataPeriodicTask.
306
+
307
+ ### Изменено
308
+ - [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
309
+ PATCH Исправлена ошибка задвоения сборки и экспорта в периодической задаче TransferLatestEntitiesDataPeriodicTask.
310
+
311
+
312
+ ## 3.2.7 - 2024-07-31
313
+ Исправлен файл MANIFEST.in для включения в сборку js-шаблонов.
314
+
315
+ ### Изменено
316
+ - [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
317
+ PATCH Добавлено включение js-шаблонов в сборку в файл MANIFEST.in
318
+
319
+
320
+ ## 3.2.6 - 2024-07-23
321
+ Добавлен параметр export_off (Отключение экспорта для сущности) в модель TransferredEntity
322
+ Изменен порядок запуска сбора и экспорта по сущностям в периодической задаче TransferLatestEntitiesDataPeriodicTask
323
+
324
+ ### Изменено
325
+ - [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
326
+ PATCH Добавлен параметр export_off в модель TransferredEntity и изменен порядок запуска сбора и экспорта в
327
+ TransferLatestEntitiesDataPeriodicTask.
328
+
329
+
330
+ ## 3.2.5 - 2024-07-16
331
+ Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
332
+
333
+ ### Изменено
334
+ - [EDUSCHL-22070](https://jira.bars.group/browse/EDUSCHL-22070)
335
+ PATCH Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
336
+
337
+
338
+ ## 3.2.4 - 2024-07-16
339
+ Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
340
+
341
+ ### Изменено
342
+ - [EDUSCHL-22217](https://jira.bars.group/browse/EDUSCHL-22217)
343
+ PATCH Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
344
+ В подзапросах отсутствовало условие фильтрации по статусу.
345
+
304
346
 
305
347
  ## 3.2.3 - 2024-06-06
306
348
  Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
@@ -17,7 +17,7 @@ from setuptools import (
17
17
 
18
18
  PROJECT = 'edu_rdm_integration'
19
19
 
20
- VERSION = '3.2.3'
20
+ VERSION = '3.2.8'
21
21
 
22
22
  current_dir_path = Path().resolve()
23
23
 
@@ -300,6 +300,13 @@ class BaseCollectLatestModelsData(BaseCollectModelsData):
300
300
  Сбор данных моделей РВД на основе логов за период с последней сборки до указанной даты.
301
301
  """
302
302
 
303
+ def __init__(self, *args, use_times_limit: bool = False, **kwargs):
304
+ super().__init__(*args, **kwargs)
305
+
306
+ # Если этот параметр не указан - то высчитываем временные рамки по менеджеру, не учитывая переданные
307
+ # logs_period_started_at и logs_period_ended_at
308
+ self.use_times_limit = use_times_limit
309
+
303
310
  def _has_stage_created_or_in_progress(self, manager_id: str, model: str) -> bool:
304
311
  """Проверяет есть ли готовый к работе stage или в работе для данной модели."""
305
312
  stage_created_or_in_progress = CollectingExportedDataStage.objects.filter(
@@ -326,8 +333,9 @@ class BaseCollectLatestModelsData(BaseCollectModelsData):
326
333
  model_logs = logs.get(model_key) if logs else None
327
334
  manager_last_period_ended_at = managers_last_period_ended_at.get(manager_class.uuid)
328
335
 
329
- kwargs['logs_period_started_at'] = manager_last_period_ended_at or get_today_min_datetime()
330
- kwargs['logs_period_ended_at'] = timezone.now()
336
+ kwargs['logs_period_started_at'] = self.logs_period_started_at if self.use_times_limit else (
337
+ manager_last_period_ended_at or get_today_min_datetime())
338
+ kwargs['logs_period_ended_at'] = self.logs_period_ended_at if self.use_times_limit else timezone.now()
331
339
 
332
340
  manager = manager_class(*args, logs=model_logs, **kwargs)
333
341
 
@@ -309,11 +309,11 @@ def get_collecting_managers_max_period_ended_dates(
309
309
  ) -> Dict[str, 'datetime']:
310
310
  """Возвращает дату и время завершения последнего успешного этапа сбора для менеджеров Функций сбора."""
311
311
  managers_last_period_ended = CollectingExportedDataStage.objects.filter(
312
- status_id=CollectingDataStageStatus.FINISHED.key,
313
312
  manager_id__in=[manager.uuid for manager in collecting_managers],
314
313
  id=Subquery(
315
314
  CollectingExportedDataStage.objects.filter(
316
- manager_id=OuterRef('manager_id')
315
+ manager_id=OuterRef('manager_id'),
316
+ status_id=CollectingDataStageStatus.FINISHED.key,
317
317
  ).order_by('-id').values('id')[:1]
318
318
  ),
319
319
  ).annotate(
@@ -334,11 +334,11 @@ def get_exporting_managers_max_period_ended_dates(
334
334
  ) -> Dict[str, 'datetime']:
335
335
  """Возвращает дату и время последнего успешного этапа экспорта для менеджеров Функций экспорта."""
336
336
  managers_last_period_ended = ExportingDataStage.objects.filter(
337
- status_id=ExportingDataStageStatus.FINISHED.key,
338
337
  manager_id__in=[manager.uuid for manager in exporting_managers],
339
338
  id=Subquery(
340
339
  ExportingDataStage.objects.filter(
341
- manager_id=OuterRef('manager_id')
340
+ manager_id=OuterRef('manager_id'),
341
+ status_id=ExportingDataStageStatus.FINISHED.key,
342
342
  ).order_by('-id').values('id')[:1]
343
343
  ),
344
344
  ).annotate(
@@ -0,0 +1,21 @@
1
+ # Generated by Django 3.1.14 on 2024-07-24 09:14
2
+
3
+ from django.db import (
4
+ migrations,
5
+ models,
6
+ )
7
+
8
+
9
+ class Migration(migrations.Migration):
10
+
11
+ dependencies = [
12
+ ('edu_rdm_integration', '0008_transferredentity'),
13
+ ]
14
+
15
+ operations = [
16
+ migrations.AddField(
17
+ model_name='transferredentity',
18
+ name='export_enabled',
19
+ field=models.BooleanField(default=True, verbose_name='Включение экспорта для сущности'),
20
+ ),
21
+ ]
@@ -34,6 +34,9 @@ from django.utils import (
34
34
  from django.utils.functional import (
35
35
  cached_property,
36
36
  )
37
+ from m3 import (
38
+ json_encode,
39
+ )
37
40
  from m3.db import (
38
41
  BaseObjectModel,
39
42
  )
@@ -906,8 +909,16 @@ class TransferredEntity(BaseObjectModel):
906
909
  verbose_name='Сущность',
907
910
  on_delete=CASCADE,
908
911
  )
912
+ export_enabled = BooleanField(
913
+ verbose_name='Включение экспорта для сущности',
914
+ default=True,
915
+ )
909
916
 
910
917
  class Meta:
911
918
  db_table = 'rdm_transferred_entity'
912
919
  verbose_name = 'Сущность, по которой должен быть произведен сбор и экспорт данных'
913
920
  verbose_name_plural = 'Сущности, по которым должен быть произведен сбор и экспорт данных'
921
+
922
+ @json_encode
923
+ def no_export(self):
924
+ return 'Нет' if self.export_enabled else 'Да'
@@ -17,6 +17,9 @@ from edu_rdm_integration.models import (
17
17
  RegionalDataMartEntityEnum,
18
18
  TransferredEntity,
19
19
  )
20
+ from edu_rdm_integration.registry.ui import (
21
+ TransferredEntityListWindow,
22
+ )
20
23
 
21
24
 
22
25
  class EntitySelectPack(ObjectPack):
@@ -65,6 +68,25 @@ class TransferredEntityAddWindowAction(SelectorWindowAction):
65
68
  return win
66
69
 
67
70
 
71
+ class TransferredEntityExportChangeAction(BaseAction):
72
+ """Экшен смены статуса экспорта выбранных сущностей."""
73
+
74
+ def context_declaration(self):
75
+ """Объявляет контекст экшна."""
76
+ return {
77
+ 'ids': {'type': 'int_list', 'default': []},
78
+ 'export_enabled': {'type': 'boolean', 'default': True}
79
+ }
80
+
81
+ def run(self, request, context):
82
+ """Обеспечивает выполнение запроса."""
83
+ self.parent.model.objects.filter(
84
+ id__in=context.ids
85
+ ).update(export_enabled=context.export_enabled)
86
+
87
+ return OperationResult(success=True)
88
+
89
+
68
90
  class TransferredEntitySaveAction(BaseAction):
69
91
  """Экшн сохранения выбранных сущностей для сбора и экспорта данных."""
70
92
 
@@ -95,6 +117,7 @@ class TransferredEntityPack(ObjectPack):
95
117
  list_sort_order = ('entity__order_number', )
96
118
 
97
119
  need_check_permission = True
120
+ list_window = TransferredEntityListWindow
98
121
 
99
122
  columns = [
100
123
  {
@@ -105,6 +128,10 @@ class TransferredEntityPack(ObjectPack):
105
128
  'data_index': 'entity.title',
106
129
  'header': 'Описание',
107
130
  },
131
+ {
132
+ 'data_index': 'no_export',
133
+ 'header': 'Отключение экспорта',
134
+ }
108
135
  ]
109
136
 
110
137
  def __init__(self):
@@ -116,6 +143,10 @@ class TransferredEntityPack(ObjectPack):
116
143
  self.save_entity_action = TransferredEntitySaveAction()
117
144
  self.replace_action('save_action', self.save_entity_action)
118
145
 
146
+ self.export_change_action = TransferredEntityExportChangeAction()
147
+
148
+ self.actions.append(self.export_change_action)
149
+
119
150
  def configure_grid(self, grid, *args, **kwargs):
120
151
  """Конфигурирует грид."""
121
152
  super().configure_grid(grid, *args, **kwargs)
@@ -0,0 +1,39 @@
1
+ from objectpack.ui import (
2
+ BaseListWindow,
3
+ )
4
+ from m3_ext.ui.all_components import (
5
+ ExtButton,
6
+ )
7
+ from educommon.utils.ui import (
8
+ append_template_globals,
9
+ )
10
+
11
+ class TransferredEntityListWindow(BaseListWindow):
12
+ """Окно реестра сущностей для сбора и экспорта данных."""
13
+
14
+ def _init_components(self):
15
+ """Инициализация компонентов окна."""
16
+ super()._init_components()
17
+
18
+ self.export_off_button = ExtButton(
19
+ text='Отключить экспорт', handler='offExport'
20
+ )
21
+ self.export_on_button = ExtButton(
22
+ text='Включить экспорт', handler='onExport'
23
+ )
24
+
25
+ def _do_layout(self):
26
+ """Размещение компонентов окна на форме."""
27
+ super()._do_layout()
28
+
29
+ self.grid.top_bar.items.extend((self.export_off_button, self.export_on_button))
30
+
31
+ def set_params(self, params, *args, **kwargs):
32
+ """Настройка окна."""
33
+ super().set_params(params, *args, **kwargs)
34
+
35
+ append_template_globals(self, 'ui-js/transferred-entity-list.js')
36
+ self.export_change_action_url = (
37
+ params['pack'].export_change_action.get_absolute_url()
38
+ )
39
+ self.pack = params['pack']
@@ -1,5 +1,5 @@
1
- from itertools import (
2
- chain,
1
+ from collections import (
2
+ defaultdict,
3
3
  )
4
4
  from typing import (
5
5
  TYPE_CHECKING,
@@ -18,16 +18,10 @@ from celery.schedules import (
18
18
  from django.conf import (
19
19
  settings,
20
20
  )
21
- from django.db.models import (
22
- CharField,
23
- Max,
24
- )
25
- from django.db.models.functions import (
26
- Cast,
27
- )
28
21
  from django.utils import (
29
22
  timezone,
30
23
  )
24
+
31
25
  from educommon.async_task.locker import (
32
26
  TaskLocker,
33
27
  )
@@ -71,9 +65,9 @@ from edu_rdm_integration.export_data.helpers import (
71
65
  set_failed_status_suspended_exporting_data_stages,
72
66
  )
73
67
  from edu_rdm_integration.helpers import (
68
+ UploadStatusHelper,
74
69
  get_collecting_managers_max_period_ended_dates,
75
70
  get_exporting_managers_max_period_ended_dates,
76
- UploadStatusHelper,
77
71
  save_command_log_link,
78
72
  )
79
73
  from edu_rdm_integration.models import (
@@ -85,6 +79,7 @@ from edu_rdm_integration.storages import (
85
79
  RegionalDataMartEntityStorage,
86
80
  )
87
81
 
82
+
88
83
  if TYPE_CHECKING:
89
84
  from datetime import (
90
85
  datetime,
@@ -216,6 +211,7 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
216
211
  self._exporting_data_manager_to_period_end: Dict[str, 'datetime'] = {}
217
212
 
218
213
  self._transferred_entities = []
214
+ self._entites_models_map = defaultdict(list)
219
215
 
220
216
  def process(self, *args, **kwargs):
221
217
  """Выполняет задачу."""
@@ -230,17 +226,22 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
230
226
  pk=self.request.id,
231
227
  ).values_list('pk', flat=True).first()
232
228
 
233
- model_enum_values = RegionalDataMartEntityEnum.get_entities_model_enums(
234
- entity_enums=self._transferred_entities,
235
- is_sorted=True,
236
- )
229
+ collected_entity_models = set()
237
230
 
238
- filtered_model_enum_values = filter(lambda model: model.order_number != DEFAULT_ORDER_NUMBER, model_enum_values)
239
- for model_enum_value in filtered_model_enum_values:
240
- self._run_collect_model_data(model_enum_value.key, task_id)
231
+ for entity_enum, export_enabled in sorted(
232
+ self._transferred_entities, key=lambda entity: entity[0].order_number
233
+ ):
234
+ entity_models = self._entites_models_map.get(entity_enum.key, ())
235
+ for model_enum_value in entity_models:
236
+ if model_enum_value.key not in collected_entity_models:
237
+ self._run_collect_model_data(model_enum_value.key, task_id)
238
+ collected_entity_models.add(model_enum_value.key)
241
239
 
242
- for entity_enum_value in sorted(self._transferred_entities, key=lambda entity: entity.order_number):
243
- self._run_export_entity_data(entity_enum_value.key, task_id)
240
+ try:
241
+ if export_enabled:
242
+ self._run_export_entity_data(entity_enum.key, task_id)
243
+ except Exception:
244
+ continue
244
245
 
245
246
  def _run_collect_model_data(self, model: str, task_id: str) -> None:
246
247
  """Запускает сбор данных модели РВД."""
@@ -264,10 +265,17 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
264
265
  def _collect_transferred_entities(self) -> None:
265
266
  """Собирает сущности РВД, по которым будет произведен сбор и экспорт данных."""
266
267
  self._transferred_entities = [
267
- RegionalDataMartEntityEnum.get_model_enum_value(key=entity)
268
- for entity in TransferredEntity.objects.values_list('entity', flat=True)
268
+ (RegionalDataMartEntityEnum.get_model_enum_value(key=entity), export_enabled)
269
+ for entity, export_enabled in TransferredEntity.objects.values_list('entity', 'export_enabled')
269
270
  ]
270
271
 
272
+ # Собираем словарь по сущностям с моделями для сборки
273
+ for entity, _ in self._transferred_entities:
274
+ self._entites_models_map[entity.key].extend(
275
+ (model_enum for model_enum in (entity.main_model_enum, *entity.additional_model_enums)
276
+ if model_enum.order_number != DEFAULT_ORDER_NUMBER)
277
+ )
278
+
271
279
  def _collect_managers(self) -> None:
272
280
  """Собирает менеджеры Функций для сбора и выгрузки данных."""
273
281
  entity_storage = RegionalDataMartEntityStorage()
@@ -280,15 +288,16 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
280
288
  tags={REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA},
281
289
  )
282
290
 
283
- for transferred_entity in self._transferred_entities:
284
- for model in chain((transferred_entity.main_model_enum, ), transferred_entity.additional_model_enums):
285
- collect_manager_class = collecting_models_data_managers_map.get(model.key)
291
+ for entity_key, entity_models in self._entites_models_map.items():
292
+ for entity_model in entity_models:
293
+ collect_manager_class = collecting_models_data_managers_map.get(entity_model.key)
286
294
  if collect_manager_class:
287
- self._collecting_data_managers[model.key] = collect_manager_class
295
+ self._collecting_data_managers[entity_model.key] = collect_manager_class
288
296
 
289
- export_manager_class = exporting_entities_data_managers_map.get(transferred_entity.key)
297
+ export_manager_class = exporting_entities_data_managers_map.get(entity_key)
290
298
  if export_manager_class:
291
- self._exporting_data_managers[transferred_entity.key] = export_manager_class
299
+ self._exporting_data_managers[entity_key] = export_manager_class
300
+
292
301
 
293
302
  def _calculate_collecting_managers_logs_period_ended_at(self) -> None:
294
303
  """Определяет дату последнего успешного этапа сбора у менеджеров Функций сбора."""
@@ -348,6 +357,7 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
348
357
  logs_period_started_at=command.logs_period_started_at,
349
358
  logs_period_ended_at=command.logs_period_ended_at,
350
359
  command_id=command.id,
360
+ use_times_limit=True,
351
361
  )
352
362
 
353
363
  def _prepare_export_entity_data_class(self, command: EduRdmExportDataCommandProgress) -> ExportLatestEntitiesData:
@@ -0,0 +1,37 @@
1
+ var grid = Ext.getCmp('{{component.grid.client_id}}');
2
+
3
+ function changeExport(bool_value){
4
+ var selections = grid.selModel.getSelections();
5
+ var selections_len = selections.length;
6
+
7
+ if (selections_len){
8
+ var selected_ids = [];
9
+ for (var i = 0; i < selections_len; i += 1) {
10
+ selected_ids.push(selections[i].id);
11
+ }
12
+ var params = {'export_enabled': bool_value};
13
+ params['ids'] = selected_ids.join(',');
14
+ Ext.Ajax.request({
15
+ url: '{{component.export_change_action_url}}',
16
+ method: 'POST',
17
+ params: params,
18
+ success: function(res, opt){
19
+ if (Ext.util.JSON.decode(res.responseText).success) {
20
+ grid.refreshStore();
21
+ }
22
+ smart_eval(res.responseText);
23
+ },
24
+ failure: Ext.emptyFn
25
+ });
26
+ } else {
27
+ Ext.Msg.alert('Внимание!', 'Выберите Сущность для выключения экспорта!');
28
+ }
29
+ }
30
+
31
+ function offExport(){
32
+ changeExport(false)
33
+ }
34
+
35
+ function onExport(){
36
+ changeExport(true)
37
+ }