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,129 +1,75 @@
1
1
  import os
2
2
  from datetime import (
3
- date,
4
3
  datetime,
5
4
  time,
6
5
  timedelta,
7
6
  )
8
7
  from typing import (
9
8
  TYPE_CHECKING,
10
- Any,
9
+ Iterable,
11
10
  Optional,
12
11
  Union,
13
12
  )
14
13
 
14
+ from _operator import (
15
+ attrgetter,
16
+ )
15
17
  from django.conf import (
16
18
  settings,
17
19
  )
18
20
  from django.db.models import (
19
- DateField,
20
21
  DateTimeField,
21
22
  Expression,
22
23
  F,
23
- )
24
- from django.db.models.expressions import (
25
24
  Func,
26
25
  )
27
26
  from django.db.models.functions import (
28
- Cast,
29
27
  Now,
30
28
  )
31
29
 
32
- from edu_rdm_integration.apps import (
33
- EduRDMIntegrationConfig,
30
+ from m3_db_utils.mixins import (
31
+ BaseEnumRegisterMixin,
34
32
  )
35
- from edu_rdm_integration.consts import (
33
+
34
+ from edu_rdm_integration.core.consts import (
36
35
  ACADEMIC_YEAR,
37
36
  )
38
37
 
39
38
 
40
39
  if TYPE_CHECKING:
41
- from typing import (
42
- NamedTuple,
43
- )
44
-
45
40
  from django.db.models import (
46
41
  Model,
47
42
  )
48
43
 
49
- from edu_rdm_integration.collect_and_export_data.models import (
50
- EduRdmCollectDataCommandProgress,
51
- EduRdmExportDataCommandProgress,
52
- )
53
- from edu_rdm_integration.helpers import (
44
+ from edu_rdm_integration.core.helpers import (
54
45
  Graph,
55
46
  )
56
- from edu_rdm_integration.models import (
57
- BaseEntityModel,
47
+ from edu_rdm_integration.stages.collect_data.models import (
48
+ EduRdmCollectDataCommandProgress,
58
49
  )
59
-
60
-
61
- def get_exporting_data_stage_attachment_path(instance, filename):
62
- """Возвращает путь до файла-вложения в этап выгрузки данных сущности.
63
-
64
- Args:
65
- instance: объект ExportingDataStage
66
- filename: имя загружаемого файла
67
-
68
- Returns:
69
- Строковое представление пути
70
- """
71
- datetime_now = datetime.now()
72
-
73
- return os.path.join(
74
- settings.UPLOADS,
75
- EduRDMIntegrationConfig.label,
76
- datetime_now.strftime('%Y/%m/%d'),
77
- instance.exporting_data_sub_stage.__class__.__name__.lower(),
78
- str(instance.exporting_data_sub_stage_id),
79
- str(instance.operation),
80
- filename,
50
+ from edu_rdm_integration.stages.export_data.models import (
51
+ EduRdmExportDataCommandProgress,
81
52
  )
82
53
 
83
54
 
84
- def update_fields(
85
- entity: 'BaseEntityModel',
86
- field_values: dict[str, Any],
87
- mapping: dict[str, str]
88
- ) -> None:
89
- """Обновление значений полей сущности по измененным полям модели.
90
-
91
- :param entity: Выгружаемая сущность
92
- :param field_values: Словарь с измененными данными модели
93
- :param mapping: Словарь маппинга полей модели к полям сущности
94
- """
95
- for model_field, entity_field in mapping.items():
96
- if model_field in field_values:
97
- setattr(entity, entity_field, field_values[model_field])
98
-
99
-
100
- def set_entity_field_by_model_object(
101
- entity: 'BaseEntityModel',
102
- model_object: Union['Model', 'NamedTuple'],
103
- mapping: dict[str, str]
104
- ) -> None:
105
- """Обновление значений полей сущности по измененным полям модели.
55
+ def register_classes(classes: Iterable[type[BaseEnumRegisterMixin]]) -> None:
56
+ """Вызывает метод регистрации в модель-перечисление у переданных классов.
106
57
 
107
58
  Args:
108
- entity: Выгружаемая сущность;
109
- model_object: Объект модели с измененными полями;
110
- mapping: Словарь маппинга полей модели к полям сущности
59
+ classes: Классы, поддерживающие интерфейс регистрации.
111
60
  """
112
- for model_field, entity_field in mapping.items():
113
- if hasattr(model_object, model_field):
114
- setattr(entity, entity_field, getattr(model_object, model_field))
61
+ classes = sorted(classes, key=attrgetter('order_number'))
115
62
 
116
-
117
- def get_isoformat_timezone():
118
- """Возвращает временную зонну в ISO представлении."""
119
- return datetime.now().astimezone().isoformat()[-6:]
63
+ for enum_class in classes:
64
+ enum_class.register()
120
65
 
121
66
 
122
67
  def split_by_academic_years(start_date: datetime, end_date: datetime) -> list[tuple]:
123
68
  """Разбивает исходный интервал из команды по учебным годам."""
124
69
  academic_year_end_date = datetime(
125
- start_date.year, ACADEMIC_YEAR['end_month'], ACADEMIC_YEAR['end_day'],
126
-
70
+ start_date.year,
71
+ ACADEMIC_YEAR['end_month'],
72
+ ACADEMIC_YEAR['end_day'],
127
73
  )
128
74
  if academic_year_end_date <= start_date:
129
75
  academic_year_end_date = datetime(
@@ -193,8 +139,8 @@ def split_interval_by_delta(start_date: datetime, end_date: datetime, days_delta
193
139
 
194
140
  def camel_to_underscore(name: str, upper=False) -> str:
195
141
  """Переводит строку из верблюжьего в змеиный регистр.
196
- По умолчанию строка приводится к нижнему регистру.
197
- Несколько заглавных букв не будут разъединены, кроме последней.
142
+
143
+ По умолчанию строка приводится к нижнему регистру. Несколько заглавных букв не будут разъединены, кроме последней.
198
144
 
199
145
  Args:
200
146
  name: форматируемая строка;
@@ -221,7 +167,7 @@ def camel_to_underscore(name: str, upper=False) -> str:
221
167
  if c.isupper() and not pc.isupper() and pc != '_':
222
168
  output.append('_')
223
169
  elif i > 3 and not c.isupper():
224
- previous = name[i - 3:i]
170
+ previous = name[i - 3 : i]
225
171
  if previous.isalpha() and previous.isupper():
226
172
  output.insert(len(output) - 1, '_')
227
173
 
@@ -275,8 +221,7 @@ def build_related_model_graph(
275
221
 
276
222
 
277
223
  def get_data_command_progress_attachment_path(
278
- instance: Union['EduRdmCollectDataCommandProgress', 'EduRdmExportDataCommandProgress'],
279
- filename: str
224
+ instance: Union['EduRdmCollectDataCommandProgress', 'EduRdmExportDataCommandProgress'], filename: str
280
225
  ) -> str:
281
226
  """Возвращает путь до файла-вложения при формировании команды сборки или выгрузки данных.
282
227
 
@@ -294,7 +239,7 @@ def get_data_command_progress_attachment_path(
294
239
  date_now.strftime('%Y/%m/%d'),
295
240
  instance.__class__.__name__.lower(),
296
241
  str(instance.type),
297
- filename
242
+ filename,
298
243
  )
299
244
 
300
245
 
@@ -304,7 +249,8 @@ class MakeInterval(Func):
304
249
  template = 'make_interval(%(expressions)s)'
305
250
 
306
251
  def __init__(
307
- self, *,
252
+ self,
253
+ *,
308
254
  years: Union[int, F] = 0,
309
255
  months: Union[int, F] = 0,
310
256
  weeks: Union[int, F] = 0,
@@ -344,11 +290,3 @@ def make_passed_datetime_from_today(
344
290
  now_expr = Now()
345
291
 
346
292
  return now_expr - MakeInterval(years=years, months=months, days=days)
347
-
348
-
349
- TODAY_EXPR: Union[date, Expression, F] = Cast(make_passed_datetime_from_today(), output_field=DateField())
350
-
351
- THREE_YEARS_AGO_DATE_EXPR: Union[date, Expression, F] = Cast(
352
- make_passed_datetime_from_today(years=3),
353
- output_field=DateField()
354
- )