edu-rdm-integration 3.5.8__tar.gz → 3.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/CHANGELOG.md +38 -0
  2. edu_rdm_integration-3.6.0/MANIFEST.in +9 -0
  3. {edu-rdm-integration-3.5.8/src/edu_rdm_integration.egg-info → edu_rdm_integration-3.6.0}/PKG-INFO +125 -9
  4. edu-rdm-integration-3.5.8/PKG-INFO → edu_rdm_integration-3.6.0/README.md +87 -15
  5. edu_rdm_integration-3.6.0/pyproject.toml +133 -0
  6. edu_rdm_integration-3.6.0/setup.cfg +4 -0
  7. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/app_settings.py +13 -0
  8. edu_rdm_integration-3.6.0/src/edu_rdm_integration/base.py +147 -0
  9. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/consts.py +2 -0
  10. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/enums.py +31 -0
  11. edu_rdm_integration-3.6.0/src/edu_rdm_integration/migrations/0016_transferredentity_queue_level.py +22 -0
  12. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/models.py +6 -0
  13. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/registry/actions.py +23 -4
  14. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/registry/ui.py +44 -0
  15. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/tasks.py +105 -113
  16. edu-rdm-integration-3.5.8/README.md → edu_rdm_integration-3.6.0/src/edu_rdm_integration.egg-info/PKG-INFO +131 -2
  17. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration.egg-info/SOURCES.txt +2 -14
  18. edu_rdm_integration-3.6.0/src/edu_rdm_integration.egg-info/requires.txt +22 -0
  19. edu-rdm-integration-3.5.8/MANIFEST.in +0 -10
  20. edu-rdm-integration-3.5.8/pyproject.toml +0 -19
  21. edu-rdm-integration-3.5.8/requirements/dependencies/development_packages.txt +0 -5
  22. edu-rdm-integration-3.5.8/requirements/dependencies/external_packages.txt +0 -4
  23. edu-rdm-integration-3.5.8/requirements/dependencies/internal_packages.txt +0 -5
  24. edu-rdm-integration-3.5.8/requirements/dependencies/internal_sources.txt +0 -4
  25. edu-rdm-integration-3.5.8/requirements/dependencies/production_packages.txt +0 -2
  26. edu-rdm-integration-3.5.8/requirements/dependencies/system_packages.txt +0 -4
  27. edu-rdm-integration-3.5.8/requirements/dependencies/testing_packages.txt +0 -0
  28. edu-rdm-integration-3.5.8/requirements/development.txt +0 -5
  29. edu-rdm-integration-3.5.8/requirements/production.txt +0 -2
  30. edu-rdm-integration-3.5.8/requirements/stage.txt +0 -5
  31. edu-rdm-integration-3.5.8/setup.cfg +0 -36
  32. edu-rdm-integration-3.5.8/setup.py +0 -110
  33. edu-rdm-integration-3.5.8/src/edu_rdm_integration/base.py +0 -41
  34. edu-rdm-integration-3.5.8/src/edu_rdm_integration.egg-info/namespace_packages.txt +0 -1
  35. edu-rdm-integration-3.5.8/src/edu_rdm_integration.egg-info/not-zip-safe +0 -1
  36. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/CONDUCT.md +0 -0
  37. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/LICENSE +0 -0
  38. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/__init__.py +0 -0
  39. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/__init__.py +0 -0
  40. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/apps.py +0 -0
  41. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/caches.py +0 -0
  42. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/consts.py +0 -0
  43. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/enums.py +0 -0
  44. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/errors.py +0 -0
  45. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/functions.py +0 -0
  46. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/helpers.py +0 -0
  47. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/managers.py +0 -0
  48. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/presenters.py +0 -0
  49. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/receivers.py +0 -0
  50. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/results.py +0 -0
  51. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/runners.py +0 -0
  52. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/strategies.py +0 -0
  53. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/strings.py +0 -0
  54. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/tests.py +0 -0
  55. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/adapters/validators.py +0 -0
  56. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/app_meta.py +0 -0
  57. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/apps.py +0 -0
  58. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_and_export_data/__init__.py +0 -0
  59. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_and_export_data/apps.py +0 -0
  60. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +0 -0
  61. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_and_export_data/migrations/0002_auto_20250204_1413.py +0 -0
  62. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_and_export_data/migrations/__init__.py +0 -0
  63. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_and_export_data/models.py +0 -0
  64. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_and_export_data/utils.py +0 -0
  65. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/__init__.py +0 -0
  66. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/base/__init__.py +0 -0
  67. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/base/caches.py +0 -0
  68. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/base/functions.py +0 -0
  69. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/base/helpers.py +0 -0
  70. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/base/managers.py +0 -0
  71. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/base/mixins.py +0 -0
  72. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/base/runners.py +0 -0
  73. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/__init__.py +0 -0
  74. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/__init__.py +0 -0
  75. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/caches.py +0 -0
  76. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/consts.py +0 -0
  77. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/enums.py +0 -0
  78. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/errors.py +0 -0
  79. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/functions.py +0 -0
  80. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/helpers.py +0 -0
  81. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/managers.py +0 -0
  82. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/presenters.py +0 -0
  83. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/results.py +0 -0
  84. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/runners.py +0 -0
  85. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/strings.py +0 -0
  86. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/tests.py +0 -0
  87. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/base/validators.py +0 -0
  88. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/calculated/strategies.py +0 -0
  89. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/collect.py +0 -0
  90. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/generators.py +0 -0
  91. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/helpers.py +0 -0
  92. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/__init__.py +0 -0
  93. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/__init__.py +0 -0
  94. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/caches.py +0 -0
  95. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/consts.py +0 -0
  96. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/enums.py +0 -0
  97. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/errors.py +0 -0
  98. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/functions.py +0 -0
  99. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/helpers.py +0 -0
  100. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/managers.py +0 -0
  101. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/presenters.py +0 -0
  102. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/results.py +0 -0
  103. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/runners.py +0 -0
  104. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/strings.py +0 -0
  105. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/tests.py +0 -0
  106. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/base/validators.py +0 -0
  107. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/non_calculated/strategies.py +0 -0
  108. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/collect_data/tests.py +0 -0
  109. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/entities.py +0 -0
  110. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/enum_register/__init__.py +0 -0
  111. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/enum_register/mixins.py +0 -0
  112. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/enum_register/register.py +0 -0
  113. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/__init__.py +0 -0
  114. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/__init__.py +0 -0
  115. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/caches.py +0 -0
  116. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/consts.py +0 -0
  117. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/enums.py +0 -0
  118. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/errors.py +0 -0
  119. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/functions.py +0 -0
  120. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/helpers.py +0 -0
  121. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/managers.py +0 -0
  122. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/presenters.py +0 -0
  123. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/requests.py +0 -0
  124. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/results.py +0 -0
  125. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/runners.py +0 -0
  126. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/strings.py +0 -0
  127. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/tests.py +0 -0
  128. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/base/validators.py +0 -0
  129. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/consts.py +0 -0
  130. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/dataclasses.py +0 -0
  131. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/export.py +0 -0
  132. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/export_manager.py +0 -0
  133. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/generators.py +0 -0
  134. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/helpers.py +0 -0
  135. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/queue.py +0 -0
  136. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/export_data/strategies.py +0 -0
  137. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/__init__.py +0 -0
  138. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/__init__.py-tpl +0 -0
  139. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/apps.py-tpl +0 -0
  140. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/caches.py-tpl +0 -0
  141. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/consts.py-tpl +0 -0
  142. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/enums.py-tpl +0 -0
  143. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/errors.py-tpl +0 -0
  144. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/functions.py-tpl +0 -0
  145. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/helpers.py-tpl +0 -0
  146. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/managers.py-tpl +0 -0
  147. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/presenters.py-tpl +0 -0
  148. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/results.py-tpl +0 -0
  149. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/runners.py-tpl +0 -0
  150. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/strings.py-tpl +0 -0
  151. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/tests.py-tpl +0 -0
  152. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_collect_data_template/validators.py-tpl +0 -0
  153. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/__init__.py-tpl +0 -0
  154. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/apps.py-tpl +0 -0
  155. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/caches.py-tpl +0 -0
  156. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/consts.py-tpl +0 -0
  157. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/enums.py-tpl +0 -0
  158. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/errors.py-tpl +0 -0
  159. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/functions.py-tpl +0 -0
  160. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/helpers.py-tpl +0 -0
  161. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/managers.py-tpl +0 -0
  162. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/presenters.py-tpl +0 -0
  163. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/results.py-tpl +0 -0
  164. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/runners.py-tpl +0 -0
  165. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/strings.py-tpl +0 -0
  166. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/tests.py-tpl +0 -0
  167. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/function_templates/function_export_data_template/validators.py-tpl +0 -0
  168. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/helpers.py +0 -0
  169. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/__init__.py +0 -0
  170. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/commands/__init__.py +0 -0
  171. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/commands/async_fix_attachment_size.py +0 -0
  172. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/commands/check_upload_status.py +0 -0
  173. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/commands/collect_latest_models_data.py +0 -0
  174. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/commands/collect_models_data.py +0 -0
  175. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/commands/datamart_status.py +0 -0
  176. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/commands/datamart_upload.py +0 -0
  177. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/commands/export_entities_data.py +0 -0
  178. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/commands/export_latest_entities_data.py +0 -0
  179. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/management/general.py +0 -0
  180. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/mapping.py +0 -0
  181. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0001_initial.py +0 -0
  182. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +0 -0
  183. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -0
  184. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0004_uploaderclientlog.py +0 -0
  185. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0005_auto_20231204_1224.py +0 -0
  186. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0006_request_status_data.py +0 -0
  187. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -0
  188. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0008_transferredentity.py +0 -0
  189. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0009_auto_20240522_1619.py +0 -0
  190. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0010_transferredentity_export_enabled.py +0 -0
  191. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0011_exportingdatasubstageentity.py +0 -0
  192. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0012_exportingdatasubstageattachment_attachment_size.py +0 -0
  193. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0013_set_attachment_size.py +0 -0
  194. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0014_uploaddatacommand.py +0 -0
  195. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/0015_set_exporting_sub_stage_status.py +0 -0
  196. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/migrations/__init__.py +0 -0
  197. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/redis_cache.py +0 -0
  198. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/registry/__init__.py +0 -0
  199. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/signals.py +0 -0
  200. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/storages.py +0 -0
  201. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/templates/ui-js/transferred-entity-list.js +0 -0
  202. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/typing.py +0 -0
  203. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/uploader_log/__init__.py +0 -0
  204. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/uploader_log/actions.py +0 -0
  205. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/uploader_log/apps.py +0 -0
  206. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/uploader_log/enums.py +0 -0
  207. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/uploader_log/managers.py +0 -0
  208. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/uploader_log/templates/ui-js/object-grid-buttons.js +0 -0
  209. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/uploader_log/ui.py +0 -0
  210. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration/utils.py +0 -0
  211. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration.egg-info/dependency_links.txt +0 -0
  212. {edu-rdm-integration-3.5.8 → edu_rdm_integration-3.6.0}/src/edu_rdm_integration.egg-info/top_level.txt +0 -0
