edu-rdm-integration 3.2.7__py3-none-any.whl → 3.2.8__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.
@@ -1,3 +1,6 @@
1
+ from collections import (
2
+ defaultdict,
3
+ )
1
4
  from typing import (
2
5
  TYPE_CHECKING,
3
6
  Dict,
@@ -208,6 +211,7 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
208
211
  self._exporting_data_manager_to_period_end: Dict[str, 'datetime'] = {}
209
212
 
210
213
  self._transferred_entities = []
214
+ self._entites_models_map = defaultdict(list)
211
215
 
212
216
  def process(self, *args, **kwargs):
213
217
  """Выполняет задачу."""
@@ -222,15 +226,20 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
222
226
  pk=self.request.id,
223
227
  ).values_list('pk', flat=True).first()
224
228
 
225
- for entity_data in self._transferred_entities:
226
- for model_enum_value in entity_data['collected_models']:
227
- self._run_collect_model_data(model_enum_value.key, task_id)
229
+ collected_entity_models = set()
230
+
231
+ for entity_enum, export_enabled in sorted(
232
+ self._transferred_entities, key=lambda entity: entity[0].order_number
233
+ ):
234
+ entity_models = self._entites_models_map.get(entity_enum.key, ())
235
+ for model_enum_value in entity_models:
236
+ if model_enum_value.key not in collected_entity_models:
237
+ self._run_collect_model_data(model_enum_value.key, task_id)
238
+ collected_entity_models.add(model_enum_value.key)
228
239
 
229
- # Перехватывем ошибку экспорта для того, чтобы не останавливать сборку и экспорт остальных сущностей
230
240
  try:
231
- entity_enum_value = entity_data['exported_entity']
232
- if entity_enum_value:
233
- self._run_export_entity_data(entity_enum_value.key, task_id)
241
+ if export_enabled:
242
+ self._run_export_entity_data(entity_enum.key, task_id)
234
243
  except Exception:
235
244
  continue
236
245
 
@@ -255,24 +264,17 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
255
264
 
256
265
  def _collect_transferred_entities(self) -> None:
257
266
  """Собирает сущности РВД, по которым будет произведен сбор и экспорт данных."""
258
- entities = [
267
+ self._transferred_entities = [
259
268
  (RegionalDataMartEntityEnum.get_model_enum_value(key=entity), export_enabled)
260
269
  for entity, export_enabled in TransferredEntity.objects.values_list('entity', 'export_enabled')
261
270
  ]
262
- collected_entity_models = set()
263
- # Собираем словарь по сущностям с учетом порядка выгрузки
264
- for entity_enum, export_enabled in sorted(
265
- entities, key=lambda entity: entity[0].order_number):
266
- model_enums = [
267
- model_enum for model_enum in (entity_enum.main_model_enum, *entity_enum.additional_model_enums)
268
- if (model_enum not in collected_entity_models and model_enum.order_number != DEFAULT_ORDER_NUMBER)
269
- ]
270
- entity_data = {
271
- 'collected_models': model_enums,
272
- 'exported_entity': entity_enum if export_enabled else None,
273
- }
274
- self._transferred_entities.append(entity_data)
275
- collected_entity_models.update(model_enums)
271
+
272
+ # Собираем словарь по сущностям с моделями для сборки
273
+ for entity, _ in self._transferred_entities:
274
+ self._entites_models_map[entity.key].extend(
275
+ (model_enum for model_enum in (entity.main_model_enum, *entity.additional_model_enums)
276
+ if model_enum.order_number != DEFAULT_ORDER_NUMBER)
277
+ )
276
278
 
277
279
  def _collect_managers(self) -> None:
278
280
  """Собирает менеджеры Функций для сбора и выгрузки данных."""
@@ -286,17 +288,16 @@ class TransferLatestEntitiesDataPeriodicTask(UniquePeriodicAsyncTask):
286
288
  tags={REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA},
287
289
  )
288
290
 
289
- for transferred_entity in self._transferred_entities:
290
- for model in transferred_entity['collected_models']:
291
- collect_manager_class = collecting_models_data_managers_map.get(model.key)
291
+ for entity_key, entity_models in self._entites_models_map.items():
292
+ for entity_model in entity_models:
293
+ collect_manager_class = collecting_models_data_managers_map.get(entity_model.key)
292
294
  if collect_manager_class:
293
- self._collecting_data_managers[model.key] = collect_manager_class
295
+ self._collecting_data_managers[entity_model.key] = collect_manager_class
296
+
297
+ export_manager_class = exporting_entities_data_managers_map.get(entity_key)
298
+ if export_manager_class:
299
+ self._exporting_data_managers[entity_key] = export_manager_class
294
300
 
295
- entity = transferred_entity['exported_entity']
296
- if entity:
297
- export_manager_class = exporting_entities_data_managers_map.get(entity.key)
298
- if export_manager_class:
299
- self._exporting_data_managers[entity.key] = export_manager_class
300
301
 
301
302
  def _calculate_collecting_managers_logs_period_ended_at(self) -> None:
