edu-rdm-integration 3.5.4__py3-none-any.whl → 3.5.6__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.
- edu_rdm_integration/app_settings.py +3 -1
- edu_rdm_integration/apps.py +3 -1
- edu_rdm_integration/consts.py +1 -0
- edu_rdm_integration/export_data/export.py +22 -12
- edu_rdm_integration/export_data/{export_manger.py → export_manager.py} +54 -0
- edu_rdm_integration/helpers.py +11 -1
- edu_rdm_integration/management/commands/check_upload_status.py +4 -2
- edu_rdm_integration/migrations/0015_set_exporting_sub_stage_status.py +25 -0
- edu_rdm_integration/models.py +4 -1
- edu_rdm_integration/uploader_log/managers.py +2 -1
- {edu_rdm_integration-3.5.4.dist-info → edu_rdm_integration-3.5.6.dist-info}/METADATA +27 -2
- {edu_rdm_integration-3.5.4.dist-info → edu_rdm_integration-3.5.6.dist-info}/RECORD +16 -15
- {edu_rdm_integration-3.5.4.dist-info → edu_rdm_integration-3.5.6.dist-info}/LICENSE +0 -0
- {edu_rdm_integration-3.5.4.dist-info → edu_rdm_integration-3.5.6.dist-info}/WHEEL +0 -0
- {edu_rdm_integration-3.5.4.dist-info → edu_rdm_integration-3.5.6.dist-info}/namespace_packages.txt +0 -0
- {edu_rdm_integration-3.5.4.dist-info → edu_rdm_integration-3.5.6.dist-info}/top_level.txt +0 -0
@@ -59,4 +59,6 @@ RDM_UPLOAD_DATA_TASK_HOUR = '*/2'
|
|
59
59
|
RDM_UPLOAD_DATA_TASK_DAY_OF_WEEK = '*'
|
60
60
|
RDM_UPLOAD_DATA_TASK_LOCK_EXPIRE_SECONDS = 60 * 60 * 2
|
61
61
|
# Количество подэтапов для обработки в периодической задаче отправки данных
|
62
|
-
RDM_UPLOAD_DATA_TASK_EXPORT_STAGES = 500
|
62
|
+
RDM_UPLOAD_DATA_TASK_EXPORT_STAGES = 500
|
63
|
+
|
64
|
+
RDM_RESPONSE_FILE_STATUS = 'success'
|
edu_rdm_integration/apps.py
CHANGED
@@ -38,16 +38,18 @@ class EduRDMIntegrationConfig(AppConfig):
|
|
38
38
|
)
|
39
39
|
from uploader_client.contrib.rdm.interfaces.configurations import (
|
40
40
|
RegionalDataMartUploaderConfig,
|
41
|
+
RegionalDataMartEmulationUploaderConfig,
|
41
42
|
)
|
42
43
|
|
43
44
|
if settings.RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION:
|
44
45
|
uploader_client.set_config(
|
45
|
-
|
46
|
+
RegionalDataMartEmulationUploaderConfig(
|
46
47
|
interface='uploader_client.contrib.rdm.interfaces.rest.OpenAPIInterfaceEmulation',
|
47
48
|
url=settings.RDM_UPLOADER_CLIENT_URL,
|
48
49
|
datamart_name=settings.RDM_UPLOADER_CLIENT_DATAMART_NAME,
|
49
50
|
timeout=1,
|
50
51
|
request_retries=1,
|
52
|
+
file_status=settings.RDM_RESPONSE_FILE_STATUS
|
51
53
|
)
|
52
54
|
)
|
53
55
|
elif settings.RDM_UPLOADER_CLIENT_USE_PROXY_API:
|
edu_rdm_integration/consts.py
CHANGED
@@ -64,10 +64,10 @@ from edu_rdm_integration.base import (
|
|
64
64
|
from edu_rdm_integration.consts import (
|
65
65
|
REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA,
|
66
66
|
)
|
67
|
-
from edu_rdm_integration.
|
68
|
-
|
67
|
+
from edu_rdm_integration.export_data.consts import (
|
68
|
+
TOTAL_ATTACHMENTS_SIZE_KEY,
|
69
69
|
)
|
70
|
-
from edu_rdm_integration.export_data.
|
70
|
+
from edu_rdm_integration.export_data.export_manager import (
|
71
71
|
ExportQueueSender,
|
72
72
|
WorkerSender,
|
73
73
|
)
|
@@ -294,14 +294,6 @@ class BaseExportLatestEntitiesData(BaseExportEntitiesData):
|
|
294
294
|
modified__gt=F('exporting_sub_stage__ended_at'),
|
295
295
|
modified__lt=last_finished_export_data,
|
296
296
|
),
|
297
|
-
# Связь лога подэтапа выгрузки с логом загрузки данных (ExportingDataSubStageUploaderClientLog)
|
298
|
-
# имеет статус FileUploadStatusEnum.ERROR:
|
299
|
-
model.objects.filter(
|
300
|
-
exporting_sub_stage__ended_at__gt=now - timedelta(days=365),
|
301
|
-
exporting_sub_stage__exportingdatasubstageuploaderclientlog__created__lt=last_finished_export_data,
|
302
|
-
exporting_sub_stage__exportingdatasubstageuploaderclientlog__file_upload_status=(
|
303
|
-
FileUploadStatusEnum.ERROR),
|
304
|
-
),
|
305
297
|
)
|
306
298
|
|
307
299
|
for queryset in querysets_to_update:
|
@@ -419,16 +411,18 @@ class UploadData(BaseOperationData):
|
|
419
411
|
caches,
|
420
412
|
)
|
421
413
|
from uploader_client.contrib.rdm.interfaces.configurations import (
|
414
|
+
RegionalDataMartEmulationUploaderConfig,
|
422
415
|
RegionalDataMartUploaderConfig,
|
423
416
|
)
|
424
417
|
if settings.RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION:
|
425
418
|
uploader_client.set_config(
|
426
|
-
|
419
|
+
RegionalDataMartEmulationUploaderConfig(
|
427
420
|
interface='uploader_client.contrib.rdm.interfaces.rest.OpenAPIInterfaceEmulation',
|
428
421
|
url=settings.RDM_UPLOADER_CLIENT_URL,
|
429
422
|
datamart_name=settings.RDM_UPLOADER_CLIENT_DATAMART_NAME,
|
430
423
|
timeout=1,
|
431
424
|
request_retries=1,
|
425
|
+
file_status=settings.RDM_RESPONSE_FILE_STATUS
|
432
426
|
)
|
433
427
|
)
|
434
428
|
elif settings.RDM_UPLOADER_CLIENT_USE_PROXY_API:
|
@@ -457,6 +451,19 @@ class UploadData(BaseOperationData):
|
|
457
451
|
)
|
458
452
|
)
|
459
453
|
|
454
|
+
def update_total_queue_size_in_cache(self, received_files_size: int):
|
455
|
+
"""Обновление размера файлов в кеш."""
|
456
|
+
with self.data_cache.lock(f'{TOTAL_ATTACHMENTS_SIZE_KEY}:lock', timeout=300):
|
457
|
+
queue_total_file_size = self.data_cache.get(TOTAL_ATTACHMENTS_SIZE_KEY) or 0
|
458
|
+
if queue_total_file_size:
|
459
|
+
queue_total_file_size -= received_files_size
|
460
|
+
if queue_total_file_size > 0:
|
461
|
+
self.data_cache.set(
|
462
|
+
TOTAL_ATTACHMENTS_SIZE_KEY,
|
463
|
+
queue_total_file_size,
|
464
|
+
timeout=settings.RDM_REDIS_CACHE_TIMEOUT_SECONDS
|
465
|
+
)
|
466
|
+
|
460
467
|
def upload_data(self, *args, **kwargs):
|
461
468
|
"""
|
462
469
|
Запускает отправку данных в витрину.
|
@@ -476,6 +483,9 @@ class UploadData(BaseOperationData):
|
|
476
483
|
if sender.entities:
|
477
484
|
self.result['uploaded_entities'] = ','.join(sender.entities)
|
478
485
|
|
486
|
+
if sender.received_file_size:
|
487
|
+
self.update_total_queue_size_in_cache(sender.received_file_size)
|
488
|
+
|
479
489
|
except Exception as err:
|
480
490
|
logger.exception(err)
|
481
491
|
raise err
|
@@ -2,6 +2,8 @@ from pathlib import (
|
|
2
2
|
Path,
|
3
3
|
)
|
4
4
|
from typing import (
|
5
|
+
TYPE_CHECKING,
|
6
|
+
Any,
|
5
7
|
Iterable,
|
6
8
|
Optional,
|
7
9
|
)
|
@@ -48,11 +50,17 @@ from edu_rdm_integration.export_data.dataclasses import (
|
|
48
50
|
from edu_rdm_integration.export_data.queue import (
|
49
51
|
Queue,
|
50
52
|
)
|
53
|
+
from edu_rdm_integration.helpers import (
|
54
|
+
FAILED_STATUS,
|
55
|
+
UploadStatusHelper,
|
56
|
+
)
|
51
57
|
from edu_rdm_integration.models import (
|
58
|
+
DataMartRequestStatus,
|
52
59
|
ExportingDataSubStage,
|
53
60
|
ExportingDataSubStageAttachment,
|
54
61
|
ExportingDataSubStageStatus,
|
55
62
|
ExportingDataSubStageUploaderClientLog,
|
63
|
+
UploadStatusRequestLog,
|
56
64
|
)
|
57
65
|
from edu_rdm_integration.redis_cache import (
|
58
66
|
AbstractCache,
|
@@ -184,6 +192,31 @@ class WorkerSender:
|
|
184
192
|
def __init__(self, queue: Queue):
|
185
193
|
self.queue = queue
|
186
194
|
self.entities = set()
|
195
|
+
self.received_file_size = 0
|
196
|
+
|
197
|
+
def get_file_upload_status(self, request_id: str) -> tuple[Optional[int], Optional[DataMartRequestStatus], 'Entry']:
|
198
|
+
"""Возвращает статус файла в витрине по запросу."""
|
199
|
+
file_upload_status = None
|
200
|
+
|
201
|
+
response, log_entry = UploadStatusHelper.send_upload_status_request(request_id)
|
202
|
+
request_status = None
|
203
|
+
|
204
|
+
if response:
|
205
|
+
request_status = DataMartRequestStatus.get_values_to_enum_data().get(response.get('code'))
|
206
|
+
|
207
|
+
if not request_status:
|
208
|
+
logger.error(
|
209
|
+
'Не удалось определить статус загрузки данных в витрину. Идентификатор загрузки: '
|
210
|
+
f'{request_id}, данные ответа: {response}',
|
211
|
+
)
|
212
|
+
|
213
|
+
if request_status in FAILED_STATUS:
|
214
|
+
file_upload_status = FileUploadStatusEnum.ERROR
|
215
|
+
|
216
|
+
elif request_status == DataMartRequestStatus.SUCCESSFULLY_PROCESSED:
|
217
|
+
file_upload_status = FileUploadStatusEnum.FINISHED
|
218
|
+
|
219
|
+
return file_upload_status, request_status, log_entry
|
187
220
|
|
188
221
|
def send_files(self):
|
189
222
|
"""Отправка файлов."""
|
@@ -194,6 +227,7 @@ class WorkerSender:
|
|
194
227
|
return
|
195
228
|
|
196
229
|
result_to_save = []
|
230
|
+
upload_status_requests_to_save = []
|
197
231
|
errors = []
|
198
232
|
status = ExportingDataSubStageStatus.FINISHED.key
|
199
233
|
for file in upload_files:
|
@@ -241,6 +275,25 @@ class WorkerSender:
|
|
241
275
|
file_upload_status=file_upload_status,
|
242
276
|
is_emulation=settings.RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION,
|
243
277
|
)
|
278
|
+
|
279
|
+
if request_id:
|
280
|
+
updated_file_upload_status, request_status, log_entry = self.get_file_upload_status(request_id)
|
281
|
+
upload_status_requests_to_save.append(
|
282
|
+
UploadStatusRequestLog(
|
283
|
+
upload=sub_stage_uploader_client_log,
|
284
|
+
entry=log_entry,
|
285
|
+
request_status_id=getattr(request_status, 'key', None),
|
286
|
+
)
|
287
|
+
)
|
288
|
+
if updated_file_upload_status and updated_file_upload_status != file_upload_status:
|
289
|
+
sub_stage_uploader_client_log.file_upload_status = updated_file_upload_status
|
290
|
+
|
291
|
+
if updated_file_upload_status == FileUploadStatusEnum.FINISHED:
|
292
|
+
self.received_file_size += file.attachment_size
|
293
|
+
|
294
|
+
if updated_file_upload_status == FileUploadStatusEnum.ERROR:
|
295
|
+
status = ExportingDataSubStageStatus.PROCESS_ERROR.key
|
296
|
+
|
244
297
|
result_to_save.append(sub_stage_uploader_client_log)
|
245
298
|
if result.error:
|
246
299
|
logger.warning(
|
@@ -258,6 +311,7 @@ class WorkerSender:
|
|
258
311
|
# Сохраняем информацию об отправке файлов и убираем подэтап с файлами из очереди
|
259
312
|
with atomic():
|
260
313
|
ExportingDataSubStageUploaderClientLog.objects.bulk_create(result_to_save)
|
314
|
+
UploadStatusRequestLog.objects.bulk_create(upload_status_requests_to_save)
|
261
315
|
sub_stage.status_id = status
|
262
316
|
sub_stage.save()
|
263
317
|
|
edu_rdm_integration/helpers.py
CHANGED
@@ -56,6 +56,7 @@ from edu_rdm_integration.models import (
|
|
56
56
|
DataMartRequestStatus,
|
57
57
|
ExportingDataStage,
|
58
58
|
ExportingDataStageStatus,
|
59
|
+
ExportingDataSubStageStatus,
|
59
60
|
ExportingDataSubStageUploaderClientLog,
|
60
61
|
UploadDataCommand,
|
61
62
|
UploadStatusRequestLog,
|
@@ -82,6 +83,13 @@ if TYPE_CHECKING:
|
|
82
83
|
)
|
83
84
|
|
84
85
|
|
86
|
+
FAILED_STATUSES = {
|
87
|
+
DataMartRequestStatus.FAILED_PROCESSING,
|
88
|
+
DataMartRequestStatus.REQUEST_ID_NOT_FOUND,
|
89
|
+
DataMartRequestStatus.FLC_ERROR
|
90
|
+
}
|
91
|
+
|
92
|
+
|
85
93
|
class UploadStatusHelper:
|
86
94
|
"""Хелпер проверки статуса загрузки данных в витрину."""
|
87
95
|
|
@@ -160,8 +168,10 @@ class UploadStatusHelper:
|
|
160
168
|
request_status_id=getattr(request_status, 'key', None),
|
161
169
|
)
|
162
170
|
|
163
|
-
if request_status in
|
171
|
+
if request_status in FAILED_STATUSES:
|
164
172
|
upload.file_upload_status = FileUploadStatusEnum.ERROR
|
173
|
+
upload.sub_stage.status_id = ExportingDataSubStageStatus.PROCESS_ERROR.key
|
174
|
+
upload.sub_stage.save()
|
165
175
|
|
166
176
|
elif request_status == DataMartRequestStatus.SUCCESSFULLY_PROCESSED:
|
167
177
|
upload.file_upload_status = FileUploadStatusEnum.FINISHED
|
@@ -18,7 +18,9 @@ from typing import (
|
|
18
18
|
TYPE_CHECKING,
|
19
19
|
Any,
|
20
20
|
)
|
21
|
-
|
21
|
+
from django.core.cache import (
|
22
|
+
cache,
|
23
|
+
)
|
22
24
|
from django.core.management.base import (
|
23
25
|
BaseCommand,
|
24
26
|
)
|
@@ -94,4 +96,4 @@ class Command(BaseCommand):
|
|
94
96
|
file_upload_status=FileUploadStatusEnum.IN_PROGRESS,
|
95
97
|
)
|
96
98
|
|
97
|
-
UploadStatusHelper(in_progress_attachment_uploads).run(thread_count=thread_count)
|
99
|
+
UploadStatusHelper(in_progress_attachment_uploads, cache).run(thread_count=thread_count)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Generated by Django 3.2.24 on 2025-02-14 15:49
|
2
|
+
|
3
|
+
from django.db import (
|
4
|
+
migrations,
|
5
|
+
)
|
6
|
+
|
7
|
+
|
8
|
+
def add_exporting_data_sub_stage_status(apps, schema_editor):
|
9
|
+
"""Добавление нового статуса этапу выгрузки данных."""
|
10
|
+
ExportingDataSubStageStatus = apps.get_model('edu_rdm_integration', 'ExportingDataSubStageStatus') # noqa: N806
|
11
|
+
ExportingDataSubStageStatus.objects.get_or_create(
|
12
|
+
key='PROCESS_ERROR',
|
13
|
+
title='Ошибка обработки витриной'
|
14
|
+
)
|
15
|
+
|
16
|
+
|
17
|
+
class Migration(migrations.Migration):
|
18
|
+
|
19
|
+
dependencies = [
|
20
|
+
('edu_rdm_integration', '0014_uploaddatacommand'),
|
21
|
+
]
|
22
|
+
|
23
|
+
operations = [
|
24
|
+
migrations.RunPython(add_exporting_data_sub_stage_status, reverse_code=migrations.RunPython.noop),
|
25
|
+
]
|
edu_rdm_integration/models.py
CHANGED
@@ -18,13 +18,13 @@ from django.db.models import (
|
|
18
18
|
DateTimeField,
|
19
19
|
FileField,
|
20
20
|
ForeignKey,
|
21
|
+
JSONField,
|
21
22
|
Manager,
|
22
23
|
OneToOneField,
|
23
24
|
PositiveIntegerField,
|
24
25
|
PositiveSmallIntegerField,
|
25
26
|
SmallIntegerField,
|
26
27
|
UUIDField,
|
27
|
-
JSONField,
|
28
28
|
)
|
29
29
|
from django.utils import (
|
30
30
|
timezone,
|
@@ -370,6 +370,9 @@ class ExportingDataSubStageStatus(TitledModelEnum):
|
|
370
370
|
READY_FOR_EXPORT = ModelEnumValue(
|
371
371
|
title='Готов к выгрузке',
|
372
372
|
)
|
373
|
+
PROCESS_ERROR = ModelEnumValue(
|
374
|
+
title='Ошибка обработки витриной'
|
375
|
+
)
|
373
376
|
|
374
377
|
class Meta:
|
375
378
|
db_table = 'rdm_exporting_data_sub_stage_status'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: edu-rdm-integration
|
3
|
-
Version: 3.5.
|
3
|
+
Version: 3.5.6
|
4
4
|
Summary: Интеграция с Региональной витриной данных
|
5
5
|
Home-page:
|
6
6
|
Download-URL:
|
@@ -31,7 +31,7 @@ Requires-Dist: educommon <4,>=3.11.0
|
|
31
31
|
Requires-Dist: function-tools <1,>=0.9.0
|
32
32
|
Requires-Dist: m3-db-utils <1,>=0.3.10
|
33
33
|
Requires-Dist: m3-django-compat <2,>=1.10.2
|
34
|
-
Requires-Dist: uploader-client <1,>=0.2.
|
34
|
+
Requires-Dist: uploader-client <1,>=0.2.3
|
35
35
|
|
36
36
|
# Проект "Интеграция с Региональной витриной данных (РВД)"
|
37
37
|
|
@@ -300,6 +300,31 @@ Requires-Dist: uploader-client <1,>=0.2.1
|
|
300
300
|
|
301
301
|
### Удалено
|
302
302
|
|
303
|
+
## [3.5.6] - 2025-02-20
|
304
|
+
|
305
|
+
Доработана отправка файлов в витрину - добавлена проверка статусов файла и новый статус `Ошибка обработки витриной` для
|
306
|
+
ExportingDataSubStageStatus. Доработана задача проверки статусов UploadStatusHelper.
|
307
|
+
|
308
|
+
### Исправлено
|
309
|
+
|
310
|
+
- [EDUSCHL-22403](https://jira.bars.group/browse/EDUSCHL-22403)
|
311
|
+
PATCH Добавлен новый статус Ошибка обработки витриной для ExportingDataSubStageStatus. Добавлена проверка
|
312
|
+
статусов сразу после отправки файлов WorkerSender. Скорректирован статус UploadStatusHelper - при получении статусов
|
313
|
+
ошибки обработки витриной подэтап помечается как PROCESS_ERROR
|
314
|
+
|
315
|
+
|
316
|
+
## [3.5.5] - 2025-02-11
|
317
|
+
|
318
|
+
Исправление ошибки в реестре Журнал Логов РВД.
|
319
|
+
|
320
|
+
### Исправлено
|
321
|
+
|
322
|
+
- [EDUSCHL-23174](https://jira.bars.group/browse/EDUSCHL-23174)
|
323
|
+
PATCH Для менеджера UploaderClientLogManager с аннотацией поля attachment_file добавлен output_field=CharField().
|
324
|
+
|
325
|
+
- [EDUSCHL-23178](https://jira.bars.group/browse/EDUSCHL-23178)
|
326
|
+
PATCH Исправлена команда check_upload_status, в части использования UploadStatusHelper.
|
327
|
+
|
303
328
|
|
304
329
|
## [3.5.4] - 2025-02-07
|
305
330
|
|
@@ -1,14 +1,14 @@
|
|
1
1
|
edu_rdm_integration/__init__.py,sha256=fVCvQ7QGI_iCyAeE8dMapyY8gOM617ye5GQqAVGPlZI,72
|
2
2
|
edu_rdm_integration/app_meta.py,sha256=v5IU69yaeLbyHF0Ln6iPN_IfizbtF3rCWrz2n71m8dU,337
|
3
|
-
edu_rdm_integration/app_settings.py,sha256=
|
4
|
-
edu_rdm_integration/apps.py,sha256=
|
3
|
+
edu_rdm_integration/app_settings.py,sha256=f7Obftma3sQSXZmQRkfas93VFnJi3eTGVE_JixzxAnQ,3035
|
4
|
+
edu_rdm_integration/apps.py,sha256=Dl1og2yZcRyJmqrifUNIjLZ9Us2jw2mgAP1_q2fg29A,3699
|
5
5
|
edu_rdm_integration/base.py,sha256=_G0qPTAXe6bXfgDHNiZMSsYt3sMuUhLKnHuQCWSFttU,1341
|
6
|
-
edu_rdm_integration/consts.py,sha256=
|
6
|
+
edu_rdm_integration/consts.py,sha256=nL8o-w73KjGM4r_--Nasffmo_DJx9HsgrPHSNtq-y-g,1080
|
7
7
|
edu_rdm_integration/entities.py,sha256=mhVeB88A-VD5IAzZCNeI1qnkvNoZ8LPiLBdqk1yA3Jc,14541
|
8
8
|
edu_rdm_integration/enums.py,sha256=T3Mu5D-CbKO3BSg16MPPnIPlcc_YGLYR-ThS8dzl9gg,4246
|
9
|
-
edu_rdm_integration/helpers.py,sha256=
|
9
|
+
edu_rdm_integration/helpers.py,sha256=wr4ddI9LNsmcwdZMEUYT070YnM49ixbAQ0-tBh4gp08,14808
|
10
10
|
edu_rdm_integration/mapping.py,sha256=1B6TsC4Os9wiM8L8BChnCNv_iWqjeWu3bdDsqKVsId0,616
|
11
|
-
edu_rdm_integration/models.py,sha256=
|
11
|
+
edu_rdm_integration/models.py,sha256=feAbpH1ji4MOHpYtzDfrumMYmXlz1ye-IDUFJSI7Nq0,33092
|
12
12
|
edu_rdm_integration/redis_cache.py,sha256=SP_rcL5t6PTVLOnEYn_NTX0Z666VdZT4By2pyED24Z4,1537
|
13
13
|
edu_rdm_integration/signals.py,sha256=3eRlpkDcFCF6TN80-QM8yBYLcyozzcmoPjz6r4_ApWg,73
|
14
14
|
edu_rdm_integration/storages.py,sha256=G4Q4tIyJdEyb9ka551PADCFIm66bpsJe9VBRcvQhLMI,6745
|
@@ -89,8 +89,8 @@ edu_rdm_integration/enum_register/register.py,sha256=jb16O7TZDGVRo5NwWqyY_rcbBxO
|
|
89
89
|
edu_rdm_integration/export_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
90
90
|
edu_rdm_integration/export_data/consts.py,sha256=ZEi1kXMs-54KFKxkyGIQVwZ4d8OrOF_vLFQIjjWdSPQ,441
|
91
91
|
edu_rdm_integration/export_data/dataclasses.py,sha256=IhftRopP4lS-m3ygdBU5Bz0HF71VSBP4JQ6-8VIVgtY,260
|
92
|
-
edu_rdm_integration/export_data/export.py,sha256=
|
93
|
-
edu_rdm_integration/export_data/
|
92
|
+
edu_rdm_integration/export_data/export.py,sha256=qKvFRTcy2ZgaBMn6mEi_OsueNXZ7j_v2neu2Lu99MEs,19447
|
93
|
+
edu_rdm_integration/export_data/export_manager.py,sha256=U1Jzl9Gu1jVy0rdc_ljIy08XyV9OEVxVkmjs218u3wI,13281
|
94
94
|
edu_rdm_integration/export_data/generators.py,sha256=UIoX49rQnUwwC9PL17te7Rb4WRDe_5ShYQ1Rygf36NQ,4010
|
95
95
|
edu_rdm_integration/export_data/helpers.py,sha256=JKL4MC0IuoJv72NNnL8hG7HLy7kNHOXFp1uLCKF15AM,2900
|
96
96
|
edu_rdm_integration/export_data/queue.py,sha256=GlwRwhMdv38OxmtFpFD5-Pt79gMe3IcLeWFQCLXTcik,6128
|
@@ -145,7 +145,7 @@ edu_rdm_integration/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
145
145
|
edu_rdm_integration/management/general.py,sha256=hmZGp9EKpSAm-VuhXNpW_ETA5TWi3Y-caSj7XB2vtuM,12957
|
146
146
|
edu_rdm_integration/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
147
147
|
edu_rdm_integration/management/commands/async_fix_attachment_size.py,sha256=9Aa_B04R9VDMY4G9s1DIteWPX7QhOFdm0zReMJWbwbw,9838
|
148
|
-
edu_rdm_integration/management/commands/check_upload_status.py,sha256=
|
148
|
+
edu_rdm_integration/management/commands/check_upload_status.py,sha256=6A04WcIKfoF_Hemdh0xT877WUgqP2qcxX1vAs97_b1E,3882
|
149
149
|
edu_rdm_integration/management/commands/collect_latest_models_data.py,sha256=4ObBFqYMkX5v1saV9V7PivYBm0RMcDCGNlMGx77UAjs,750
|
150
150
|
edu_rdm_integration/management/commands/collect_models_data.py,sha256=11RshcQiXk6Flz-8oiFuM5KSZ_8_c1111qkqmyiu5sw,1022
|
151
151
|
edu_rdm_integration/management/commands/datamart_status.py,sha256=ImpXHwRnbcgE5pcz2_QixfEQPSLU6WH1V8Vm7xnPidU,1211
|
@@ -166,6 +166,7 @@ edu_rdm_integration/migrations/0011_exportingdatasubstageentity.py,sha256=2BfIif
|
|
166
166
|
edu_rdm_integration/migrations/0012_exportingdatasubstageattachment_attachment_size.py,sha256=y_JQO69k9pEfrJyimaRiAOBmhaJmssIyepCGd-Sy9hs,511
|
167
167
|
edu_rdm_integration/migrations/0013_set_attachment_size.py,sha256=Gol8T137gdaCTSkJ2e4as5x4gfqeouZmgWgkOl7zxCQ,2048
|
168
168
|
edu_rdm_integration/migrations/0014_uploaddatacommand.py,sha256=Hh0vKKiGgKOvY1kBAcmway4dSYUXwVArHAc9YrsjCIU,2079
|
169
|
+
edu_rdm_integration/migrations/0015_set_exporting_sub_stage_status.py,sha256=zVe2baNq8JYzMPRmtpAwplmgKHOP3lwMKHLo_yRz0QE,790
|
169
170
|
edu_rdm_integration/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
170
171
|
edu_rdm_integration/registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
171
172
|
edu_rdm_integration/registry/actions.py,sha256=jNEq1RhSGtxdYOIKcTtqT1LPUfKvOIFgAQjP3q0Lv1s,5382
|
@@ -175,12 +176,12 @@ edu_rdm_integration/uploader_log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
|
|
175
176
|
edu_rdm_integration/uploader_log/actions.py,sha256=2ckgI1PKgVcLYkbhtbK_bfv_6lDxpiIRSk1uPCIL-gg,6755
|
176
177
|
edu_rdm_integration/uploader_log/apps.py,sha256=tYJj4-sDlq8fLOSvw18L_yys7SILpTKWNmE2Qug6GnE,265
|
177
178
|
edu_rdm_integration/uploader_log/enums.py,sha256=rgSO3BL2rh2xpfm0Pt4waQW8fB1VMJLdsGmr3SXwH_U,266
|
178
|
-
edu_rdm_integration/uploader_log/managers.py,sha256=
|
179
|
+
edu_rdm_integration/uploader_log/managers.py,sha256=OFdToWV8qhdfeGNpd-UWAmSEISzixmVQ6LF75EW7gzA,3248
|
179
180
|
edu_rdm_integration/uploader_log/ui.py,sha256=YM9Buqp2wxE95Wf5gvAATBzuYzDOossK1sEmvFk07cI,2110
|
180
181
|
edu_rdm_integration/uploader_log/templates/ui-js/object-grid-buttons.js,sha256=2xyGe0wdVokM0RhpzRzcRvJPBkBmPe3SlZry4oP4Nzs,6201
|
181
|
-
edu_rdm_integration-3.5.
|
182
|
-
edu_rdm_integration-3.5.
|
183
|
-
edu_rdm_integration-3.5.
|
184
|
-
edu_rdm_integration-3.5.
|
185
|
-
edu_rdm_integration-3.5.
|
186
|
-
edu_rdm_integration-3.5.
|
182
|
+
edu_rdm_integration-3.5.6.dist-info/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
|
183
|
+
edu_rdm_integration-3.5.6.dist-info/METADATA,sha256=GgdksnjTLkKAiTVuokf7dzMkFvceXvGaOy2Yg0HqbEM,81117
|
184
|
+
edu_rdm_integration-3.5.6.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
185
|
+
edu_rdm_integration-3.5.6.dist-info/namespace_packages.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
186
|
+
edu_rdm_integration-3.5.6.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
|
187
|
+
edu_rdm_integration-3.5.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{edu_rdm_integration-3.5.4.dist-info → edu_rdm_integration-3.5.6.dist-info}/namespace_packages.txt
RENAMED
File without changes
|
File without changes
|