@@ -28,6 +28,44 @@
28
28
 
29
29
  ### Удалено
30
30
 
31
+ ## [3.6.0] - 2025-04-19
32
+
33
+ Вводится две новые очереди и соответсвущие этим очередям периодические задачи
34
+ сбора и выгрузки данных. Очередь для сущности указывается в реестре "Сущности для сбора и экспорта данных"
35
+ - по умолчанию все сущности относятся к основной очереди.
36
+ Итого - нужно настроить три очереди для работы.
37
+
38
+ - "Быстрая" очередь - RDM_FAST - для сущностей, по которым данные должны отдаваться каждые 5/10/15 минут по требованиям
39
+ витрины. Периодическая задача - TransferLatestEntitiesDataFastPeriodicTask.
40
+ - Основная очередь (та которая была до версии 3.6) - RDM- ля всех сущностей по умолчанию.
41
+ Периодическая задача - TransferLatestEntitiesDataFastPeriodicTask.
42
+ - "Долгая" очередь - RDM_LONG - для сущностей по которым идет долгий сбор, например для расчетных сущностей.
43
+ Периодическая задача - TransferLatestEntitiesDataLongPeriodicTask.
44
+
45
+ ### Добавлено
46
+
47
+ - [EDUSCHL-23348](https://jira.bars.group/browse/EDUSCHL-23348)
48
+ MINOR Добавлено две дополнительные очереди для сбора и выгрузки данных РВД и соответствующие периодические
49
+ задачи TransferLatestEntitiesDataFastPeriodicTask и TransferLatestEntitiesDataLongPeriodicTask. Доработан реестр
50
+ Сущности для сбора и экспорта данных - добавлено окно редактирования для возможности выбора очереди.
51
+
52
+
53
+ ## [3.5.10] - 2025-03-24
54
+
55
+ ### Изменено
56
+
57
+ - [EDUDEVOPS-66](https://jira.bars.group/browse/EDUDEVOPS-66)
58
+ PATCH Переход на pyproject.toml.
59
+
60
+
61
+ ## [3.5.9] - 2025-03-14
62
+
63
+ ### Изменено
64
+
65
+ - [EDUDEVOPS-66](https://jira.bars.group/browse/EDUDEVOPS-66)
66
+ PATCH Исправление сборки.
67
+
68
+
31
69
  ## [3.5.8] - 2025-03-13
32
70
 
33
71
  ### Изменено
@@ -0,0 +1,9 @@
1
+ graft src
2
+
3
+ global-exclude *.pyc
4
+ global-exclude __pycache__
5
+
6
+ include LICENSE
7
+ include CHANGELOG.md
8
+ include CONDUCT.md
9
+ include README.md
@@ -1,15 +1,46 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: edu-rdm-integration
3
- Version: 3.5.8
3
+ Version: 3.6.0
4
4
  Summary: Интеграция с Региональной витриной данных
5
- Home-page:
6
- Download-URL:
7
- Author: BARS Group
8
- Author-email: bars@bars.group
9
- Platform: Any
5
+ Author-email: BARS Group <education_dev@bars.group>
6
+ Project-URL: Homepage, https://stash.bars-open.ru/projects/EDUBASE/repos/edu_rdm_integration/browse
7
+ Project-URL: Repository, https://stash.bars-open.ru/scm/edubase/edu_rdm_integration.git
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Framework :: Django :: 2.2
15
+ Classifier: Framework :: Django :: 3.0
16
+ Classifier: Framework :: Django :: 3.1
17
+ Classifier: Framework :: Django :: 3.2
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Environment :: Web Environment
10
20
  Requires-Python: >=3.9
11
21
  Description-Content-Type: text/markdown
12
22
  License-File: LICENSE
23
+ Requires-Dist: transliterate<2
24
+ Requires-Dist: Django<3.3,>=3.1
25
+ Requires-Dist: celery<5.3,>=4.4.7
26
+ Requires-Dist: asyncpg==0.23.0
27
+ Requires-Dist: educommon<4,>=3.11.0
28
+ Requires-Dist: function-tools<1,>=0.9.0
29
+ Requires-Dist: m3-db-utils<1,>=0.3.10
30
+ Requires-Dist: m3-django-compat<2,>=1.10.2
31
+ Requires-Dist: uploader-client<1,>=0.2.3
32
+ Provides-Extra: dev
33
+ Requires-Dist: isort==5.12.0; extra == "dev"
34
+ Requires-Dist: ruff==0.6.9; extra == "dev"
35
+ Requires-Dist: flake8<7,>=4.0.1; extra == "dev"
36
+ Requires-Dist: pytest<8,>=3.2.5; extra == "dev"
37
+ Requires-Dist: pytest-cov<5; extra == "dev"
38
+ Provides-Extra: docs
39
+ Requires-Dist: sphinx<7.5,>=7; extra == "docs"
40
+ Requires-Dist: sphinx-autodoc-typehints<2.5,>=2; extra == "docs"
41
+ Requires-Dist: myst-parser<3.2,>=3; extra == "docs"
42
+ Requires-Dist: sphinx_design<0.7,>=0.6; extra == "docs"
43
+ Dynamic: license-file
13
44
 
14
45
  # Проект "Интеграция с Региональной витриной данных (РВД)"
15
46
 
@@ -47,6 +78,19 @@ License-File: LICENSE
47
78
 
48
79
  Стоит обратить внимание, что сущности РВД могут содержать в себе данные из нескольких моделей РВД.
49
80
 
81
+ Очереди для периодических задач сборки и выгрузки данных
82
+ : Важно учитывать, что с версии пакета 3.6 вводится две новые очереди и соответсвущие этим очередям периодические задачи
83
+ сбора и выгрузки данных. Очередь для сущности указывается в реестре "Сущности для сбора и экспорта данных" - по умолчанию все
84
+ сущности относятся к основной очереди.
85
+ Итого - нужно настроить три очереди для работы.
86
+
87
+ - "Быстрая" очередь - RDM_FAST - для сущностей, по которым данные должны отдаваться каждые 5/10/15 минут по требованиям
88
+ витрины. Периодическая задача - TransferLatestEntitiesDataFastPeriodicTask.
89
+ - Основная очередь (та которая была до версии 3.6) - RDM- ля всех сущностей по умолчанию.
90
+ Периодическая задача - TransferLatestEntitiesDataFastPeriodicTask.
91
+ - "Долгая" очередь - RDM_LONG - для сущностей по которым идет долгий сбор, например для расчетных сущностей.
92
+ Периодическая задача - TransferLatestEntitiesDataLongPeriodicTask.
93
+
50
94
  ## Требования к окружению
51
95
 
52
96
  Для работы требуется Python >=3.9. Так же в зависимостях есть внутренние пакеты:
@@ -98,6 +142,39 @@ License-File: LICENSE
98
142
  ('uploader_client', 'ENABLE_REQUEST_EMULATION'): False,
99
143
  })
100
144
  ```
145
+ С версии пакета 3.6 добавляются новые настройки для двух периодических задач разных очередей сбора и выгрузки данных
146
+ ```
147
+ PROJECT_DEFAULT_CONFIG.update({
148
+ # Настройки РВД
149
+ ('rdm_general', 'EXPORT_ENTITY_ID_PREFIX'): '', # Дефолтное значение нужно изменить на специфическое системе
150
+ ('rdm_general', 'COLLECT_CHUNK_SIZE'): 500,
151
+ ('rdm_general', 'EXPORT_CHUNK_SIZE'): 500,
152
+ ('rdm_transfer_task', 'MINUTE'): '0',
153
+ ('rdm_transfer_task', 'HOUR'): '*/4',
154
+ ('rdm_transfer_task', 'DAY_OF_WEEK'): '*',
155
+ ('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS'): 21600,
156
+ ('rdm_transfer_task', 'TIMEDELTA'): 3600,
157
+ ('rdm_transfer_task', 'ENTITIES'): '',
158
+ ('rdm_transfer_task_fast', 'MINUTE'): '*/5',
159
+ ('rdm_transfer_task_fast', 'HOUR'): '*',
160
+ ('rdm_transfer_task_fast', 'DAY_OF_WEEK'): '*',
161
+ ('rdm_transfer_task_fast', 'LOCK_EXPIRE_SECONDS'): 1800,
162
+ ('rdm_transfer_task_long', 'MINUTE'): '0',
163
+ ('rdm_transfer_task_long', 'HOUR'): '*/6',
164
+ ('rdm_transfer_task_long', 'DAY_OF_WEEK'): '*',
165
+ ('rdm_transfer_task_long', 'LOCK_EXPIRE_SECONDS'): 28800,
166
+ ('rdm_upload_status_task', 'MINUTE'): '*/30',
167
+ ('rdm_upload_status_task', 'HOUR'): '*',
168
+ ('rdm_upload_status_task', 'DAY_OF_WEEK'): '*',
169
+ ('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS'): 7200,
170
+ ('uploader_client', 'URL'): 'http://localhost:8090',
171
+ ('uploader_client', 'DATAMART_NAME'): '',
172
+ ('uploader_client', 'REQUEST_RETRIES'): 10,
173
+ ('uploader_client', 'REQUEST_TIMEOUT'): 10,
174
+ ('uploader_client', 'ENABLE_REQUEST_EMULATION'): False,
175
+ })
176
+
177
+ ```
101
178
  - Получение значений настроек из конфигурационного файла в settings.py:
102
179
 
103
180
  ```
@@ -156,7 +233,21 @@ License-File: LICENSE
156
233
  RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION = conf.get_bool('uploader_client', 'ENABLE_REQUEST_EMULATION')
157
234
 
158
235
  ```
159
-
236
+ С версии пакета 3.6 добавляются настройки для двух новых периодических задач
237
+ ```
238
+ # Настройка запуска периодической задачи выгрузки данных - быстрая очередь:
239
+ RDM_FAST_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task_fast', 'MINUTE')
240
+ RDM_FAST_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task_fast', 'HOUR')
241
+ RDM_FAST_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task_fast', 'DAY_OF_WEEK')
242
+ RDM_FAST_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_transfer_task_fast', 'LOCK_EXPIRE_SECONDS')
243
+
244
+ # Настройка запуска периодической задачи выгрузки данных - долгая очередь расчетных моделей:
245
+ RDM_LONG_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task_long', 'MINUTE')
246
+ RDM_LONG_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task_long', 'HOUR')
247
+ RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task_long', 'DAY_OF_WEEK')
248
+ RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_transfer_task_long', 'LOCK_EXPIRE_SECONDS')
249
+
250
+ ```
160
251
  Перечень настроек в settings.py указан в таблице ниже.
161
252
 
162
253
  | Название настройки в settings | Описание | Значение по умолчанию |
@@ -180,7 +271,18 @@ License-File: LICENSE
180
271
  | RDM_UPLOAD_STATUS_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секунадх) | 3600 |
181
272
  | RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT | Дельта для определения зависшего подэтапа. Минута | 120 |
182
273
 
183
-
274
+ С версии пакета 3.6 добавляются новые настройки
275
+
276
+ | Название настройки в settings | Описание | Значение по умолчанию |
277
+ |--------------------------------------------|----------------------------------------------------------------------------------------|-----------------------|
278
+ | RDM_FAST_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Минута | '*/5' |
279
+ | RDM_FAST_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Час | '*' |
280
+ | RDM_FAST_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. День недели | '*' |
281
+ | RDM_FAST_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секунадх) | 1800 |
282
+ | RDM_LONG_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Минута | 0 |
283
+ | RDM_LONG_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Час | '*/6' |
284
+ | RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. День недели | '*' |
285
+ | RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секунадх) | 28800 |
184
286
 
185
287
  - В дефолтный конфиг проекта необходимо добавить:
186
288
 
@@ -236,7 +338,21 @@ License-File: LICENSE
236
338
  # Включить эмуляцию отправки запросов
237
339
  ENABLE_REQUEST_EMULATION = True
238
340
  ```
341
+ - С версии 3.6 в деволтный конфиг также нужно добавить два дополнительных раздела
342
+ ```
343
+
344
+ [rdm_transfer_task_fast]
345
+ MINUTE=*/2
346
+ HOUR=*
347
+ DAY_OF_WEEK=*
348
+ LOCK_EXPIRE_SECONDS = 1800
239
349
 
350
+ [rdm_transfer_task_long]
351
+ MINUTE=*/15
352
+ HOUR=*
353
+ DAY_OF_WEEK=*
354
+ LOCK_EXPIRE_SECONDS = 21600
355
+ ```
240
356
  На основе дефолтного конфига произвести конфигурирование приложений.
241
357
 
242
358
  ## Сборка и распространение
@@ -1,16 +1,3 @@
1
- Metadata-Version: 2.1
2
- Name: edu-rdm-integration
3
- Version: 3.5.8
4
- Summary: Интеграция с Региональной витриной данных
5
- Home-page:
6
- Download-URL:
7
- Author: BARS Group
8
- Author-email: bars@bars.group
9
- Platform: Any
10
- Requires-Python: >=3.9
11
- Description-Content-Type: text/markdown
12
- License-File: LICENSE
13
-
14
1
  # Проект "Интеграция с Региональной витриной данных (РВД)"
15
2
 
16
3
  Для интеграции с Региональной витриной данных был выделен отдельный пакет для использования его компонентов в различных
@@ -47,6 +34,19 @@ License-File: LICENSE
47
34
 
48
35
  Стоит обратить внимание, что сущности РВД могут содержать в себе данные из нескольких моделей РВД.
49
36
 
37
+ Очереди для периодических задач сборки и выгрузки данных
38
+ : Важно учитывать, что с версии пакета 3.6 вводится две новые очереди и соответсвущие этим очередям периодические задачи
39
+ сбора и выгрузки данных. Очередь для сущности указывается в реестре "Сущности для сбора и экспорта данных" - по умолчанию все
40
+ сущности относятся к основной очереди.
41
+ Итого - нужно настроить три очереди для работы.
42
+
43
+ - "Быстрая" очередь - RDM_FAST - для сущностей, по которым данные должны отдаваться каждые 5/10/15 минут по требованиям
44
+ витрины. Периодическая задача - TransferLatestEntitiesDataFastPeriodicTask.
45
+ - Основная очередь (та которая была до версии 3.6) - RDM- ля всех сущностей по умолчанию.
46
+ Периодическая задача - TransferLatestEntitiesDataFastPeriodicTask.
47
+ - "Долгая" очередь - RDM_LONG - для сущностей по которым идет долгий сбор, например для расчетных сущностей.
48
+ Периодическая задача - TransferLatestEntitiesDataLongPeriodicTask.
49
+
50
50
  ## Требования к окружению
51
51
 
52
52
  Для работы требуется Python >=3.9. Так же в зависимостях есть внутренние пакеты:
@@ -98,6 +98,39 @@ License-File: LICENSE
98
98
  ('uploader_client', 'ENABLE_REQUEST_EMULATION'): False,
99
99
  })
