edu-rdm-integration 3.9.0__py3-none-any.whl → 3.9.2__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.
@@ -73,13 +73,14 @@ class EntityEnumRegisterMixin(BaseEnumRegisterMixin):
73
73
 
74
74
  # TODO EDUSCHL-20938 Удалить в рамках задачи
75
75
  @classmethod
76
- def get_additional_model_enums(cls) -> Optional[tuple[ModelEnumValue]]:
76
+ def get_additional_model_enums(cls) -> tuple[ModelEnumValue, ...]:
77
77
  """Возвращает кортеж значений модели-перечисления основной модели сущности.
78
78
 
79
79
  В классе определяется поле additional_model_enums или данный метод.
80
80
 
81
81
  !!! Временное решение. Будет удалено в рамках EDUSCHL-20938.
82
82
  """
83
+ return ()
83
84
 
84
85
 
85
86
  class ModelEnumRegisterMixin(BaseEnumRegisterMixin):
@@ -28,6 +28,7 @@ from django.db.models.base import (
28
28
  )
29
29
  from django.db.models.functions import (
30
30
  Concat,
31
+ Substr,
31
32
  )
32
33
  from django.db.transaction import (
33
34
  atomic,
@@ -131,9 +132,7 @@ class BaseExportEntitiesData(BaseOperationData):
131
132
 
132
133
  @property
133
134
  def _log_file_path(self) -> str:
134
- """
135
- Путь до лог файла.
136
- """
135
+ """Путь до лог файла."""
137
136
  return os.path.join(settings.MEDIA_ROOT, settings.RDM_EXPORT_LOG_DIR, f'{self.command_id}.log')
138
137
 
139
138
  def _has_stage_created_or_in_progress(self, manager_id: str, entity: str) -> bool:
@@ -149,14 +148,10 @@ class BaseExportEntitiesData(BaseOperationData):
149
148
  return stage_created_or_in_progress
150
149
 
151
150
  def _fill_manager_entities_map(self, entity_storage: RegionalDataMartEntityStorage) -> None:
152
- """
153
- Заполнение словаря данных с классами менеджеров и их сущностями.
154
- """
151
+ """Заполнение словаря данных с классами менеджеров и их сущностями."""
155
152
 
156
153
  def _find_exporting_entities_data_managers(self):
157
- """
158
- Поиск менеджеров Функций выгрузки данных по сущностям РВД.
159
- """
154
+ """Поиск менеджеров Функций выгрузки данных по сущностям РВД."""
160
155
  logger.info('find exporting entities data manager..')
161
156
 
162
157
  entity_storage = RegionalDataMartEntityStorage()
@@ -179,9 +174,7 @@ class BaseExportEntitiesData(BaseOperationData):
179
174
  logger.info('finding exporting entities data manager finished.')
180
175
 
181
176
  def _export_entities_data(self, *args, **kwargs):
182
- """
183
- Выгрузка данных по указанным сущностям.
184
- """
177
+ """Выгрузка данных по указанным сущностям."""
185
178
  logger.info('start exporting entities data..')
186
179
 
187
180
  kwargs['period_started_at'] = self.period_started_at
@@ -201,9 +194,7 @@ class BaseExportEntitiesData(BaseOperationData):
201
194
  logger.info('exporting entities data finished.')
202
195
 
203
196
  def _export(self, *args, **kwargs):
204
- """
205
- Выполнение действий команды.
206
- """
197
+ """Выполнение действий команды."""
207
198
  logger.info(f'start exporting data of entities - {", ".join([entity.key for entity in self.entities])}..')
208
199
 
209
200
  self._find_exporting_entities_data_managers()
@@ -212,9 +203,7 @@ class BaseExportEntitiesData(BaseOperationData):
212
203
  logger.info('exporting entities data finished.')
213
204
 
214
205
  def export(self, *args, **kwargs):
215
- """
216
- Запускает экспорт данных.
217
- """
206
+ """Запускает экспорт данных."""
218
207
  try:
219
208
  self._export(*args, **kwargs)
220
209
  except Exception as err:
@@ -254,19 +243,18 @@ class BaseExportLatestEntitiesData(BaseExportEntitiesData):
254
243
  def _set_description_to_async_task(self, exported_entities: Iterable[str]) -> None:
255
244
  """Добавляет в описание асинхронной задачи список выгруженных сущностей."""
256
245
  if exported_entities and self.task_id:
257
- self.async_task.objects.filter(
258
- pk=self.task_id,
259
- ).update(
260
- description=Concat(
261
- 'description',
262
- Value(f': {", ".join(exported_entities)}')
263
- ),
246
+ entities_str = ', '.join(exported_entities)
247
+
248
+ self.async_task.objects.filter(pk=self.task_id).update(
249
+ description=Substr(
250
+ Concat('description', Value(f': {entities_str}')),
251
+ 1,
252
+ self.async_task._meta.get_field('description').max_length
253
+ )
264
254
  )
265
255
 
266
256
  def _fill_manager_entities_map(self, entity_storage: RegionalDataMartEntityStorage) -> None:
267
- """
268
- Заполнение словаря данных с классами менеджеров и их сущностями.
269
- """
257
+ """Заполнение словаря данных с классами менеджеров и их сущностями."""
270
258
  self._manager_entities_map = entity_storage.prepare_manager_entities_map(
271
259
  tags={REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA},
272
260
  )
@@ -300,7 +288,6 @@ class BaseExportLatestEntitiesData(BaseExportEntitiesData):
300
288
  not_exported_model_ids = queryset.values_list('id', flat=True).iterator()
301
289
 
302
290
  with atomic():
303
-
304
291
  for model_ids in make_chunks(
305
292
  iterable=not_exported_model_ids,
306
293
  size=settings.RDM_UPDATE_NON_EXPORTED_CHUNK_SIZE,
@@ -308,17 +295,13 @@ class BaseExportLatestEntitiesData(BaseExportEntitiesData):
308
295
  queryset.filter(id__in=model_ids).update(modified=now)
309
296
 
310
297
  def _export_entities_data(self, *args, **kwargs) -> None:
311
- """
312
- Запуск Функций по для экспорта данных.
313
- """
298
+ """Запуск Функций по для экспорта данных."""
314
299
  logger.info('export entities data..')
315
300
 
316
301
  # Массив с выгружаемыми сущностями для поля "Описание" в асинхронной задаче
317
302
  exported_entities = []
318
303
 
319
- managers_max_period_ended = get_exporting_managers_max_period_ended_dates(
320
- self._exporting_data_managers
321
- )
304
+ managers_max_period_ended = get_exporting_managers_max_period_ended_dates(self._exporting_data_managers)
322
305
 
323
306
  for manager_class in self._exporting_data_managers:
324
307
  manager_last_exported = managers_max_period_ended.get(manager_class.uuid)
@@ -381,19 +364,16 @@ class UploadData(BaseOperationData):
381
364
  self.result = {
382
365
  'total_file_size': 0, # Общий размер отправленных файлов
383
366
  'queue_is_full': False, # Признак переполнения очереди
384
- 'uploaded_entities': '' # Список сущностей, попавших в выгрузку
367
+ 'uploaded_entities': '', # Список сущностей, попавших в выгрузку
385
368
  }
386
369
 
387
370
  @property
388
371
  def _log_file_path(self) -> Union[str, bytes]:
389
- """
390
- Путь до лог файла.
391
- """
372
+ """Путь до лог файла."""
392
373
  return os.path.join(settings.MEDIA_ROOT, settings.RDM_UPLOAD_LOG_DIR, 'upload_entity.log')
393
374
 
394
375
  def _add_file_handler(self) -> None:
395
376
  """Добавляет обработчик логов."""
396
-
397
377
  self._file_handler = logging.FileHandler(self._log_file_path)
398
378
 
399
379
  logging.getLogger('info_logger').addHandler(self._file_handler)
@@ -402,9 +382,7 @@ class UploadData(BaseOperationData):
402
382
  # TODO https://jira.bars.group/browse/EDUSCHL-22492. Вынужденная мера, т.к. при запуске команды не производится
403
383
  # проверка готовности конфигов приложений. Нужно переработать механизм конфигурирования клиента загрузчика.
404
384
  def _configure_agent_client(self):
405
- """
406
- Конфигурирование клиента загрузчика данных в Витрину.
407
- """
385
+ """Конфигурирование клиента загрузчика данных в Витрину."""
408
386
  import uploader_client
409
387
  from django.core.cache import (
410
388
  DEFAULT_CACHE_ALIAS,
@@ -414,6 +392,7 @@ class UploadData(BaseOperationData):
414
392
  RegionalDataMartEmulationUploaderConfig,
415
393
  RegionalDataMartUploaderConfig,
416
394
  )
395
+
417
396
  if settings.RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION:
418
397
  uploader_client.set_config(
419
398
  RegionalDataMartEmulationUploaderConfig(
@@ -422,7 +401,7 @@ class UploadData(BaseOperationData):
422
401
  datamart_name=settings.RDM_UPLOADER_CLIENT_DATAMART_NAME,
423
402
  timeout=1,
424
403
  request_retries=1,
425
- file_status=settings.RDM_RESPONSE_FILE_STATUS
404
+ file_status=settings.RDM_RESPONSE_FILE_STATUS,
426
405
  )
427
406
  )
428
407
  elif settings.RDM_UPLOADER_CLIENT_USE_PROXY_API:
@@ -461,13 +440,11 @@ class UploadData(BaseOperationData):
461
440
  self.data_cache.set(
462
441
  TOTAL_ATTACHMENTS_SIZE_KEY,
463
442
  queue_total_file_size,
464
- timeout=settings.RDM_REDIS_CACHE_TIMEOUT_SECONDS
443
+ timeout=settings.RDM_REDIS_CACHE_TIMEOUT_SECONDS,
465
444
  )
466
445
 
467
446
  def upload_data(self, *args, **kwargs):
468
- """
469
- Запускает отправку данных в витрину.
470
- """
447
+ """Запускает отправку данных в витрину."""
471
448
  try:
472
449
  exporter = ExportQueueSender(self.data_cache, self.queue, settings.RDM_UPLOAD_DATA_TASK_EXPORT_STAGES)
473
450
  exporter.run()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edu-rdm-integration
3
- Version: 3.9.0
3
+ Version: 3.9.2
4
4
  Summary: Интеграция с Региональной витриной данных
5
5
  Author-email: BARS Group <education_dev@bars.group>
6
6
  Project-URL: Homepage, https://stash.bars-open.ru/projects/EDUBASE/repos/edu_rdm_integration/browse
@@ -90,13 +90,13 @@ edu_rdm_integration/collect_data/non_calculated/base/strings.py,sha256=-k9dex8A7
90
90
  edu_rdm_integration/collect_data/non_calculated/base/tests.py,sha256=MoRY-a75Ow-7EjeQYxkXWunwqTGuBMaUyEkEV2oy05I,59
91
91
  edu_rdm_integration/collect_data/non_calculated/base/validators.py,sha256=0YvnfrfK1iFcZVSB-M-Xv82tIjYxEU_BwLofAEuGVW4,973
92
92
  edu_rdm_integration/enum_register/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
- edu_rdm_integration/enum_register/mixins.py,sha256=lry5JDGIleBCcOqsfX0sVOqwnnSV2Jlb4T2heD-xg54,4621
93
+ edu_rdm_integration/enum_register/mixins.py,sha256=aANcwvx4Y9MrtoIt3lds5f1FSkdwgUEKpnW9VJmSq1w,4634
94
94
  edu_rdm_integration/enum_register/register.py,sha256=jb16O7TZDGVRo5NwWqyY_rcbBxOncYeOoSq6UAbTf48,2208
95
95
  edu_rdm_integration/export_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
96
  edu_rdm_integration/export_data/actions.py,sha256=z3qMJJbgsiOCW8A_Ac5ThVBijK4dU_8VuOGrxEBNKso,10377
97
97
  edu_rdm_integration/export_data/consts.py,sha256=ZEi1kXMs-54KFKxkyGIQVwZ4d8OrOF_vLFQIjjWdSPQ,441
98
98
  edu_rdm_integration/export_data/dataclasses.py,sha256=IhftRopP4lS-m3ygdBU5Bz0HF71VSBP4JQ6-8VIVgtY,260
99
- edu_rdm_integration/export_data/export.py,sha256=qKvFRTcy2ZgaBMn6mEi_OsueNXZ7j_v2neu2Lu99MEs,19447
99
+ edu_rdm_integration/export_data/export.py,sha256=kL4d7KR3K7Vdr8f6AREihi10zfNuuawgMAZ5p770O0M,19340
100
100
  edu_rdm_integration/export_data/export_manager.py,sha256=ySAbrIiVo690HXGsEC_nxhF5FHCRl18rm5E4Ytr50VU,13285
101
101
  edu_rdm_integration/export_data/generators.py,sha256=UIoX49rQnUwwC9PL17te7Rb4WRDe_5ShYQ1Rygf36NQ,4010
102
102
  edu_rdm_integration/export_data/helpers.py,sha256=JKL4MC0IuoJv72NNnL8hG7HLy7kNHOXFp1uLCKF15AM,2900
@@ -191,8 +191,8 @@ edu_rdm_integration/uploader_log/enums.py,sha256=rgSO3BL2rh2xpfm0Pt4waQW8fB1VMJL
191
191
  edu_rdm_integration/uploader_log/managers.py,sha256=OFdToWV8qhdfeGNpd-UWAmSEISzixmVQ6LF75EW7gzA,3248
192
192
  edu_rdm_integration/uploader_log/ui.py,sha256=7O63XJJYnJBLVU9aGuSyMOxFYtcj_Kyf5u6HIiuxl9A,1788
193
193
  edu_rdm_integration/uploader_log/templates/ui-js/object-grid-buttons.js,sha256=2xyGe0wdVokM0RhpzRzcRvJPBkBmPe3SlZry4oP4Nzs,6201
194
- edu_rdm_integration-3.9.0.dist-info/licenses/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
195
- edu_rdm_integration-3.9.0.dist-info/METADATA,sha256=ukP5puX-wO0lxJqlzpaKQw8zsyG2rH7KDNZPSzql5J4,35263
196
- edu_rdm_integration-3.9.0.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
197
- edu_rdm_integration-3.9.0.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
198
- edu_rdm_integration-3.9.0.dist-info/RECORD,,
194
+ edu_rdm_integration-3.9.2.dist-info/licenses/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
195
+ edu_rdm_integration-3.9.2.dist-info/METADATA,sha256=GQWJCXP_NB6n9u7nzyctdaY3WjBMJPgRpukgjniFwxY,35263
196
+ edu_rdm_integration-3.9.2.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
197
+ edu_rdm_integration-3.9.2.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
198
+ edu_rdm_integration-3.9.2.dist-info/RECORD,,