edu-rdm-integration 3.4.3__tar.gz → 3.4.5__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 (205) hide show
  1. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/CHANGELOG.md +16 -0
  2. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/PKG-INFO +18 -1
  3. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/dependencies/external_packages.txt +1 -0
  4. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/setup.py +1 -1
  5. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/export_manger.py +7 -1
  6. edu-rdm-integration-3.4.5/src/edu_rdm_integration/management/commands/async_fix_attachment_size.py +254 -0
  7. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration.egg-info/PKG-INFO +18 -1
  8. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration.egg-info/SOURCES.txt +1 -0
  9. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration.egg-info/requires.txt +1 -0
  10. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/CONDUCT.md +0 -0
  11. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/LICENSE +0 -0
  12. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/MANIFEST.in +0 -0
  13. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/README.md +0 -0
  14. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/pyproject.toml +0 -0
  15. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/dependencies/development_packages.txt +0 -0
  16. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/dependencies/internal_packages.txt +0 -0
  17. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/dependencies/internal_sources.txt +0 -0
  18. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/dependencies/production_packages.txt +0 -0
  19. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/dependencies/system_packages.txt +0 -0
  20. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/dependencies/testing_packages.txt +0 -0
  21. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/development.txt +0 -0
  22. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/production.txt +0 -0
  23. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/requirements/stage.txt +0 -0
  24. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/setup.cfg +0 -0
  25. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/__init__.py +0 -0
  26. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/__init__.py +0 -0
  27. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/apps.py +0 -0
  28. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/caches.py +0 -0
  29. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/consts.py +0 -0
  30. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/enums.py +0 -0
  31. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/errors.py +0 -0
  32. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/functions.py +0 -0
  33. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/helpers.py +0 -0
  34. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/managers.py +0 -0
  35. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/presenters.py +0 -0
  36. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/receivers.py +0 -0
  37. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/results.py +0 -0
  38. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/runners.py +0 -0
  39. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/strategies.py +0 -0
  40. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/strings.py +0 -0
  41. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/tests.py +0 -0
  42. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/adapters/validators.py +0 -0
  43. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/app_meta.py +0 -0
  44. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/app_settings.py +0 -0
  45. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/apps.py +0 -0
  46. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/base.py +0 -0
  47. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_and_export_data/__init__.py +0 -0
  48. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_and_export_data/apps.py +0 -0
  49. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +0 -0
  50. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_and_export_data/migrations/__init__.py +0 -0
  51. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_and_export_data/models.py +0 -0
  52. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_and_export_data/utils.py +0 -0
  53. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/__init__.py +0 -0
  54. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/base/__init__.py +0 -0
  55. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/base/caches.py +0 -0
  56. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/base/functions.py +0 -0
  57. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/base/helpers.py +0 -0
  58. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/base/managers.py +0 -0
  59. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/base/mixins.py +0 -0
  60. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/base/runners.py +0 -0
  61. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/__init__.py +0 -0
  62. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/__init__.py +0 -0
  63. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/caches.py +0 -0
  64. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/consts.py +0 -0
  65. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/enums.py +0 -0
  66. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/errors.py +0 -0
  67. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/functions.py +0 -0
  68. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/helpers.py +0 -0
  69. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/managers.py +0 -0
  70. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/presenters.py +0 -0
  71. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/results.py +0 -0
  72. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/runners.py +0 -0
  73. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/strings.py +0 -0
  74. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/tests.py +0 -0
  75. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/base/validators.py +0 -0
  76. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/calculated/strategies.py +0 -0
  77. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/collect.py +0 -0
  78. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/generators.py +0 -0
  79. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/helpers.py +0 -0
  80. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/__init__.py +0 -0
  81. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/__init__.py +0 -0
  82. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/caches.py +0 -0
  83. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/consts.py +0 -0
  84. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/enums.py +0 -0
  85. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/errors.py +0 -0
  86. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/functions.py +0 -0
  87. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/helpers.py +0 -0
  88. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/managers.py +0 -0
  89. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/presenters.py +0 -0
  90. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/results.py +0 -0
  91. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/runners.py +0 -0
  92. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/strings.py +0 -0
  93. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/tests.py +0 -0
  94. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/base/validators.py +0 -0
  95. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/non_calculated/strategies.py +0 -0
  96. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/collect_data/tests.py +0 -0
  97. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/consts.py +0 -0
  98. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/entities.py +0 -0
  99. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/enum_register/__init__.py +0 -0
  100. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/enum_register/mixins.py +0 -0
  101. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/enum_register/register.py +0 -0
  102. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/enums.py +0 -0
  103. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/__init__.py +0 -0
  104. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/__init__.py +0 -0
  105. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/caches.py +0 -0
  106. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/consts.py +0 -0
  107. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/enums.py +0 -0
  108. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/errors.py +0 -0
  109. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/functions.py +0 -0
  110. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/helpers.py +0 -0
  111. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/managers.py +0 -0
  112. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/presenters.py +0 -0
  113. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/requests.py +0 -0
  114. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/results.py +0 -0
  115. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/runners.py +0 -0
  116. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/strings.py +0 -0
  117. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/tests.py +0 -0
  118. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/base/validators.py +0 -0
  119. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/consts.py +0 -0
  120. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/dataclasses.py +0 -0
  121. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/export.py +0 -0
  122. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/generators.py +0 -0
  123. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/helpers.py +0 -0
  124. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/queue.py +0 -0
  125. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/export_data/strategies.py +0 -0
  126. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/__init__.py +0 -0
  127. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/__init__.py-tpl +0 -0
  128. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/apps.py-tpl +0 -0
  129. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/caches.py-tpl +0 -0
  130. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/consts.py-tpl +0 -0
  131. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/enums.py-tpl +0 -0
  132. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/errors.py-tpl +0 -0
  133. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/functions.py-tpl +0 -0
  134. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/helpers.py-tpl +0 -0
  135. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/managers.py-tpl +0 -0
  136. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/presenters.py-tpl +0 -0
  137. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/results.py-tpl +0 -0
  138. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/runners.py-tpl +0 -0
  139. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/strings.py-tpl +0 -0
  140. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/tests.py-tpl +0 -0
  141. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_collect_data_template/validators.py-tpl +0 -0
  142. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/__init__.py-tpl +0 -0
  143. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/apps.py-tpl +0 -0
  144. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/caches.py-tpl +0 -0
  145. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/consts.py-tpl +0 -0
  146. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/enums.py-tpl +0 -0
  147. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/errors.py-tpl +0 -0
  148. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/functions.py-tpl +0 -0
  149. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/helpers.py-tpl +0 -0
  150. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/managers.py-tpl +0 -0
  151. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/presenters.py-tpl +0 -0
  152. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/results.py-tpl +0 -0
  153. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/runners.py-tpl +0 -0
  154. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/strings.py-tpl +0 -0
  155. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/tests.py-tpl +0 -0
  156. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/function_templates/function_export_data_template/validators.py-tpl +0 -0
  157. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/helpers.py +0 -0
  158. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/__init__.py +0 -0
  159. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/commands/__init__.py +0 -0
  160. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/commands/check_upload_status.py +0 -0
  161. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/commands/collect_latest_models_data.py +0 -0
  162. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/commands/collect_models_data.py +0 -0
  163. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/commands/datamart_status.py +0 -0
  164. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/commands/datamart_upload.py +0 -0
  165. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/commands/export_entities_data.py +0 -0
  166. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/commands/export_latest_entities_data.py +0 -0
  167. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/management/general.py +0 -0
  168. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/mapping.py +0 -0
  169. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0001_initial.py +0 -0
  170. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +0 -0
  171. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -0
  172. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0004_uploaderclientlog.py +0 -0
  173. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0005_auto_20231204_1224.py +0 -0
  174. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0006_request_status_data.py +0 -0
  175. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -0
  176. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0008_transferredentity.py +0 -0
  177. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0009_auto_20240522_1619.py +0 -0
  178. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0010_transferredentity_export_enabled.py +0 -0
  179. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0011_exportingdatasubstageentity.py +0 -0
  180. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0012_exportingdatasubstageattachment_attachment_size.py +0 -0
  181. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0013_set_attachment_size.py +0 -0
  182. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/0014_uploaddatacommand.py +0 -0
  183. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/migrations/__init__.py +0 -0
  184. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/models.py +0 -0
  185. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/redis_cache.py +0 -0
  186. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/registry/__init__.py +0 -0
  187. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/registry/actions.py +0 -0
  188. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/registry/ui.py +0 -0
  189. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/signals.py +0 -0
  190. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/storages.py +0 -0
  191. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/tasks.py +0 -0
  192. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/templates/ui-js/transferred-entity-list.js +0 -0
  193. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/typing.py +0 -0
  194. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/uploader_log/__init__.py +0 -0
  195. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/uploader_log/actions.py +0 -0
  196. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/uploader_log/apps.py +0 -0
  197. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/uploader_log/enums.py +0 -0
  198. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/uploader_log/managers.py +0 -0
  199. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/uploader_log/templates/ui-js/object-grid-buttons.js +0 -0
  200. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/uploader_log/ui.py +0 -0
  201. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration/utils.py +0 -0
  202. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration.egg-info/dependency_links.txt +0 -0
  203. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration.egg-info/namespace_packages.txt +0 -0
  204. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration.egg-info/not-zip-safe +0 -0
  205. {edu-rdm-integration-3.4.3 → edu-rdm-integration-3.4.5}/src/edu_rdm_integration.egg-info/top_level.txt +0 -0