100
100
  ```
101
+ С версии пакета 3.6 добавляются новые настройки для двух периодических задач разных очередей сбора и выгрузки данных
102
+ ```
103
+ PROJECT_DEFAULT_CONFIG.update({
104
+ # Настройки РВД
105
+ ('rdm_general', 'EXPORT_ENTITY_ID_PREFIX'): '', # Дефолтное значение нужно изменить на специфическое системе
106
+ ('rdm_general', 'COLLECT_CHUNK_SIZE'): 500,
107
+ ('rdm_general', 'EXPORT_CHUNK_SIZE'): 500,
108
+ ('rdm_transfer_task', 'MINUTE'): '0',
109
+ ('rdm_transfer_task', 'HOUR'): '*/4',
110
+ ('rdm_transfer_task', 'DAY_OF_WEEK'): '*',
111
+ ('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS'): 21600,
112
+ ('rdm_transfer_task', 'TIMEDELTA'): 3600,
113
+ ('rdm_transfer_task', 'ENTITIES'): '',
114
+ ('rdm_transfer_task_fast', 'MINUTE'): '*/5',
115
+ ('rdm_transfer_task_fast', 'HOUR'): '*',
116
+ ('rdm_transfer_task_fast', 'DAY_OF_WEEK'): '*',
117
+ ('rdm_transfer_task_fast', 'LOCK_EXPIRE_SECONDS'): 1800,
118
+ ('rdm_transfer_task_long', 'MINUTE'): '0',
119
+ ('rdm_transfer_task_long', 'HOUR'): '*/6',
120
+ ('rdm_transfer_task_long', 'DAY_OF_WEEK'): '*',
121
+ ('rdm_transfer_task_long', 'LOCK_EXPIRE_SECONDS'): 28800,
122
+ ('rdm_upload_status_task', 'MINUTE'): '*/30',
123
+ ('rdm_upload_status_task', 'HOUR'): '*',
124
+ ('rdm_upload_status_task', 'DAY_OF_WEEK'): '*',
125
+ ('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS'): 7200,
126
+ ('uploader_client', 'URL'): 'http://localhost:8090',
127
+ ('uploader_client', 'DATAMART_NAME'): '',
128
+ ('uploader_client', 'REQUEST_RETRIES'): 10,
129
+ ('uploader_client', 'REQUEST_TIMEOUT'): 10,
130
+ ('uploader_client', 'ENABLE_REQUEST_EMULATION'): False,
131
+ })
132
+
133
+ ```
101
134
  - Получение значений настроек из конфигурационного файла в settings.py:
102
135
 
103
136
  ```
