edu-rdm-integration 3.9.2__py3-none-any.whl → 3.10.1__py3-none-any.whl

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 (279) hide show
  1. edu_rdm_integration/__init__.py +0 -1
  2. edu_rdm_integration/adapters/apps.py +15 -2
  3. edu_rdm_integration/adapters/caches.py +25 -12
  4. edu_rdm_integration/adapters/errors.py +13 -2
  5. edu_rdm_integration/adapters/functions.py +53 -14
  6. edu_rdm_integration/adapters/helpers.py +34 -8
  7. edu_rdm_integration/adapters/managers.py +41 -5
  8. edu_rdm_integration/adapters/presenters.py +26 -2
  9. edu_rdm_integration/adapters/receivers.py +16 -2
  10. edu_rdm_integration/adapters/results.py +50 -4
  11. edu_rdm_integration/adapters/runners.py +79 -20
  12. edu_rdm_integration/adapters/strategies.py +56 -54
  13. edu_rdm_integration/adapters/validators.py +43 -4
  14. edu_rdm_integration/apps.py +3 -23
  15. edu_rdm_integration/collect_and_export_data/__init__.py +1 -1
  16. edu_rdm_integration/collect_and_export_data/apps.py +1 -0
  17. edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py +107 -17
  18. edu_rdm_integration/collect_and_export_data/migrations/0002_auto_20250204_1413.py +4 -2
  19. edu_rdm_integration/collect_and_export_data/models.py +1 -67
  20. edu_rdm_integration/{consts.py → core/consts.py} +0 -11
  21. edu_rdm_integration/{enums.py → core/enums.py} +7 -54
  22. edu_rdm_integration/core/helpers.py +331 -0
  23. edu_rdm_integration/core/operations.py +71 -0
  24. edu_rdm_integration/core/redis_cache.py +20 -0
  25. edu_rdm_integration/{collect_and_export_data → core/registry}/actions.py +6 -12
  26. edu_rdm_integration/core/registry/apps.py +11 -0
  27. edu_rdm_integration/{collect_and_export_data → core/registry}/ui.py +1 -1
  28. edu_rdm_integration/{storages.py → core/storages.py} +8 -17
  29. edu_rdm_integration/{utils.py → core/utils.py} +29 -91
  30. edu_rdm_integration/migrations/0001_initial.py +294 -44
  31. edu_rdm_integration/migrations/0002_init_data_uploadstatus.py +1 -3
  32. edu_rdm_integration/migrations/0003_create_index_file_upload_status.py +0 -1
  33. edu_rdm_integration/migrations/0004_uploaderclientlog.py +1 -2
  34. edu_rdm_integration/migrations/0005_auto_20231204_1224.py +16 -4
  35. edu_rdm_integration/migrations/0006_request_status_data.py +60 -58
  36. edu_rdm_integration/migrations/0007_delete_upload_status.py +0 -1
  37. edu_rdm_integration/migrations/0009_auto_20240522_1619.py +1 -5
  38. edu_rdm_integration/migrations/0010_transferredentity_export_enabled.py +0 -1
  39. edu_rdm_integration/migrations/0011_exportingdatasubstageentity.py +16 -3
  40. edu_rdm_integration/migrations/0012_exportingdatasubstageattachment_attachment_size.py +0 -1
  41. edu_rdm_integration/migrations/0013_set_attachment_size.py +8 -12
  42. edu_rdm_integration/migrations/0014_uploaddatacommand.py +33 -6
  43. edu_rdm_integration/migrations/0015_set_exporting_sub_stage_status.py +1 -5
  44. edu_rdm_integration/migrations/0016_transferredentity_queue_level.py +2 -2
  45. edu_rdm_integration/migrations/0017_delete_uploaddatacommand.py +3 -2
  46. edu_rdm_integration/migrations/__init__.py +1 -0
  47. edu_rdm_integration/{registry → pipelines/transfer}/actions.py +13 -26
  48. edu_rdm_integration/pipelines/transfer/app_meta.py +18 -0
  49. edu_rdm_integration/pipelines/transfer/apps.py +19 -0
  50. edu_rdm_integration/pipelines/transfer/enums.py +34 -0
  51. edu_rdm_integration/pipelines/transfer/migrations/0001_initial.py +57 -0
  52. edu_rdm_integration/{base.py → pipelines/transfer/mixins.py} +29 -53
  53. edu_rdm_integration/pipelines/transfer/models.py +48 -0
  54. edu_rdm_integration/{tasks.py → pipelines/transfer/tasks.py} +51 -150
  55. edu_rdm_integration/{registry → pipelines/transfer}/ui.py +4 -10
  56. edu_rdm_integration/rdm_entities/apps.py +11 -0
  57. edu_rdm_integration/{entities.py → rdm_entities/entities.py} +67 -57
  58. edu_rdm_integration/rdm_entities/migrations/0001_initial.py +44 -0
  59. edu_rdm_integration/{enum_register → rdm_entities}/mixins.py +8 -59
  60. edu_rdm_integration/rdm_entities/models.py +63 -0
  61. edu_rdm_integration/rdm_entities/utils.py +33 -0
  62. edu_rdm_integration/rdm_models/apps.py +16 -0
  63. edu_rdm_integration/rdm_models/migrations/0001_initial.py +40 -0
  64. edu_rdm_integration/rdm_models/mixins.py +67 -0
  65. edu_rdm_integration/rdm_models/models.py +73 -0
  66. edu_rdm_integration/rdm_models/utils.py +23 -0
  67. edu_rdm_integration/stages/collect_data/apps.py +11 -0
  68. edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/functions.py-tpl +2 -2
  69. edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/managers.py-tpl +1 -1
  70. edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/runners.py-tpl +1 -1
  71. edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/tests.py-tpl +2 -1
  72. edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/caches.py +2 -2
  73. edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/functions.py +15 -18
  74. edu_rdm_integration/stages/collect_data/functions/base/helpers.py +20 -0
  75. edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/managers.py +20 -27
  76. edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/mixins.py +38 -55
  77. edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/runners.py +2 -5
  78. edu_rdm_integration/stages/collect_data/functions/calculated/__init__.py +0 -0
  79. edu_rdm_integration/stages/collect_data/functions/calculated/base/__init__.py +0 -0
  80. edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/caches.py +3 -7
  81. edu_rdm_integration/stages/collect_data/functions/calculated/base/errors.py +7 -0
  82. edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/functions.py +8 -16
  83. edu_rdm_integration/stages/collect_data/functions/calculated/base/helpers.py +24 -0
  84. edu_rdm_integration/stages/collect_data/functions/calculated/base/managers.py +19 -0
  85. edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/presenters.py +1 -3
  86. edu_rdm_integration/stages/collect_data/functions/calculated/base/results.py +12 -0
  87. edu_rdm_integration/stages/collect_data/functions/calculated/base/runners.py +28 -0
  88. edu_rdm_integration/stages/collect_data/functions/calculated/base/validators.py +20 -0
  89. edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/strategies.py +32 -70
  90. edu_rdm_integration/stages/collect_data/functions/non_calculated/__init__.py +0 -0
  91. edu_rdm_integration/stages/collect_data/functions/non_calculated/base/__init__.py +0 -0
  92. edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/caches.py +13 -22
  93. edu_rdm_integration/stages/collect_data/functions/non_calculated/base/errors.py +7 -0
  94. edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/functions.py +8 -16
  95. edu_rdm_integration/stages/collect_data/functions/non_calculated/base/helpers.py +24 -0
  96. edu_rdm_integration/stages/collect_data/functions/non_calculated/base/managers.py +19 -0
  97. edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/presenters.py +1 -3
  98. edu_rdm_integration/stages/collect_data/functions/non_calculated/base/results.py +12 -0
  99. edu_rdm_integration/stages/collect_data/functions/non_calculated/base/runners.py +28 -0
  100. edu_rdm_integration/stages/collect_data/functions/non_calculated/base/validators.py +20 -0
  101. edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/strategies.py +32 -70
  102. edu_rdm_integration/{collect_data → stages/collect_data}/generators.py +9 -14
  103. edu_rdm_integration/stages/collect_data/helpers.py +154 -0
  104. edu_rdm_integration/stages/collect_data/management/__init__.py +0 -0
  105. edu_rdm_integration/stages/collect_data/management/base.py +100 -0
  106. edu_rdm_integration/stages/collect_data/management/commands/__init__.py +0 -0
  107. edu_rdm_integration/{management → stages/collect_data/management}/commands/collect_latest_models_data.py +5 -7
  108. edu_rdm_integration/{management → stages/collect_data/management}/commands/collect_models_data.py +5 -7
  109. edu_rdm_integration/stages/collect_data/migrations/0001_initial.py +187 -0
  110. edu_rdm_integration/stages/collect_data/migrations/0002_edurdmcollectdatacommandprogress.py +105 -0
  111. edu_rdm_integration/stages/collect_data/migrations/__init__.py +0 -0
  112. edu_rdm_integration/stages/collect_data/mixins.py +56 -0
  113. edu_rdm_integration/stages/collect_data/models.py +318 -0
  114. edu_rdm_integration/{collect_data/collect.py → stages/collect_data/operations.py} +30 -43
  115. edu_rdm_integration/stages/collect_data/registry/__init__.py +0 -0
  116. edu_rdm_integration/{collect_data → stages/collect_data/registry}/actions.py +17 -20
  117. edu_rdm_integration/stages/collect_data/registry/apps.py +11 -0
  118. edu_rdm_integration/{collect_data → stages/collect_data/registry}/ui.py +8 -15
  119. edu_rdm_integration/{collect_data → stages/collect_data}/tests.py +2 -2
  120. edu_rdm_integration/stages/export_data/__init__.py +0 -0
  121. edu_rdm_integration/stages/export_data/apps.py +11 -0
  122. edu_rdm_integration/stages/export_data/function_templates/__init__.py +0 -0
  123. edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/functions.py-tpl +2 -2
  124. edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/managers.py-tpl +2 -2
  125. edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/runners.py-tpl +2 -2
  126. edu_rdm_integration/stages/export_data/functions/__init__.py +0 -0
  127. edu_rdm_integration/stages/export_data/functions/base/__init__.py +0 -0
  128. edu_rdm_integration/{export_data → stages/export_data/functions}/base/caches.py +3 -8
  129. edu_rdm_integration/stages/export_data/functions/base/errors.py +7 -0
  130. edu_rdm_integration/{export_data → stages/export_data/functions}/base/functions.py +28 -59
  131. edu_rdm_integration/{export_data → stages/export_data/functions}/base/helpers.py +7 -17
  132. edu_rdm_integration/{export_data → stages/export_data/functions}/base/managers.py +19 -28
  133. edu_rdm_integration/stages/export_data/functions/base/presenters.py +11 -0
  134. edu_rdm_integration/{export_data → stages/export_data/functions}/base/requests.py +13 -40
  135. edu_rdm_integration/stages/export_data/functions/base/results.py +12 -0
  136. edu_rdm_integration/{export_data → stages/export_data/functions}/base/runners.py +9 -21
  137. edu_rdm_integration/stages/export_data/functions/base/validators.py +20 -0
  138. edu_rdm_integration/{export_data → stages/export_data}/generators.py +7 -6
  139. edu_rdm_integration/stages/export_data/helpers.py +203 -0
  140. edu_rdm_integration/stages/export_data/management/__init__.py +0 -0
  141. edu_rdm_integration/stages/export_data/management/base.py +101 -0
  142. edu_rdm_integration/stages/export_data/management/commands/__init__.py +0 -0
  143. edu_rdm_integration/{management → stages/export_data/management}/commands/export_entities_data.py +5 -7
  144. edu_rdm_integration/{management → stages/export_data/management}/commands/export_latest_entities_data.py +5 -7
  145. edu_rdm_integration/stages/export_data/migrations/0001_initial.py +324 -0
  146. edu_rdm_integration/stages/export_data/migrations/__init__.py +0 -0
  147. edu_rdm_integration/stages/export_data/mixins.py +50 -0
  148. edu_rdm_integration/stages/export_data/models.py +362 -0
  149. edu_rdm_integration/{export_data/export.py → stages/export_data/operations.py} +13 -152
  150. edu_rdm_integration/stages/export_data/registry/__init__.py +0 -0
  151. edu_rdm_integration/{export_data → stages/export_data/registry}/actions.py +18 -18
  152. edu_rdm_integration/stages/export_data/registry/apps.py +11 -0
  153. edu_rdm_integration/{export_data → stages/export_data/registry}/ui.py +5 -7
  154. edu_rdm_integration/{export_data → stages/export_data}/strategies.py +30 -68
  155. edu_rdm_integration/stages/service/__init__.py +0 -0
  156. edu_rdm_integration/stages/service/apps.py +19 -0
  157. edu_rdm_integration/stages/service/tasks.py +63 -0
  158. edu_rdm_integration/stages/upload_data/__init__.py +0 -0
  159. edu_rdm_integration/stages/upload_data/apps.py +19 -0
  160. edu_rdm_integration/stages/upload_data/consts.py +10 -0
  161. edu_rdm_integration/{export_data → stages/upload_data}/dataclasses.py +1 -0
  162. edu_rdm_integration/stages/upload_data/enums.py +17 -0
  163. edu_rdm_integration/{export_data/export_manager.py → stages/upload_data/export_managers.py} +73 -68
  164. edu_rdm_integration/stages/upload_data/helpers.py +164 -0
  165. edu_rdm_integration/stages/upload_data/management/__init__.py +0 -0
  166. edu_rdm_integration/stages/upload_data/management/base.py +134 -0
  167. edu_rdm_integration/stages/upload_data/management/commands/__init__.py +0 -0
  168. edu_rdm_integration/{management → stages/upload_data/management}/commands/async_fix_attachment_size.py +32 -54
  169. edu_rdm_integration/{management → stages/upload_data/management}/commands/check_upload_status.py +7 -6
  170. edu_rdm_integration/{management → stages/upload_data/management}/commands/datamart_status.py +3 -3
  171. edu_rdm_integration/{management → stages/upload_data/management}/commands/datamart_upload.py +4 -4
  172. edu_rdm_integration/stages/upload_data/migrations/0001_initial.py +161 -0
  173. edu_rdm_integration/stages/upload_data/migrations/__init__.py +0 -0
  174. edu_rdm_integration/stages/upload_data/models.py +175 -0
  175. edu_rdm_integration/stages/upload_data/operations.py +156 -0
  176. edu_rdm_integration/{export_data/queue.py → stages/upload_data/queues.py} +10 -8
  177. edu_rdm_integration/stages/upload_data/tasks.py +103 -0
  178. edu_rdm_integration/stages/upload_data/uploader_log/__init__.py +0 -0
  179. edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/actions.py +14 -16
  180. edu_rdm_integration/stages/upload_data/uploader_log/apps.py +11 -0
  181. edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/managers.py +15 -30
  182. edu_rdm_integration/stages/upload_data/uploader_log/migrations/0001_initial.py +31 -0
  183. edu_rdm_integration/stages/upload_data/uploader_log/migrations/__init__.py +0 -0
  184. edu_rdm_integration/stages/upload_data/uploader_log/models.py +86 -0
  185. edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/ui.py +8 -6
  186. {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/METADATA +238 -238
  187. edu_rdm_integration-3.10.1.dist-info/RECORD +257 -0
  188. edu_rdm_integration/app_meta.py +0 -16
  189. edu_rdm_integration/app_settings.py +0 -77
  190. edu_rdm_integration/collect_and_export_data/utils.py +0 -224
  191. edu_rdm_integration/collect_data/base/helpers.py +0 -26
  192. edu_rdm_integration/collect_data/calculated/base/errors.py +0 -9
  193. edu_rdm_integration/collect_data/calculated/base/helpers.py +0 -32
  194. edu_rdm_integration/collect_data/calculated/base/managers.py +0 -23
  195. edu_rdm_integration/collect_data/calculated/base/results.py +0 -16
  196. edu_rdm_integration/collect_data/calculated/base/runners.py +0 -36
  197. edu_rdm_integration/collect_data/calculated/base/validators.py +0 -28
  198. edu_rdm_integration/collect_data/helpers.py +0 -92
  199. edu_rdm_integration/collect_data/non_calculated/base/errors.py +0 -9
  200. edu_rdm_integration/collect_data/non_calculated/base/helpers.py +0 -32
  201. edu_rdm_integration/collect_data/non_calculated/base/managers.py +0 -23
  202. edu_rdm_integration/collect_data/non_calculated/base/results.py +0 -16
  203. edu_rdm_integration/collect_data/non_calculated/base/runners.py +0 -36
  204. edu_rdm_integration/collect_data/non_calculated/base/validators.py +0 -28
  205. edu_rdm_integration/enum_register/register.py +0 -79
  206. edu_rdm_integration/export_data/base/errors.py +0 -9
  207. edu_rdm_integration/export_data/base/presenters.py +0 -13
  208. edu_rdm_integration/export_data/base/results.py +0 -16
  209. edu_rdm_integration/export_data/base/validators.py +0 -28
  210. edu_rdm_integration/export_data/helpers.py +0 -92
  211. edu_rdm_integration/helpers.py +0 -412
  212. edu_rdm_integration/management/general.py +0 -327
  213. edu_rdm_integration/models.py +0 -982
  214. edu_rdm_integration/redis_cache.py +0 -51
  215. edu_rdm_integration/uploader_log/apps.py +0 -10
  216. edu_rdm_integration-3.9.2.dist-info/RECORD +0 -198
  217. /edu_rdm_integration/{collect_data → core}/__init__.py +0 -0
  218. /edu_rdm_integration/{mapping.py → core/mapping.py} +0 -0
  219. /edu_rdm_integration/{collect_data/base → core/registry}/__init__.py +0 -0
  220. /edu_rdm_integration/{templates → core/registry/templates}/ui-js/start-task.js +0 -0
  221. /edu_rdm_integration/{signals.py → core/signals.py} +0 -0
  222. /edu_rdm_integration/{typing.py → core/typing.py} +0 -0
  223. /edu_rdm_integration/{collect_data/calculated → pipelines}/__init__.py +0 -0
  224. /edu_rdm_integration/{collect_data/calculated/base → pipelines/transfer}/__init__.py +0 -0
  225. /edu_rdm_integration/{collect_data/non_calculated → pipelines/transfer/migrations}/__init__.py +0 -0
  226. /edu_rdm_integration/{templates → pipelines/transfer/templates}/ui-js/transferred-entity-list.js +0 -0
  227. /edu_rdm_integration/{collect_data/non_calculated/base → rdm_entities}/__init__.py +0 -0
  228. /edu_rdm_integration/{enum_register → rdm_entities/migrations}/__init__.py +0 -0
  229. /edu_rdm_integration/{export_data → rdm_models}/__init__.py +0 -0
  230. /edu_rdm_integration/{export_data/base → rdm_models/migrations}/__init__.py +0 -0
  231. /edu_rdm_integration/{function_templates → stages}/__init__.py +0 -0
  232. /edu_rdm_integration/{management → stages/collect_data}/__init__.py +0 -0
  233. /edu_rdm_integration/{collect_data/const.py → stages/collect_data/consts.py} +0 -0
  234. /edu_rdm_integration/{management/commands → stages/collect_data/function_templates}/__init__.py +0 -0
  235. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/__init__.py-tpl +0 -0
  236. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/apps.py-tpl +0 -0
  237. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/caches.py-tpl +0 -0
  238. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/consts.py-tpl +0 -0
  239. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/enums.py-tpl +0 -0
  240. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/errors.py-tpl +0 -0
  241. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/helpers.py-tpl +0 -0
  242. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/presenters.py-tpl +0 -0
  243. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/results.py-tpl +0 -0
  244. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/strings.py-tpl +0 -0
  245. /edu_rdm_integration/{function_templates → stages/collect_data/function_templates}/function_collect_data_template/validators.py-tpl +0 -0
  246. /edu_rdm_integration/{registry → stages/collect_data/functions}/__init__.py +0 -0
  247. /edu_rdm_integration/{uploader_log → stages/collect_data/functions/base}/__init__.py +0 -0
  248. /edu_rdm_integration/{collect_data → stages/collect_data/functions}/base/consts.py +0 -0
  249. /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/consts.py +0 -0
  250. /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/enums.py +0 -0
  251. /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/strings.py +0 -0
  252. /edu_rdm_integration/{collect_data → stages/collect_data/functions}/calculated/base/tests.py +0 -0
  253. /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/consts.py +0 -0
  254. /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/enums.py +0 -0
  255. /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/strings.py +0 -0
  256. /edu_rdm_integration/{collect_data → stages/collect_data/functions}/non_calculated/base/tests.py +0 -0
  257. /edu_rdm_integration/{export_data → stages/export_data}/consts.py +0 -0
  258. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/__init__.py-tpl +0 -0
  259. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/apps.py-tpl +0 -0
  260. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/caches.py-tpl +0 -0
  261. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/consts.py-tpl +0 -0
  262. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/enums.py-tpl +0 -0
  263. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/errors.py-tpl +0 -0
  264. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/helpers.py-tpl +0 -0
  265. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/presenters.py-tpl +0 -0
  266. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/results.py-tpl +0 -0
  267. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/strings.py-tpl +0 -0
  268. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/tests.py-tpl +0 -0
  269. /edu_rdm_integration/{function_templates → stages/export_data/function_templates}/function_export_data_template/validators.py-tpl +0 -0
  270. /edu_rdm_integration/{export_data → stages/export_data/functions}/base/consts.py +0 -0
  271. /edu_rdm_integration/{export_data → stages/export_data/functions}/base/enums.py +0 -0
  272. /edu_rdm_integration/{export_data → stages/export_data/functions}/base/strings.py +0 -0
  273. /edu_rdm_integration/{export_data → stages/export_data/functions}/base/tests.py +0 -0
  274. /edu_rdm_integration/{templates → stages/export_data/registry/templates}/ui-js/stage_for_export.js +0 -0
  275. /edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/enums.py +0 -0
  276. /edu_rdm_integration/{uploader_log → stages/upload_data/uploader_log}/templates/ui-js/object-grid-buttons.js +0 -0
  277. {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/WHEEL +0 -0
  278. {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/licenses/LICENSE +0 -0
  279. {edu_rdm_integration-3.9.2.dist-info → edu_rdm_integration-3.10.1.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edu-rdm-integration
3
- Version: 3.9.2
3
+ Version: 3.10.1
4
4
  Summary: Интеграция с Региональной витриной данных
5
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
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
8
  Classifier: Development Status :: 5 - Production/Stable
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: Programming Language :: Python :: 3.9
@@ -31,7 +31,7 @@ Requires-Dist: m3-django-compat<2,>=1.10.2
31
31
  Requires-Dist: uploader-client<1,>=0.2.3
32
32
  Provides-Extra: dev
33
33
  Requires-Dist: isort==5.12.0; extra == "dev"
34
- Requires-Dist: ruff==0.6.9; extra == "dev"
34
+ Requires-Dist: ruff==0.12.0; extra == "dev"
35
35
  Requires-Dist: flake8<7,>=4.0.1; extra == "dev"
36
36
  Requires-Dist: pytest<8,>=3.2.5; extra == "dev"
37
37
  Requires-Dist: pytest-cov<5; extra == "dev"
@@ -47,7 +47,8 @@ Dynamic: license-file
47
47
  Для интеграции с Региональной витриной данных был выделен отдельный пакет для использования его компонентов в различных
48
48
  продуктах.
49
49
 
50
- На текущий момент интеграция реализуется в рамках проектов Электронная школа (ЭШ) и Электронный колледж (ЭК).
50
+ На текущий момент интеграция реализуется в рамках проектов Электронный детский сад (ЭДС), Электронная школа (ЭШ) и
51
+ Электронный колледж (ЭК).
51
52
 
52
53
  ## Описание концепции
53
54
 
@@ -60,7 +61,7 @@ Dynamic: license-file
60
61
 
61
62
  ## Принцип работы
62
63
 
63
- Весь процесс разделен на сбор и выгрузку данных. Выделяются следующие понятия:
64
+ Весь процесс разделен на сбор, выгрузку данных в файлы, отправку файлов. Выделяются следующие понятия:
64
65
 
65
66
  Модель продукта
66
67
  : Django-модель находящаяся в самом продукте. При помощи нее производится накапливание пользовательских данных;
@@ -111,6 +112,25 @@ Dynamic: license-file
111
112
  - В проект внедрен m3-db-utils;
112
113
  - В проект внедрен uploader-client.
113
114
 
115
+ ## Подключение в settings.py
116
+
117
+ INSTALLED_APPS = (
118
+ ...
119
+ 'edu_rdm_integration',
120
+ 'edu_rdm_integration.core.registry',
121
+ 'edu_rdm_integration.rdm_entities',
122
+ 'edu_rdm_integration.rdm_models',
123
+ 'edu_rdm_integration.pipelines.transfer',
124
+ 'edu_rdm_integration.stages.collect_data',
125
+ 'edu_rdm_integration.stages.export_data',
126
+ 'edu_rdm_integration.stages.service',
127
+ 'edu_rdm_integration.stages.upload_data',
128
+ 'edu_rdm_integration.stages.upload_data.uploader_log',
129
+ 'edu_rdm_integration.stages.collect_data.registry',
130
+ 'edu_rdm_integration.stages.export_data.registry',
131
+ ...
132
+ )
133
+
114
134
  ## Параметры конфигурационного файла
115
135
 
116
136
  В разных проектах существуют различные способы добавления настроек, где-то через плагины, где-то напрямую в settings.py.
@@ -125,64 +145,12 @@ Dynamic: license-file
125
145
  ('rdm_general', 'EXPORT_ENTITY_ID_PREFIX'): '', # Дефолтное значение нужно изменить на специфическое системе
126
146
  ('rdm_general', 'COLLECT_CHUNK_SIZE'): 500,
127
147
  ('rdm_general', 'EXPORT_CHUNK_SIZE'): 500,
148
+ ('rdm_general', 'UPLOAD_QUEUE_MAX_SIZE'): 500_000_000,
149
+ ('rdm_general', 'RDM_MENU_ITEM'): False,
128
150
  ('rdm_transfer_task', 'MINUTE'): '0',
129
151
  ('rdm_transfer_task', 'HOUR'): '*/4',
130
152
  ('rdm_transfer_task', 'DAY_OF_WEEK'): '*',
131
153
  ('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS'): 21600,
132
- ('rdm_transfer_task', 'TIMEDELTA'): 3600,
133
- ('rdm_transfer_task', 'ENTITIES'): '',
134
- ('rdm_upload_status_task', 'MINUTE'): '*/30',
135
- ('rdm_upload_status_task', 'HOUR'): '*',
136
- ('rdm_upload_status_task', 'DAY_OF_WEEK'): '*',
137
- ('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS'): 7200,
138
- ('uploader_client', 'URL'): 'http://localhost:8090',
139
- ('uploader_client', 'DATAMART_NAME'): '',
140
- ('uploader_client', 'REQUEST_RETRIES'): 10,
141
- ('uploader_client', 'REQUEST_TIMEOUT'): 10,
142
- ('uploader_client', 'ENABLE_REQUEST_EMULATION'): False,
143
- })
144
- ```
145
- Дополнительные настройки с версии 3.4.2
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_upload_status_task', 'MINUTE'): '*/30',
159
- ('rdm_upload_status_task', 'HOUR'): '*',
160
- ('rdm_upload_status_task', 'DAY_OF_WEEK'): '*',
161
- ('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS'): 7200,
162
- ('rdm_upload_data_task', 'MINUTE'): '0',
163
- ('rdm_upload_data_task', 'HOUR'): '*/2',
164
- ('rdm_upload_data_task', 'DAY_OF_WEEK'): '*',
165
- ('rdm_upload_data_task', 'LOCK_EXPIRE_SECONDS'): 7200,
166
- ('uploader_client', 'URL'): 'http://localhost:8090',
167
- ('uploader_client', 'DATAMART_NAME'): '',
168
- ('uploader_client', 'REQUEST_RETRIES'): 10,
169
- ('uploader_client', 'REQUEST_TIMEOUT'): 10,
170
- ('uploader_client', 'ENABLE_REQUEST_EMULATION'): False,
171
- })
172
- ```
173
- С версии пакета 3.6 добавляются новые настройки для двух периодических задач разных очередей сбора и выгрузки данных
174
- ```
175
- PROJECT_DEFAULT_CONFIG.update({
176
- # Настройки РВД
177
- ('rdm_general', 'EXPORT_ENTITY_ID_PREFIX'): '', # Дефолтное значение нужно изменить на специфическое системе
178
- ('rdm_general', 'COLLECT_CHUNK_SIZE'): 500,
179
- ('rdm_general', 'EXPORT_CHUNK_SIZE'): 500,
180
- ('rdm_transfer_task', 'MINUTE'): '0',
181
- ('rdm_transfer_task', 'HOUR'): '*/4',
182
- ('rdm_transfer_task', 'DAY_OF_WEEK'): '*',
183
- ('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS'): 21600,
184
- ('rdm_transfer_task', 'TIMEDELTA'): 3600,
185
- ('rdm_transfer_task', 'ENTITIES'): '',
186
154
  ('rdm_transfer_task_fast', 'MINUTE'): '*/5',
187
155
  ('rdm_transfer_task_fast', 'HOUR'): '*',
188
156
  ('rdm_transfer_task_fast', 'DAY_OF_WEEK'): '*',
@@ -191,21 +159,39 @@ Dynamic: license-file
191
159
  ('rdm_transfer_task_long', 'HOUR'): '*/6',
192
160
  ('rdm_transfer_task_long', 'DAY_OF_WEEK'): '*',
193
161
  ('rdm_transfer_task_long', 'LOCK_EXPIRE_SECONDS'): 28800,
194
- ('rdm_upload_status_task', 'MINUTE'): '*/30',
195
- ('rdm_upload_status_task', 'HOUR'): '*',
196
- ('rdm_upload_status_task', 'DAY_OF_WEEK'): '*',
197
- ('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS'): 7200,
198
162
  ('rdm_upload_data_task', 'MINUTE'): '0',
199
163
  ('rdm_upload_data_task', 'HOUR'): '*/2',
200
164
  ('rdm_upload_data_task', 'DAY_OF_WEEK'): '*',
201
165
  ('rdm_upload_data_task', 'LOCK_EXPIRE_SECONDS'): 7200,
166
+ ('rdm_upload_data_task', 'EXPORT_STAGES'): 500,
167
+ ('rdm_upload_status_task', 'MINUTE'): '*/30',
168
+ ('rdm_upload_status_task', 'HOUR'): '*',
169
+ ('rdm_upload_status_task', 'DAY_OF_WEEK'): '*',
170
+ ('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS'): 7200,
171
+ ('rdm_check_suspend_task', 'MINUTE'): '*/10',
172
+ ('rdm_check_suspend_task', 'HOUR'): '*',
173
+ ('rdm_check_suspend_task', 'DAY_OF_WEEK'): '*',
174
+ ('rdm_check_suspend_task', 'LOCK_EXPIRE_SECONDS'): 7200,
175
+ ('rdm_check_suspend_task', 'STAGE_TIMEOUT'): 120,
176
+ # Настройки очереди отправки
177
+ ('rdm_redis', 'REDIS_HOST'): 'localhost',
178
+ ('rdm_redis', 'REDIS_PORT'): 6379,
179
+ ('rdm_redis', 'REDIS_DB'): 1,
180
+ ('rdm_redis', 'REDIS_PASSWORD'): '',
181
+ ('rdm_redis', 'REDIS_CACHE_TIMEOUT_SECONDS'): 7200,
202
182
  ('uploader_client', 'URL'): 'http://localhost:8090',
203
183
  ('uploader_client', 'DATAMART_NAME'): '',
204
184
  ('uploader_client', 'REQUEST_RETRIES'): 10,
205
185
  ('uploader_client', 'REQUEST_TIMEOUT'): 10,
206
186
  ('uploader_client', 'ENABLE_REQUEST_EMULATION'): False,
207
- })
208
-
187
+ ('uploader_client', 'RESPONSE_FILE_STATUS'): 'success',
188
+ ('uploader_client', 'USE_PROXY_API'): False,
189
+ ('uploader_client', 'USERNAME'): '',
190
+ ('uploader_client', 'PASSWORD'): '',
191
+ ('uploader_client', 'ORGANIZATION_OGRN'): '',
192
+ ('uploader_client', 'INSTALLATION_NAME'): '',
193
+ ('uploader_client', 'INSTALLATION_ID'): '',
194
+ })
209
195
  ```
210
196
  - Получение значений настроек из конфигурационного файла в settings.py:
211
197
 
@@ -228,72 +214,19 @@ Dynamic: license-file
228
214
 
229
215
  # Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified
230
216
  RDM_UPDATE_NON_EXPORTED_CHUNK_SIZE = conf.get_int('rdm_general', 'UPDATE_NON_EXPORTED_CHUNK_SIZE')
217
+
218
+ # Объем очереди файлов в витрину (в байтах) - по умолчанию 512 Мбайт
219
+ RDM_UPLOAD_QUEUE_MAX_SIZE = conf.get_int('rdm_general', 'UPLOAD_QUEUE_MAX_SIZE')
220
+
221
+ # Пункт меню "Региональная витрина данных" - Спрятать (False) / Отображать (True)
222
+ RDM_MENU_ITEM = conf.get_bool('rdm_general', 'RDM_MENU_ITEM')
231
223
 
232
224
  # Настройка запуска периодической задачи выгрузки данных:
233
225
  RDM_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task', 'MINUTE')
234
226
  RDM_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task', 'HOUR')
235
227
  RDM_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task', 'DAY_OF_WEEK')
236
- RDM_TRANSFER_TASK_EXPIRE_SECOND = conf.get('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS')
237
-
238
- # Настройка запуска периодической задачи статуса загрузки данных в витрину:
239
- RDM_UPLOAD_STATUS_TASK_MINUTE = conf.get('rdm_upload_status_task', 'MINUTE')
240
- RDM_UPLOAD_STATUS_TASK_HOUR = conf.get('rdm_upload_status_task', 'HOUR')
241
- RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK = conf.get('rdm_upload_status_task', 'DAY_OF_WEEK')
242
- RDM_UPLOAD_STATUS_TASK_EXPIRE_SECOND = conf.get('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS')
243
-
244
- # Настройка запуска периодической задачи поиска зависших этапов экспорта:
245
- RDM_CHECK_SUSPEND_TASK_MINUTE = conf.get('rdm_check_suspend_task', 'MINUTE')
246
- RDM_CHECK_SUSPEND_TASK_HOUR = conf.get('rdm_check_suspend_task', 'HOUR')
247
- RDM_CHECK_SUSPEND_TASK_DAY_OF_WEEK = conf.get('rdm_check_suspend_task', 'DAY_OF_WEEK')
248
- RDM_CHECK_SUSPEND_TASK_EXPIRE_SECOND = conf.get('rdm_check_suspend_task', 'LOCK_EXPIRE_SECONDS')
249
- RDM_CHECK_SUSPEND_TASK_TIMEDELTA = conf.get_int('rdm_check_suspend_task', 'TIMEDELTA')
228
+ RDM_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = conf.get('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS')
250
229
 
251
- # Загрузка данных в Региональную витрину данных (РВД)
252
- # Адрес витрины (schema://host:port)
253
- RDM_UPLOADER_CLIENT_URL = conf.get('uploader_client', 'URL')
254
-
255
- # Мнемоника Витрины
256
- RDM_UPLOADER_CLIENT_DATAMART_NAME = conf.get('uploader_client', 'DATAMART_NAME')
257
-
258
- # Количество повторных попыток запроса
259
- RDM_UPLOADER_CLIENT_REQUEST_RETRIES = conf.get_int('uploader_client', 'REQUEST_RETRIES')
260
-
261
- # Таймаут запроса, сек
262
- RDM_UPLOADER_CLIENT_REQUEST_TIMEOUT = conf.get_int('uploader_client', 'REQUEST_TIMEOUT')
263
-
264
- # Включить эмуляцию отправки запросов
265
- RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION = conf.get_bool('uploader_client', 'ENABLE_REQUEST_EMULATION')
266
-
267
- ```
268
- Дополнительные настройки с версии 3.3.0
269
- ```
270
- # Объем очереди файлов в витрину (в байтах) - по умолчанию 512 Мбайт.
271
- RDM_UPLOAD_QUEUE_MAX_SIZE = conf.get_int('rdm_general', 'UPLOAD_QUEUE_MAX_SIZE') or 500_000_000
272
-
273
- # Настройка очереди Redis для формирования файлов РВД.
274
- RDM_REDIS_HOST = conf.get('rdm_redis', 'REDIS_HOST')
275
- RDM_REDIS_PORT = conf.get('rdm_redis', 'REDIS_PORT')
276
- RDM_REDIS_DB = conf.get('rdm_redis', 'REDIS_DB')
277
- RDM_REDIS_PASSWORD = conf.get('rdm_redis', 'REDIS_PASSWORD')
278
-
279
- ```
280
- Дополнительные настройки с версии 3.3.1
281
- ```
282
- # Таймаут для сохранения параметров в общем кеш.
283
- RDM_REDIS_CACHE_TIMEOUT_SECONDS = conf.get_int('rdm_redis', 'REDIS_CACHE_TIMEOUT_SECONDS') or 60 * 60 * 2
284
-
285
- ```
286
- Дополнительные настройки с версии 3.4.2
287
- ```
288
- # Настройка запуска периодической задачи отправки файлов с данными РВД
289
- RDM_UPLOAD_DATA_TASK_MINUTE = conf.get('rdm_upload_data_task', 'MINUTE')
290
- RDM_UPLOAD_DATA_TASK_HOUR = conf.get('rdm_upload_data_task', 'HOUR')
291
- RDM_UPLOAD_DATA_TASK_DAY_OF_WEEK = conf.get('rdm_upload_data_task', 'DAY_OF_WEEK')
292
- RDM_UPLOAD_DATA_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_upload_data_task', 'LOCK_EXPIRE_SECONDS') or 60 * 60 * 2
293
-
294
- ```
295
- С версии пакета 3.6 добавляются настройки для двух новых периодических задач
296
- ```
297
230
  # Настройка запуска периодической задачи выгрузки данных - быстрая очередь:
298
231
  RDM_FAST_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task_fast', 'MINUTE')
299
232
  RDM_FAST_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task_fast', 'HOUR')
@@ -305,68 +238,130 @@ Dynamic: license-file
305
238
  RDM_LONG_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task_long', 'HOUR')
306
239
  RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task_long', 'DAY_OF_WEEK')
307
240
  RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_transfer_task_long', 'LOCK_EXPIRE_SECONDS')
241
+
242
+ # Настройка запуска периодической задачи поиска зависших этапов экспорта:
243
+ RDM_CHECK_SUSPEND_TASK_MINUTE = conf.get('rdm_check_suspend_task', 'MINUTE')
244
+ RDM_CHECK_SUSPEND_TASK_HOUR = conf.get('rdm_check_suspend_task', 'HOUR')
245
+ RDM_CHECK_SUSPEND_TASK_DAY_OF_WEEK = conf.get('rdm_check_suspend_task', 'DAY_OF_WEEK')
246
+ RDM_CHECK_SUSPEND_TASK_LOCK_EXPIRE_SECONDS = conf.get('rdm_check_suspend_task', 'LOCK_EXPIRE_SECONDS')
247
+ RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT = conf.get_int('rdm_check_suspend_task', 'STAGE_TIMEOUT')
248
+
249
+ # Настройка запуска периодической задачи отправки файлов с данными РВД
250
+ RDM_UPLOAD_DATA_TASK_MINUTE = conf.get('rdm_upload_data_task', 'MINUTE')
251
+ RDM_UPLOAD_DATA_TASK_HOUR = conf.get('rdm_upload_data_task', 'HOUR')
252
+ RDM_UPLOAD_DATA_TASK_DAY_OF_WEEK = conf.get('rdm_upload_data_task', 'DAY_OF_WEEK')
253
+ RDM_UPLOAD_DATA_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_upload_data_task', 'LOCK_EXPIRE_SECONDS')
254
+ # Количество подэтапов для обработки в периодической задаче отправки данных
255
+ RDM_UPLOAD_DATA_TASK_EXPORT_STAGES = conf.get_int('rdm_upload_data_task', 'EXPORT_STAGES')
308
256
 
309
- ```
310
- Перечень настроек в settings.py указан в таблице ниже.
311
-
312
- | Название настройки в settings | Описание | Значение по умолчанию |
313
- | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |
314
- | UPLOADS | Основная директория в MEDIA, в которой будет создана директория edu_rdm_integration для сохранения файлов для дальнейшей выгрузки | 500 |
315
- | RDM_COLLECT_CHUNK_SIZE | Количество записей моделей обрабатываемых за одну итерацию сбора данных | 500 |
316
- | RDM_EXPORT_CHUNK_SIZE | Количество записей моделей обрабатываемых за одну итерацию экспорта | 500 |
317
- | RDM_UPDATE_NON_EXPORTED_CHUNK_SIZE | # Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified | 5000 |
318
- | RDM_UPLOADER_CLIENT_URL | Адрес витрины (schema://host:port) | 'http://localhost:8090' |
319
- | RDM_UPLOADER_CLIENT_DATAMART_NAME | Мнемоника Витрины | 'test' |
320
- | RDM_UPLOADER_CLIENT_REQUEST_RETRIES | Количество повторных попыток запроса | 10 |
321
- | RDM_UPLOADER_CLIENT_REQUEST_TIMEOUT | Таймаут запроса, сек | 10 |
322
- | RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION | Включить эмуляцию отправки запросов | True |
323
- | RDM_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи выгрузки данных. Минута | '0' |
324
- | RDM_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи выгрузки данных. Час | '*/4' |
325
- | RDM_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи выгрузки данных. День недели | '*' |
326
- | RDM_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах) | 21600 |
327
- | RDM_UPLOAD_STATUS_TASK_MINUTE | Настройка запуска периодической задачи статуса загрузки данных в витрину. Минута | '*/30' |
328
- | RDM_UPLOAD_STATUS_TASK_HOUR | Настройка запуска периодической задачи статуса загрузки данных в витрину. Час | '*' |
329
- | RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи статуса загрузки данных в витрину. День недели | '*' |
330
- | RDM_UPLOAD_STATUS_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах) | 3600 |
331
- | RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT | Дельта для определения зависшего подэтапа. Минута | 120 |
257
+ # Настройка запуска периодической задачи статуса загрузки данных в витрину:
258
+ RDM_UPLOAD_STATUS_TASK_MINUTE = conf.get('rdm_upload_status_task', 'MINUTE')
259
+ RDM_UPLOAD_STATUS_TASK_HOUR = conf.get('rdm_upload_status_task', 'HOUR')
260
+ RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK = conf.get('rdm_upload_status_task', 'DAY_OF_WEEK')
261
+ RDM_UPLOAD_STATUS_TASK_EXPIRE_SECOND = conf.get('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS')
332
262
 
333
- С версии пакета 3.3.0 добавляются новые настройки
334
-
335
- | Название настройки в settings | Описание | Значение по умолчанию |
336
- |--------------------------------------------|----------------------------------------------------------------------------------------|-----------------------|
337
- | RDM_UPLOAD_QUEUE_MAX_SIZE | Объем очереди файлов в витрину (в байтах). | 500_000_000 |
338
- | RDM_REDIS_HOST | Настройка очереди Redis для формирования файлов РВД (хост). | |
339
- | RDM_REDIS_PORT | Настройка очереди Redis для формирования файлов РВД (порт). | |
340
- | RDM_REDIS_DB | Настройка очереди Redis для формирования файлов РВД (номер бд). | |
341
- | RDM_REDIS_PASSWORD | Настройка очереди Redis для формирования файлов РВД (пароль). | |
263
+ # Настройка очереди Redis для формирования файлов РВД.
264
+ RDM_REDIS_HOST = conf.get('rdm_redis', 'REDIS_HOST')
265
+ RDM_REDIS_PORT = conf.get('rdm_redis', 'REDIS_PORT')
266
+ RDM_REDIS_DB = conf.get('rdm_redis', 'REDIS_DB')
267
+ RDM_REDIS_PASSWORD = conf.get('rdm_redis', 'REDIS_PASSWORD')
268
+ # Таймаут для сохранения параметров в общем кеш.
269
+ RDM_REDIS_CACHE_TIMEOUT_SECONDS = conf.get_int('rdm_redis', 'REDIS_CACHE_TIMEOUT_SECONDS')
342
270
 
343
- С версии пакета 3.3.1 добавляются новые настройки
344
-
345
- | Название настройки в settings | Описание | Значение по умолчанию |
346
- |--------------------------------------------|----------------------------------------------------------------------------------------|-----------------------|
347
- | RDM_REDIS_CACHE_TIMEOUT_SECONDS | Таймаут для сохранения параметров в общем кеш (секунды). | 7200 |
271
+ # Загрузка данных в Региональную витрину данных (РВД)
272
+ # Адрес витрины (schema://host:port)
273
+ RDM_UPLOADER_CLIENT_URL = conf.get('uploader_client', 'URL')
274
+ # Мнемоника Витрины
275
+ RDM_UPLOADER_CLIENT_DATAMART_NAME = conf.get('uploader_client', 'DATAMART_NAME')
276
+ # Количество повторных попыток запроса
277
+ RDM_UPLOADER_CLIENT_REQUEST_RETRIES = conf.get_int('uploader_client', 'REQUEST_RETRIES')
278
+ # Таймаут запроса, сек
279
+ RDM_UPLOADER_CLIENT_REQUEST_TIMEOUT = conf.get_int('uploader_client', 'REQUEST_TIMEOUT')
280
+ # Включить эмуляцию отправки запросов
281
+ RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION = conf.get_bool('uploader_client', 'ENABLE_REQUEST_EMULATION')
282
+ # Установить тип ответа витрины при проверке статуса отправленного файла
283
+ RDM_RESPONSE_FILE_STATUS = conf.get('uploader_client', 'RESPONSE_FILE_STATUS')
284
+ # Использование Proxy API
285
+ RDM_UPLOADER_CLIENT_USE_PROXY_API = conf.get_bool('uploader_client', 'USE_PROXY_API')
286
+ # Имя пользователя IAM
287
+ RDM_UPLOADER_CLIENT_USERNAME = conf.get('uploader_client', 'USERNAME')
288
+ # Пароль пользователя IAM
289
+ RDM_UPLOADER_CLIENT_PASSWORD = conf.get('uploader_client', 'PASSWORD')
290
+ # ОГРН организации, в рамках которой развёрнута Витрина
291
+ RDM_UPLOADER_CLIENT_ORGANIZATION_OGRN = conf.get('uploader_client', 'ORGANIZATION_OGRN')
292
+ # Имя инсталляции в целевой Витрине
293
+ RDM_UPLOADER_CLIENT_INSTALLATION_NAME = conf.get('uploader_client', 'INSTALLATION_NAME')
294
+ # Идентификатор инсталляции в целевой Витрине
295
+ RDM_UPLOADER_CLIENT_INSTALLATION_ID = conf.get('uploader_client', 'INSTALLATION_ID')
348
296
 
349
- С версии пакета 3.4.2 добавляются новые настройки
350
-
351
- | Название настройки в settings | Описание | Значение по умолчанию |
352
- |--------------------------------------------|----------------------------------------------------------------------------------------|-----------------------|
353
- | RDM_UPLOAD_DATA_TASK_MINUTE | Настройка запуска периодической задачи отправки файлов с данными РВД (минута). | '0' |
354
- | RDM_UPLOAD_DATA_TASK_HOUR | Настройка запуска периодической задачи отправки файлов с данными РВД (час). | '*/2' |
355
- | RDM_UPLOAD_DATA_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи отправки файлов с данными РВД (день недели). | '*' |
356
- | RDM_UPLOAD_DATA_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах). | 7200 |
357
-
358
- С версии пакета 3.6 добавляются новые настройки
359
-
360
- | Название настройки в settings | Описание | Значение по умолчанию |
361
- |--------------------------------------------|----------------------------------------------------------------------------------------|-----------------------|
362
- | RDM_FAST_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Минута | '*/5' |
363
- | RDM_FAST_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Час | '*' |
364
- | RDM_FAST_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. День недели | '*' |
365
- | RDM_FAST_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах) | 1800 |
366
- | RDM_LONG_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Минута | 0 |
367
- | RDM_LONG_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Час | '*/6' |
368
- | RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. День недели | '*' |
369
- | RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята секундах) | 28800 |
297
+ # Директория логов сбора данных, доступных для скачивания
298
+ RDM_COLLECT_LOG_DIR = os.path.join('logs', 'rdm', 'collect')
299
+ os.makedirs(os.path.join(MEDIA_ROOT, RDM_COLLECT_LOG_DIR), exist_ok=True)
300
+ # Директория логов экспорта данных, доступных для скачивания
301
+ RDM_EXPORT_LOG_DIR = os.path.join('logs', 'rdm', 'export')
302
+ os.makedirs(os.path.join(MEDIA_ROOT, RDM_EXPORT_LOG_DIR), exist_ok=True)
303
+ # Директория логов отправки данных в витрину, доступных для скачивания
304
+ RDM_UPLOAD_LOG_DIR = os.path.join('logs', 'rdm', 'upload')
305
+ os.makedirs(os.path.join(MEDIA_ROOT, RDM_UPLOAD_LOG_DIR), exist_ok=True)
306
+ ```
307
+
308
+ Перечень настроек в settings.py указан в таблице ниже.
309
+
310
+ | Название настройки в settings | Описание | Значение по умолчанию |
311
+ |----------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------|-------------------------|
312
+ | UPLOADS | Основная директория в MEDIA, в которой будет создана директория edu_rdm_integration для сохранения файлов для дальнейшей выгрузки | 500 |
313
+ | RDM_EXPORT_ENTITY_ID_PREFIX | Префикс идентификаторов записей сущностей специфический для продукта | |
314
+ | RDM_COLLECT_CHUNK_SIZE | Количество записей моделей обрабатываемых за одну итерацию сбора данных | 500 |
315
+ | RDM_EXPORT_CHUNK_SIZE | Количество записей моделей обрабатываемых за одну итерацию экспорта | 500 |
316
+ | RDM_UPDATE_NON_EXPORTED_CHUNK_SIZE | # Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified | 5000 |
317
+ | RDM_UPLOAD_QUEUE_MAX_SIZE | Объем очереди файлов в витринубайтах). | 500_000_000 |
318
+ | RDM_MENU_ITEM | Отображение пункта меню Пункт меню "Региональная витрина данных" | False |
319
+ | RDM_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи выгрузки данных. Минута | '0' |
320
+ | RDM_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи выгрузки данных. Час | '*/4' |
321
+ | RDM_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи выгрузки данных. День недели | '*' |
322
+ | RDM_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах) | 21600 |
323
+ | RDM_FAST_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Минута | '*/5' |
324
+ | RDM_FAST_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Час | '*' |
325
+ | RDM_FAST_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. День недели | '*' |
326
+ | RDM_FAST_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах) | 1800 |
327
+ | RDM_LONG_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Минута | 0 |
328
+ | RDM_LONG_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Час | '*/6' |
329
+ | RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи (долгая очередь) выгрузки данных. День недели | '*' |
330
+ | RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах) | 28800 |
331
+ | RDM_CHECK_SUSPEND_TASK_MINUTE | Настройка запуска периодической задачи поиска зависших этапов экспорта. Минута | */10 |
332
+ | RDM_CHECK_SUSPEND_TASK_HOUR | Настройка запуска периодической задачи поиска зависших этапов экспорта. Час | * |
333
+ | RDM_CHECK_SUSPEND_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи поиска зависших этапов экспорта. День недели | * |
334
+ | RDM_CHECK_SUSPEND_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах). | 7200 |
335
+ | RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT | Дельта для определения зависшего подэтапа. Минута | 120 |
336
+ | RDM_UPLOAD_DATA_TASK_MINUTE | Настройка запуска периодической задачи отправки файлов с данными РВД (минута). | '0' |
337
+ | RDM_UPLOAD_DATA_TASK_HOUR | Настройка запуска периодической задачи отправки файлов с данными РВД (час). | '*/2' |
338
+ | RDM_UPLOAD_DATA_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи отправки файлов с данными РВД (день недели). | '*' |
339
+ | RDM_UPLOAD_DATA_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах). | 7200 |
340
+ | RDM_UPLOAD_DATA_TASK_EXPORT_STAGES | Количество подэтапов для обработки в периодической задаче отправки данных. | 500 |
341
+ | RDM_UPLOAD_STATUS_TASK_MINUTE | Настройка запуска периодической задачи статуса загрузки данных в витрину. Минута | '*/30' |
342
+ | RDM_UPLOAD_STATUS_TASK_HOUR | Настройка запуска периодической задачи статуса загрузки данных в витрину. Час | '*' |
343
+ | RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи статуса загрузки данных в витрину. День недели | '*' |
344
+ | RDM_UPLOAD_STATUS_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секундах) | 3600 |
345
+ | RDM_REDIS_HOST | Настройка очереди Redis для формирования файлов РВД (хост). | |
346
+ | RDM_REDIS_PORT | Настройка очереди Redis для формирования файлов РВД (порт). | |
347
+ | RDM_REDIS_DB | Настройка очереди Redis для формирования файлов РВД (номер бд). | |
348
+ | RDM_REDIS_PASSWORD | Настройка очереди Redis для формирования файлов РВД (пароль). | |
349
+ | RDM_REDIS_CACHE_TIMEOUT_SECONDS | Таймаут для сохранения параметров в общем кеш (секунды). | 7200 |
350
+ | RDM_UPLOADER_CLIENT_URL | Адрес витрины (schema://host:port) | 'http://localhost:8090' |
351
+ | RDM_UPLOADER_CLIENT_DATAMART_NAME | Мнемоника Витрины | 'test' |
352
+ | RDM_UPLOADER_CLIENT_REQUEST_RETRIES | Количество повторных попыток запроса | 10 |
353
+ | RDM_UPLOADER_CLIENT_REQUEST_TIMEOUT | Таймаут запроса, сек | 10 |
354
+ | RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION | Включить эмуляцию отправки запросов | True |
355
+ | RDM_RESPONSE_FILE_STATUS | Установить тип ответа витрины при проверке статуса отправленного файла | 'success' |
356
+ | RDM_UPLOADER_CLIENT_USE_PROXY_API | Использование Proxy API | False |
357
+ | RDM_UPLOADER_CLIENT_USERNAME | Имя пользователя IAM | |
358
+ | RDM_UPLOADER_CLIENT_PASSWORD | Пароль пользователя IAM | |
359
+ | RDM_UPLOADER_CLIENT_ORGANIZATION_OGRN | ОГРН организации, в рамках которой развёрнута Витрина | |
360
+ | RDM_UPLOADER_CLIENT_INSTALLATION_NAME | Имя инсталляции в целевой Витрине | |
361
+ | RDM_UPLOADER_CLIENT_INSTALLATION_ID | Идентификатор инсталляции в целевой Витрине | |
362
+ | RDM_COLLECT_LOG_DIR | Директория логов сбора данных, доступных для скачивания | |
363
+ | RDM_EXPORT_LOG_DIR | Директория логов экспорта данных, доступных для скачивания | |
364
+ | RDM_UPLOAD_LOG_DIR | Директория логов отправки данных в витрину, доступных для скачивания | |
370
365
 
371
366
  - В дефолтный конфиг проекта необходимо добавить:
372
367
 
@@ -381,7 +376,11 @@ Dynamic: license-file
381
376
  # Количество записей моделей ЭШ обрабатываемых за одну итерацию сбора данных
382
377
  COLLECT_CHUNK_SIZE = 500
383
378
  # Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified
384
- UPDATE_NON_EXPORTED_CHUNK_SIZE = 5_000
379
+ UPDATE_NON_EXPORTED_CHUNK_SIZE = 5000
380
+ # Объем очереди файлов в витрину (в байтах) - по умолчанию 512 Мбайт.
381
+ UPLOAD_QUEUE_MAX_SIZE = 500000000
382
+ # Отображение пункта меню "Региональная витрина данных"
383
+ RDM_MENU_ITEM = False
385
384
 
386
385
  # Настройка запуска периодической задачи выгрузки данных
387
386
  [rdm_transfer_task]
@@ -389,18 +388,19 @@ Dynamic: license-file
389
388
  HOUR=*
390
389
  DAY_OF_WEEK=*
391
390
  LOCK_EXPIRE_SECONDS=21600
392
- # Дельта между прошлым и текущим запуском, сек
393
- TIMEDELTA=120
394
- # Сущности, по которым должен производиться сбор и выгрузка данных. Перечисляются через запятую без пробелов.
395
- ENTITIES =
396
-
397
- # Настройка запуска периодической задачи статуса загрузки данных в витрину
398
- [rdm_upload_status_task]
391
+
392
+ [rdm_transfer_task_fast]
399
393
  MINUTE=*/2
400
394
  HOUR=*
401
395
  DAY_OF_WEEK=*
402
- LOCK_EXPIRE_SECONDS=7200
403
-
396
+ LOCK_EXPIRE_SECONDS = 1800
397
+
398
+ [rdm_transfer_task_long]
399
+ MINUTE=*/15
400
+ HOUR=*
401
+ DAY_OF_WEEK=*
402
+ LOCK_EXPIRE_SECONDS = 21600
403
+
404
404
  # Настройка запуска периодической задачи поиска зависших этапов экспорта
405
405
  [rdm_check_suspend_task]
406
406
  MINUTE=*/10
@@ -409,6 +409,30 @@ Dynamic: license-file
409
409
  LOCK_EXPIRE_SECONDS=7200
410
410
  # Дельта для определения зависшего подэтапа, мин
411
411
  STAGE_TIMEOUT=120
412
+
413
+ # Настройка запуска периодической задачи отправки csv-файлов в витрину.
414
+ [rdm_upload_data_task]
415
+ MINUTE=*/2
416
+ HOUR=*
417
+ DAY_OF_WEEK=*
418
+ LOCK_EXPIRE_SECONDS = 7200
419
+ EXPORT_STAGES = 500
420
+
421
+ # Настройка запуска периодической задачи статуса загрузки данных в витрину
422
+ [rdm_upload_status_task]
423
+ MINUTE=*/2
424
+ HOUR=*
425
+ DAY_OF_WEEK=*
426
+ LOCK_EXPIRE_SECONDS=7200
427
+
428
+ # Настройка очереди Redis для формирования файлов РВД.
429
+ [rdm_redis]
430
+ REDIS_HOST = localhost
431
+ REDIS_PORT = 6379
432
+ REDIS_DB = 1
433
+ REDIS_PASSWORD =
434
+ # Таймаут для сохранения параметров в общем кеш.
435
+ REDIS_CACHE_TIMEOUT_SECONDS = 7200
412
436
 
413
437
  [uploader_client]
414
438
  # Адрес витрины
@@ -421,53 +445,29 @@ Dynamic: license-file
421
445
  REQUEST_TIMEOUT = 10
422
446
  # Включить эмуляцию отправки запросов
423
447
  ENABLE_REQUEST_EMULATION = True
448
+ # Использовать Proxy API
449
+ USE_PROXY_API = False
450
+ # Имя пользователя IAM
451
+ USERNAME =
452
+ # Пароль пользователя IAM
453
+ PASSWORD =
454
+ # ОГРН организации, в рамках которой развёрнута Витрина
455
+ ORGANIZATION_OGRN =
456
+ # Имя инсталляции в целевой Витрине
457
+ INSTALLATION_NAME =
458
+ # Идентификатор инсталляции в целевой Витрине
459
+ INSTALLATION_ID =
424
460
  ```
425
- - С версии 3.3.0 в дефолтный конфиг нужно добавить
426
- ```
427
- [rdm_general]
428
- ...
429
- # Объем очереди файлов в витрину (в байтах) - по умолчанию 512 Мбайт.
430
- UPLOAD_QUEUE_MAX_SIZE = 500_000_000
461
+ На основе дефолтного конфига произвести конфигурирование приложений.
431
462
 
432
- # Настройка очереди Redis для формирования файлов РВД.
433
- [rdm_redis]
434
- REDIS_HOST = localhost
435
- REDIS_PORT = 6379
436
- REDIS_DB = 1
437
- REDIS_PASSWORD =
438
- ```
439
- - С версии 3.3.1 в дефолтный конфиг нужно добавить
440
- ```
441
- [rdm_redis]
442
- ...
443
- # Таймаут для сохранения параметров в общем кеш.
444
- REDIS_CACHE_TIMEOUT_SECONDS = 7200
445
- ```
446
- - С версии 3.4.2 в дефолтный конфиг нужно добавить
447
- ```
448
- # Настройка запуска периодической задачи отправки csv-файлов в витрину.
449
- [rdm_upload_data_task]
450
- MINUTE=*/2
451
- HOUR=*
452
- DAY_OF_WEEK=*
453
- LOCK_EXPIRE_SECONDS = 60 * 60 * 2
454
- ```
455
- - С версии 3.6 в дефолтный конфиг также нужно добавить два дополнительных раздела
456
- ```
457
-
458
- [rdm_transfer_task_fast]
459
- MINUTE=*/2
460
- HOUR=*
461
- DAY_OF_WEEK=*
462
- LOCK_EXPIRE_SECONDS = 1800
463
+ ## Форматирование
463
464
 
464
- [rdm_transfer_task_long]
465
- MINUTE=*/15
466
- HOUR=*
467
- DAY_OF_WEEK=*
468
- LOCK_EXPIRE_SECONDS = 21600
469
- ```
470
- На основе дефолтного конфига произвести конфигурирование приложений.
465
+ Форматирование исходного кода осуществляется при помощи ruff. Ниже приведены команды для осуществления форматирования.
466
+
467
+ ```bash
468
+ $ ruff format src/
469
+ $ ruff check --fix --unsafe-fixes src/
470
+ ```
471
471
 
472
472
  ## Сборка и распространение
473
473