@@ -29,6 +29,22 @@
29
29
  ### Удалено
30
30
 
31
31
 
32
+ ## 3.4.5 - 2024-11-01
33
+ Добавлена обработка ошибок чтения файла при отправке данных в РВД (UploadDataAsyncTask)
34
+
35
+ ## Исправлено
36
+ - [EDUSCHL-22734](https://jira.bars.group/browse/EDUSCHL-22734)
37
+ Добавлена обработка ошибок чтения файла при отправке данных в РВД (UploadDataAsyncTask)
38
+
39
+
40
+ ## 3.4.4 - 2024-10-23
41
+ Добавлена ассинхронная менедж-команда простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
42
+
43
+ ## Исправлено
44
+ - [EDUSCHL-22651](https://jira.bars.group/browse/EDUSCHL-22651)
45
+ Добавлена ассинхронная менедж-команда простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
46
+
47
+
32
48
  ## 3.4.3 - 2024-10-17
33
49
  Исправлена миграция простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
34
50
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edu-rdm-integration
3
- Version: 3.4.3
3
+ Version: 3.4.5
4
4
  Summary: Интеграция с Региональной витриной данных
5
5
  Home-page:
6
6
  Download-URL:
@@ -28,6 +28,7 @@ Requires-Dist: wheel<0.42,>=0.37.1
28
28
  Requires-Dist: transliterate<2
29
29
  Requires-Dist: Django<3.3,>=2.2
30
30
  Requires-Dist: celery<5.3,>=4.4.7
31
+ Requires-Dist: asyncpg==0.23.0
31
32
  Requires-Dist: educommon<4,>=3.11.0
32
33
  Requires-Dist: function-tools<1,>=0.9.0
33
34
  Requires-Dist: m3-db-utils<1,>=0.3.10
@@ -302,6 +303,22 @@ Requires-Dist: uploader-client<1,>=0.2.1
302
303
  ### Удалено
303
304
 
304
305
 
306
+ ## 3.4.5 - 2024-11-01
307
+ Добавлена обработка ошибок чтения файла при отправке данных в РВД (UploadDataAsyncTask)
308
+
309
+ ## Исправлено
310
+ - [EDUSCHL-22734](https://jira.bars.group/browse/EDUSCHL-22734)
311
+ Добавлена обработка ошибок чтения файла при отправке данных в РВД (UploadDataAsyncTask)
312
+
313
+
314
+ ## 3.4.4 - 2024-10-23
315
+ Добавлена ассинхронная менедж-команда простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
316
+
317
+ ## Исправлено
318
+ - [EDUSCHL-22651](https://jira.bars.group/browse/EDUSCHL-22651)
319
+ Добавлена ассинхронная менедж-команда простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
320
+
321
+
305
322
  ## 3.4.3 - 2024-10-17
306
323
  Исправлена миграция простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
307
324
 
@@ -1,3 +1,4 @@
1
1
  transliterate<2
2
2
  Django>=2.2,<3.3
3
3
  celery>=4.4.7,<5.3
4
+ asyncpg==0.23.0
@@ -17,7 +17,7 @@ from setuptools import (
17
17
 
18
18
  PROJECT = 'edu_rdm_integration'
19
19
 
20
- VERSION = '3.4.3'
20
+ VERSION = '3.4.5'
21
21
 
22
22
  current_dir_path = Path().resolve()
23
23
 
@@ -214,6 +214,12 @@ class WorkerSender:
214
214
  method = OPERATIONS_METHODS_MAP.get(file.operation)
215
215
  file_path = Path.joinpath(Path(settings.MEDIA_ROOT), file.attachment_name)
216
216
 
217
+ try:
218
+ file_data = file_path.open('rb').read()
219
+ except (OSError, IOError, FileNotFoundError) as error:
220
+ logger.error(f'Ошибка чтения файла {file_path} - {str(error)} ')
221
+ continue
222
+
217
223
  request = RegionalDataMartEntityRequest(
218
224
  datamart_name=settings.RDM_UPLOADER_CLIENT_DATAMART_NAME,
219
225
  table_name=entity_key.lower(),
@@ -224,7 +230,7 @@ class WorkerSender:
224
230
  'Content-Type': 'text/csv',
225
231
  },
226
232
  files=[],
227
- data=file_path.open('rb').read(),
233
+ data=file_data,
228
234
  )
229
235
 
230
236
  result = adapter.send(request)
@@ -0,0 +1,254 @@
1
+ """
2
+ Команда для проставления расчетов файла . По умолчанию собирается за месяц. Обновление работает асинхронно.
3
+
4
+ Выполнение:
5
+ django-admin async_fix_attachment_size --chunk_size=50 --count_store_size --connection_pool_size=5
6
+ --async_workers_count=10 --date_begin='01-01-2023'
7
+
8
+ Параметры:
9
+ --date_begin: дата начала сбора данных по сгенерированным файлам в формате ДД-ММ-ГГГГ (по умолчанию месяц назад).
10
+ --date_end: дата окончания сбора данных по сгенерированным файлам в формате ДД-ММ-ГГГГ (по умолчанию текущая дата).
11
+ --chunk_size: количество файлов в одной итерации, по умолчанию 500
12
+ --count_store_size: при указании этого флага, будет произведен расчет размера файла (
13
+ запрос через оs и вычисление размера) - не рекомендуется при большом количестве данных и на дампах с прода
14
+ --connection_pool_size: количество одновременных коннектов к базе по умолчанию 10
15
+ --async_workers_count количество одновременных асинхронных воркеров-исполнителей по умолчанию 20
16
+ """
17
+
18
+
19
+ import asyncio
20
+ from datetime import (
21
+ date,
22
+ datetime,
23
+ timedelta,
24
+ )
25
+ from typing import (
26
+ List,
27
+ Tuple,
28
+ )
29
+
30
+ import asyncpg
31
+ from django.conf import (
32
+ settings,
33
+ )
34
+ from django.core.management import (
35
+ BaseCommand,
36
+ CommandError,
37
+ )
38
+
39
+ from educommon import (
40
+ logger,
41
+ )
42
+ from educommon.utils.seqtools import (
43
+ make_chunks,
44
+ )
45
+
46
+ from edu_rdm_integration.enums import (
47
+ FileUploadStatusEnum,
48
+ )
49
+ from edu_rdm_integration.models import (
50
+ ExportingDataSubStageAttachment,
51
+ )
52
+
53
+
54
+ DEFAULT_QUERYSET_CHUNK_SIZE = 500
55
+ DEFAULT_FILE_SIZE = 10_485_760
56
+ DEFAULT_ASYNC_WORKERS_COUNT = 20
57
+ DEFAULT_POOL_SIZE = 10
58
+ DB_SETTINGS = settings.DATABASES['default']
59
+
60
+
61
+ class Command(BaseCommand):
62
+ """Команда для проставления размера по умолчанию (в байтах) для отправленных файлов."""
63
+
64
+ help = ( # noqa: A003
65
+ 'Команда для проставления размера по умолчанию (в байтах) для отправленных файлов.'
66
+ )
67
+
68
+ def __init__(self, *args, **kwargs):
69
+ super().__init__(*args, **kwargs)
70
+
71
+ self.result = {
72
+ 'initial_count_rows_to_fix': 0,
73
+ 'errors': [],
74
+ 'fixed_rows_count': 0,
75
+ }
76
+
77
+ def add_arguments(self, parser):
78
+ """Добавление аргументов запуска команды."""
79
+ parser.add_argument(
80
+ '--chunk_size',
81
+ type=int,
82
+ default=DEFAULT_QUERYSET_CHUNK_SIZE,
83
+ help='Кол-во единовременно изменяемых элементов в запросе'
84
+ )
85
+ parser.add_argument(
86
+ '--count_store_size',
87
+ action='store_true',
88
+ default=False,
89
+ help='Рассчитать размер файлов'
90
+ ),
91
+ parser.add_argument(
92
+ '--connection_pool_size',
93
+ type=int,
94
+ default=DEFAULT_POOL_SIZE,
95
+ help='Кол-во одновременных коннектов к базе'
96
+ )
97
+ parser.add_argument(
98
+ '--async_workers_count',
99
+ type=int,
100
+ default=DEFAULT_ASYNC_WORKERS_COUNT,
101
+ help='Кол-во одновременных асинхронных воркеров-исполнителей'
102
+ )
103
+ parser.add_argument(
104
+ '--date_begin',
105
+ type=lambda d: datetime.strptime(d, '%d-%m-%Y').date(),
106
+ help='Дата начала поиска сгенерированных файлов в формате %%d-%%m-%%Y.',
107
+ )
108
+ parser.add_argument(
109
+ '--date_end',
110
+ type=lambda d: datetime.strptime(d, '%d-%m-%Y').date(),
111
+ help='Дата окончания поиска сгенерированных файлов в формате %%d-%%m-%%Y.',
112
+ )
113
+
114
+ def get_attachments_fix_query(
115
+ self,
116
+ chunk_size: int,
117
+ date_begin: date,
118
+ date_end: date,
119
+ count_store_size: bool
120
+ ) -> List[Tuple[int, int]]:
121
+ """Формирование id файлов, которым надо обновить размер."""
122
+ logger.info('Определение файлов, которым надо обновить размер.')
123
+ attachment_query = ExportingDataSubStageAttachment.objects.filter(
124
+ exportingdatasubstageuploaderclientlog__file_upload_status=FileUploadStatusEnum.IN_PROGRESS,
125
+ exportingdatasubstageuploaderclientlog__is_emulation=False,
126
+ attachment_size__isnull=True,
127
+ modified__gte=date_begin,
128
+ modified__lte=date_end,
129
+ )
130
+ update_attachments = []
131
+
132
+ for chunk in make_chunks(attachment_query.iterator(), chunk_size):
133
+ if count_store_size:
134
+ update_attachments.append(
135
+ [
136
+ (
137
+ attachment.id, attachment.attachment.size
138
+ if attachment.attachment.field.storage.exists(attachment.attachment.name)
139
+ else DEFAULT_FILE_SIZE
140
+ )
141
+ for attachment in chunk
142
+ ]
143
+ )
144
+ else:
145
+ update_attachments.append([(attachment.id, DEFAULT_FILE_SIZE) for attachment in chunk])
146
+
147
+ return update_attachments
148
+
149
+ async def execute_update_sql(
150
+ self,
151
+ pool: asyncpg.Pool,
152
+ data: List[Tuple[int, int]]
153
+ ) -> None:
154
+ """Метод для исполнения сгенерированного UPDATE sql запроса."""
155
+ self.result['initial_count_rows_to_fix'] += len(data)
156
+ logger.info('Обновление размера файлов')
157
+ async with pool.acquire() as connection:
158
+ try:
159
+ await connection.executemany(
160
+ """
161
+ UPDATE rdm_exporting_data_sub_stage_attachment
162
+ set attachment_size = $2
163
+ where id = $1;
164
+ """, data,
165
+ )
166
+ self.result['fixed_rows_count'] += len(data)
167
+ except Exception as ex:
168
+ self.result['errors'].append(str(ex))
169
+
170
+ async def fix_attachment_size(
171
+ self,
172
+ fix_queries: List,
173
+ pool_size: int = None,
174
+ workers_count: int = None
175
+ ) -> None:
176
+ """Асинхронное обновление размера файлов."""
177
+ pool = await asyncpg.create_pool(
178
+ max_size=pool_size,
179
+ min_size=pool_size,
180
+ host=DB_SETTINGS['HOST'],
181
+ port=DB_SETTINGS['PORT'],
182
+ user=DB_SETTINGS['USER'],
183
+ password=DB_SETTINGS['PASSWORD'],
184
+ database=DB_SETTINGS['NAME']
185
+ )
186
+ if len(fix_queries) > workers_count:
187
+ for chunk in make_chunks(fix_queries, workers_count):
188
+ tasks = [self.execute_update_sql(pool, query) for query in chunk]
189
+ await asyncio.gather(*tasks)
190
+ else:
191
+ tasks = [self.execute_update_sql(pool, query) for query in fix_queries]
192
+ await asyncio.gather(*tasks)
193
+
194
+ def update_attachment_size(
195
+ self,
196
+ connection_pool_size: int,
197
+ chunk_size: int,
198
+ date_begin: date,
199
+ date_end:date,
200
+ async_workers_count: int,
201
+ count_store_size: bool
202
+ ):
203
+ """Обновление размеров файла."""
204
+ fix_queries = self.get_attachments_fix_query(chunk_size, date_begin, date_end, count_store_size)
205
+ if fix_queries:
206
+ event_loop = asyncio.get_event_loop()
207
+ try:
208
+ event_loop.run_until_complete(
209
+ self.fix_attachment_size(fix_queries, connection_pool_size, async_workers_count)
210
+ )
211
+ finally:
212
+ event_loop.close()
213
+
214
+ def handle(self, *args, **options):
215
+ """Выполнение команды."""
216
+ time_start = datetime.now()
217
+
218
+ chunk_size = options['chunk_size']
219
+ connection_pool_size = options['connection_pool_size']
220
+ async_workers_count = options['async_workers_count']
221
+ count_store_size = options['count_store_size']
222
+
223
+ date_begin = options.get('date_begin')
224
+ date_end = options.get('date_end') or date.today()
225
+
226
+ if not date_begin:
227
+ date_begin = date_end - timedelta(days=30)
228
+
229
+ elif date_begin > date_end:
230
+ raise CommandError('Дата начала сборки больше, чем дата окончания')
231
+
232
+ logger.info('Обновление размеров файла\n')
233
+
234
+ self.update_attachment_size(
235
+ connection_pool_size,
236
+ chunk_size,
237
+ date_begin,
238
+ date_end,
239
+ async_workers_count,
240
+ count_store_size
241
+ )
242
+
243
+ delta = datetime.now() - time_start
244
+
245
+ logger.info(f'Время выполнения: {delta}\n')
246
+
247
+ logger.info(
248
+ f'Начальное кол-во записей для исправления: {self.result["initial_count_rows_to_fix"]}\n'
249
+ f'Исправлено: {self.result["fixed_rows_count"]}\n'
250
+ )
251
+
252
+ errors = self.result['errors']
253
+ for error in errors:
254
+ logger.error(error)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edu-rdm-integration
3
- Version: 3.4.3
3
+ Version: 3.4.5
4
4
  Summary: Интеграция с Региональной витриной данных
5
5
  Home-page:
6
6
  Download-URL:
@@ -28,6 +28,7 @@ Requires-Dist: wheel<0.42,>=0.37.1
28
28
  Requires-Dist: transliterate<2
29
29
  Requires-Dist: Django<3.3,>=2.2
30
30
  Requires-Dist: celery<5.3,>=4.4.7
31
+ Requires-Dist: asyncpg==0.23.0
31
32
  Requires-Dist: educommon<4,>=3.11.0
32
33
  Requires-Dist: function-tools<1,>=0.9.0
33
34
  Requires-Dist: m3-db-utils<1,>=0.3.10
@@ -302,6 +303,22 @@ Requires-Dist: uploader-client<1,>=0.2.1
302
303
  ### Удалено
303
304
 
304
305
 
306
+ ## 3.4.5 - 2024-11-01
307
+ Добавлена обработка ошибок чтения файла при отправке данных в РВД (UploadDataAsyncTask)
308
+
309
+ ## Исправлено
310
+ - [EDUSCHL-22734](https://jira.bars.group/browse/EDUSCHL-22734)
311
+ Добавлена обработка ошибок чтения файла при отправке данных в РВД (UploadDataAsyncTask)
312
+
313
+
314
+ ## 3.4.4 - 2024-10-23
315
+ Добавлена ассинхронная менедж-команда простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
316
+
317
+ ## Исправлено
318
+ - [EDUSCHL-22651](https://jira.bars.group/browse/EDUSCHL-22651)
319
+ Добавлена ассинхронная менедж-команда простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
320
+
321
+
305
322
  ## 3.4.3 - 2024-10-17
306
323
  Исправлена миграция простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
307
324
 
@@ -168,6 +168,7 @@ src/edu_rdm_integration/function_templates/function_export_data_template/validat
168
168
  src/edu_rdm_integration/management/__init__.py
169
169
  src/edu_rdm_integration/management/general.py
170
170
  src/edu_rdm_integration/management/commands/__init__.py
171
+ src/edu_rdm_integration/management/commands/async_fix_attachment_size.py
171
172
  src/edu_rdm_integration/management/commands/check_upload_status.py
172
173
  src/edu_rdm_integration/management/commands/collect_latest_models_data.py
173
174
  src/edu_rdm_integration/management/commands/collect_models_data.py
@@ -5,6 +5,7 @@ wheel<0.42,>=0.37.1
5
5
  transliterate<2
6
6
  Django<3.3,>=2.2
7
7
  celery<5.3,>=4.4.7
8
+ asyncpg==0.23.0
8
9
  educommon<4,>=3.11.0
9
10
  function-tools<1,>=0.9.0
10
11
  m3-db-utils<1,>=0.3.10