@@ -156,7 +189,21 @@ License-File: LICENSE
156
189
  RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION = conf.get_bool('uploader_client', 'ENABLE_REQUEST_EMULATION')
157
190
 
158
191
  ```
159
-
192
+ С версии пакета 3.6 добавляются настройки для двух новых периодических задач
193
+ ```
194
+ # Настройка запуска периодической задачи выгрузки данных - быстрая очередь:
195
+ RDM_FAST_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task_fast', 'MINUTE')
196
+ RDM_FAST_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task_fast', 'HOUR')
197
+ RDM_FAST_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task_fast', 'DAY_OF_WEEK')
198
+ RDM_FAST_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_transfer_task_fast', 'LOCK_EXPIRE_SECONDS')
199
+
200
+ # Настройка запуска периодической задачи выгрузки данных - долгая очередь расчетных моделей:
201
+ RDM_LONG_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task_long', 'MINUTE')
202
+ RDM_LONG_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task_long', 'HOUR')
203
+ RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task_long', 'DAY_OF_WEEK')
204
+ RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_transfer_task_long', 'LOCK_EXPIRE_SECONDS')
205
+
206
+ ```
160
207
  Перечень настроек в settings.py указан в таблице ниже.
161
208
 
162
209
  | Название настройки в settings | Описание | Значение по умолчанию |
@@ -180,7 +227,18 @@ License-File: LICENSE
180
227
  | RDM_UPLOAD_STATUS_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секунадх) | 3600 |
181
228
  | RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT | Дельта для определения зависшего подэтапа. Минута | 120 |
182
229
 
183
-
230
+ С версии пакета 3.6 добавляются новые настройки
231
+
232
+ | Название настройки в settings | Описание | Значение по умолчанию |
233
+ |--------------------------------------------|----------------------------------------------------------------------------------------|-----------------------|
234
+ | RDM_FAST_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Минута | '*/5' |
235
+ | RDM_FAST_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Час | '*' |
236
+ | RDM_FAST_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. День недели | '*' |
237
+ | RDM_FAST_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секунадх) | 1800 |
238
+ | RDM_LONG_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Минута | 0 |
239
+ | RDM_LONG_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Час | '*/6' |
240
+ | RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. День недели | '*' |
241
+ | RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секунадх) | 28800 |
184
242
 
185
243
  - В дефолтный конфиг проекта необходимо добавить:
186
244
 
@@ -236,7 +294,21 @@ License-File: LICENSE
236
294
  # Включить эмуляцию отправки запросов
237
295
  ENABLE_REQUEST_EMULATION = True
238
296
  ```