302
303
  """Определяет дату последнего успешного этапа сбора у менеджеров Функций сбора."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edu-rdm-integration
3
- Version: 3.2.7
3
+ Version: 3.2.8
4
4
  Summary: Интеграция с Региональной витриной данных
5
5
  Home-page:
6
6
  Download-URL:
@@ -301,6 +301,14 @@ Requires-Dist: uploader-client <1,>=0.2.1
301
301
 
302
302
  ### Удалено
303
303
 
304
+ ## 3.2.8 - 2024-08-02
305
+ Исправлена ошибка задвоения сборки и экспорта в периодической задаче TransferLatestEntitiesDataPeriodicTask.
306
+
307
+ ### Изменено
308
+ - [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
309
+ PATCH Исправлена ошибка задвоения сборки и экспорта в периодической задаче TransferLatestEntitiesDataPeriodicTask.
310
+
311
+
304
312
  ## 3.2.7 - 2024-07-31
305
313
  Исправлен файл MANIFEST.in для включения в сборку js-шаблонов.
306
314
 
@@ -308,6 +316,7 @@ Requires-Dist: uploader-client <1,>=0.2.1
308
316
  - [EDUSCHL-21965](https://jira.bars.group/browse/EDUSCHL-21965)
309
317
  PATCH Добавлено включение js-шаблонов в сборку в файл MANIFEST.in
310
318
 
319
+
311
320
  ## 3.2.6 - 2024-07-23
312
321
  Добавлен параметр export_off (Отключение экспорта для сущности) в модель TransferredEntity
313
322
  Изменен порядок запуска сбора и экспорта по сущностям в периодической задаче TransferLatestEntitiesDataPeriodicTask
@@ -325,6 +334,7 @@ Requires-Dist: uploader-client <1,>=0.2.1
325
334
  - [EDUSCHL-22070](https://jira.bars.group/browse/EDUSCHL-22070)
326
335
  PATCH Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
327
336
 
337
+
328
338
  ## 3.2.4 - 2024-07-16
329
339
  Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
330
340
 
@@ -11,7 +11,7 @@ edu_rdm_integration/mapping.py,sha256=bwa2fJCbV4YjQcAgRrgT3hgM6dJhr_uBtQgx3L3F2C
11
11
  edu_rdm_integration/models.py,sha256=Q6BxMUlKmqLBwoJFB0aefD9uE4F3D2fncFqTEKBsOSA,29612
12
12
  edu_rdm_integration/signals.py,sha256=3eRlpkDcFCF6TN80-QM8yBYLcyozzcmoPjz6r4_ApWg,73
13
13
  edu_rdm_integration/storages.py,sha256=o5WqUG7SnkeuMt-z8spUi-IraivST-7KHzfY-M3v7FA,6807
14
- edu_rdm_integration/tasks.py,sha256=fK4aRyYHexkgEzEd7_r0522EM8vYqh0KKzkmhRjcqmc,15505
14
+ edu_rdm_integration/tasks.py,sha256=sWIwzWs1ZjxQUpfbnX5Poi7TwJh8Q0E-c0MkZYCgSwg,15176
15
15
  edu_rdm_integration/utils.py,sha256=-my8q9fude6Nc9r_qUDww-8QaU2tcv-xOexewYqOPJw,10369
16
16
  edu_rdm_integration/adapters/__init__.py,sha256=cU0swn4Ny5ZQz5buWRcWsT1mpWuUFJaUlHf2l7TtEBo,83
17
17
  edu_rdm_integration/adapters/apps.py,sha256=TyJTkSPs2qAHJ11fqbwLGk3Ea7ujtqWwbxqmvYNQxG8,363
@@ -166,9 +166,9 @@ edu_rdm_integration/uploader_log/enums.py,sha256=rgSO3BL2rh2xpfm0Pt4waQW8fB1VMJL
166
166
  edu_rdm_integration/uploader_log/managers.py,sha256=y5wTSMzF9hpOpIU_A7nIafL_LBU3QEie6LAYWoB-pBQ,3203
167
167
  edu_rdm_integration/uploader_log/ui.py,sha256=YM9Buqp2wxE95Wf5gvAATBzuYzDOossK1sEmvFk07cI,2110
168
168
  edu_rdm_integration/uploader_log/templates/ui-js/object-grid-buttons.js,sha256=2xyGe0wdVokM0RhpzRzcRvJPBkBmPe3SlZry4oP4Nzs,6201
169
- edu_rdm_integration-3.2.7.dist-info/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
170
- edu_rdm_integration-3.2.7.dist-info/METADATA,sha256=g7Cff01IboSXv0-TVs9LvL_ZYnzGHYhVDy5iVivshSM,67821
171
- edu_rdm_integration-3.2.7.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
172
- edu_rdm_integration-3.2.7.dist-info/namespace_packages.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
173
- edu_rdm_integration-3.2.7.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
174
- edu_rdm_integration-3.2.7.dist-info/RECORD,,
169
+ edu_rdm_integration-3.2.8.dist-info/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
170
+ edu_rdm_integration-3.2.8.dist-info/METADATA,sha256=Ts7QmTHgVR_PzXvUkyWyU6RDHdc-CDl-V8svZCKpHM4,68279
171
+ edu_rdm_integration-3.2.8.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
172
+ edu_rdm_integration-3.2.8.dist-info/namespace_packages.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
173
+ edu_rdm_integration-3.2.8.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
174
+ edu_rdm_integration-3.2.8.dist-info/RECORD,,