297
+ - С версии 3.6 в деволтный конфиг также нужно добавить два дополнительных раздела
298
+ ```
299
+
300
+ [rdm_transfer_task_fast]
301
+ MINUTE=*/2
302
+ HOUR=*
303
+ DAY_OF_WEEK=*
304
+ LOCK_EXPIRE_SECONDS = 1800
239
305
 
306
+ [rdm_transfer_task_long]
307
+ MINUTE=*/15
308
+ HOUR=*
309
+ DAY_OF_WEEK=*
310
+ LOCK_EXPIRE_SECONDS = 21600
311
+ ```
240
312
  На основе дефолтного конфига произвести конфигурирование приложений.
241
313
 
242
314
  ## Сборка и распространение
@@ -0,0 +1,133 @@
1
+ [build-system]
2
+ requires = [
3
+ 'packaging>=24,<25',
4
+ 'wheel>=0.45,<0.46',
5
+ 'setuptools>=77,<78',
6
+ 'setuptools-git-versioning>=2,<3',
7
+ ]
8
+
9
+ build-backend = 'setuptools.build_meta'
10
+
11
+ [project]
12
+ name = 'edu-rdm-integration'
13
+ description = 'Интеграция с Региональной витриной данных'
14
+ license-files = ['LICENSE']
15
+ authors = [
16
+ {name = 'BARS Group', email = 'education_dev@bars.group'},
17
+ ]
18
+ readme = 'README.md'
19
+ requires-python = '>=3.9'
20
+ dependencies = [
21
+ 'transliterate<2',
22
+ 'Django>=3.1,<3.3',
23
+ 'celery>=4.4.7,<5.3',
24
+ 'asyncpg==0.23.0',
25
+ 'educommon>=3.11.0,<4',
26
+ 'function-tools>=0.9.0,<1',
27
+ 'm3-db-utils>=0.3.10,<1',
28
+ 'm3-django-compat>=1.10.2,<2',
29
+ 'uploader-client>=0.2.3,<1',
30
+ ]
31
+ classifiers=[
32
+ 'Development Status :: 5 - Production/Stable',
33
+ 'Programming Language :: Python :: 3',
34
+ 'Programming Language :: Python :: 3.9',
35
+ 'Programming Language :: Python :: 3.10',
36
+ 'Programming Language :: Python :: 3.11',
37
+ 'Programming Language :: Python :: 3.12',
38
+ 'Framework :: Django :: 2.2',
39
+ 'Framework :: Django :: 3.0',
40
+ 'Framework :: Django :: 3.1',
41
+ 'Framework :: Django :: 3.2',
42
+ 'Intended Audience :: Developers',
43
+ 'Environment :: Web Environment',
44
+ ]
45
+ dynamic = ['version']
46
+
47
+ [project.urls]
48
+ Homepage = 'https://stash.bars-open.ru/projects/EDUBASE/repos/edu_rdm_integration/browse'
49
+ Repository = 'https://stash.bars-open.ru/scm/edubase/edu_rdm_integration.git'
50
+
51
+ [project.optional-dependencies]
52
+ dev = [
53
+ 'isort==5.12.0',
54
+ 'ruff==0.6.9',
55
+ 'flake8>=4.0.1,<7',
56
+ 'pytest>=3.2.5,<8',
57
+ 'pytest-cov<5',
58
+ ]
59
+ docs = [
60
+ 'sphinx>=7,<7.5',
61
+ 'sphinx-autodoc-typehints>=2,<2.5',
62
+ 'myst-parser>=3,<3.2',
63
+ 'sphinx_design>=0.6,<0.7',
64
+ ]
65
+
66
+ [tool.setuptools.packages.find]
67
+ where = ['src']
68
+
69
+ [tool.setuptools.package-data]
70
+ edu_rdm_integration = ['*.py-tpl', '*.js']
71
+
72
+ [tool.setuptools.exclude-package-data]
73
+ edu_rdm_integration = ['tests', 'tests.*']
74
+
75
+ [tool.setuptools-git-versioning]
76
+ enabled = true
77
+
78
+ [tool.ruff]
79
+ line-length = 120
80
+ indent-width = 4
81
+
82
+ target-version = 'py312'
83
+
84
+ [tool.ruff.format]
85
+ quote-style = 'single'
86
+ indent-style = 'space'
87
+ docstring-code-format = true
88
+
89
+ [tool.flake8]
90
+ max-line-length = 120
91
+ ignore = [
92
+ # Missing docstring in public module
93
+ 'D100',
94
+ # Missing docstring in public package
95
+ 'D104',
96
+ # Missing docstring in public nested class
97
+ 'D106',
98
+ # Missing docstring in __init__
99
+ 'D107',
100
+ # One-line docstring should fit on one line with quotes
101
+ 'D200',
102
+ # Line break before binary operator
103
+ 'W503',
104
+ # use of assert detected (useless with pytest)
105
+ 'S101',
106
+ ]
107
+ per-file-ignores = [
108
+ # variable '...' in class scope should not be mixedCase
109
+ # В SOAP моделях могут использоваться имена с различным написанием
110
+ 'wsmodel.py:N815',
111
+ # function name '...' should be lowercase
112
+ # SOAP методы могут именоваться разными способами
113
+ 'wsapi.py:N802,N815',
114
+ ]
115
+ exclude = [
116
+ 'venv',
117
+ ]
118
+ max-complexity = 10
119
+
120
+ [tool.pylint]
121
+ score = 'no'
122
+ msg-template = '{path}:{line} {msg} ({symbol})'
123
+ disable = 'all'
124
+ enable = [
125
+ 'import-error',
126
+ 'no-name-in-module',
127
+ 'undefined-variable',
128
+ 'undefined-all-variable',
129
+ ]
130
+
131
+ extension-pkg-whitelist = [
132
+ 'lxml',
133
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -41,6 +41,19 @@ RDM_TRANSFER_TASK_HOUR = '*/4'
41
41
  RDM_TRANSFER_TASK_DAY_OF_WEEK = '*'
42
42
  RDM_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = 60 * 60 * 6
43
43
 
44
+ # Настройка запуска периодической задачи выгрузки данных - очередь быстрого уровня
45
+ RDM_FAST_TRANSFER_TASK_MINUTE = '*/5'
46
+ RDM_FAST_TRANSFER_TASK_HOUR = '*'
47
+ RDM_FAST_TRANSFER_TASK_DAY_OF_WEEK = '*'
48
+ RDM_FAST_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = 60 * 30
49
+
50
+ # Настройка запуска периодической задачи выгрузки данных - очередь медленного уровня
51
+ RDM_LONG_TRANSFER_TASK_MINUTE = '0'
52
+ RDM_LONG_TRANSFER_TASK_HOUR = '*/6'
53
+ RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK = '*'
54
+ RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = 60 * 60 * 6
55
+
56
+
44
57
  # Настройка запуска периодической задачи статуса загрузки данных в витрину:
45
58
  RDM_UPLOAD_STATUS_TASK_MINUTE = '*/30'
46
59
  RDM_UPLOAD_STATUS_TASK_HOUR = '*'