edu-rdm-integration 3.8.1__py3-none-any.whl → 3.9.0__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.
@@ -0,0 +1,199 @@
1
+ from typing import (
2
+ Any,
3
+ Dict,
4
+ )
5
+
6
+ from m3_ext.ui.controls.buttons import (
7
+ ExtButton,
8
+ )
9
+ from m3_ext.ui.fields import (
10
+ ExtComboBox,
11
+ ExtDisplayField,
12
+ ExtNumberField,
13
+ ExtStringField,
14
+ )
15
+ from m3_ext.ui.fields.simple import (
16
+ ExtDateTimeField,
17
+ )
18
+ from m3_ext.ui.icons import (
19
+ Icons,
20
+ )
21
+ from m3_ext.ui.misc import (
22
+ ExtDataStore,
23
+ )
24
+
25
+ from educommon.objectpack.ui import (
26
+ BaseEditWindow,
27
+ )
28
+ from educommon.utils.ui import (
29
+ append_template_globals,
30
+ )
31
+
32
+ from edu_rdm_integration.collect_and_export_data.ui import (
33
+ CommandProgressListWindow,
34
+ )
35
+ from edu_rdm_integration.collect_data.ui import (
36
+ BaseCreateCommandWindow,
37
+ )
38
+ from edu_rdm_integration.consts import (
39
+ BATCH_SIZE,
40
+ )
41
+ from edu_rdm_integration.models import (
42
+ RegionalDataMartEntityEnum,
43
+ )
44
+
45
+
46
+ class CreateExportCommandWindow(BaseCreateCommandWindow):
47
+ """Окно создания команды экспорта данных сущности РВД."""
48
+
49
+ def _init_components(self):
50
+ """Инициализация компонентов."""
51
+ super()._init_components()
52
+
53
+ entity = ExtComboBox(
54
+ name='entity_id',
55
+ label='Сущность',
56
+ display_field='entity',
57
+ anchor='100%',
58
+ editable=False,
59
+ trigger_action_all=True,
60
+ allow_blank=False,
61
+ )
62
+ entity.set_store(
63
+ ExtDataStore((idx, key) for idx, key in enumerate(RegionalDataMartEntityEnum.get_model_enum_keys()))
64
+ )
65
+ period_started_at = ExtDateTimeField(
66
+ name='period_started_at',
67
+ label='Начало периода',
68
+ anchor='100%',
69
+ allow_blank=False,
70
+ )
71
+ period_ended_at = ExtDateTimeField(
72
+ name='period_ended_at',
73
+ label='Конец периода',
74
+ anchor='100%',
75
+ allow_blank=False,
76
+ )
77
+ batch_size = ExtNumberField(
78
+ name='batch_size',
79
+ label='Размер чанка',
80
+ allow_blank=False,
81
+ allow_decimals=False,
82
+ allow_negative=False,
83
+ anchor='100%',
84
+ min_value=1,
85
+ value=BATCH_SIZE,
86
+ )
87
+
88
+ self.items_ = (
89
+ entity,
90
+ period_started_at,
91
+ period_ended_at,
92
+ batch_size,
93
+ )
94
+
95
+
96
+ class DetailExportCommandWindow(BaseEditWindow):
97
+ """Окно просмотра команды экспорта данных сущности РВД."""
98
+
99
+ def set_params(self, params: Dict[str, Any]) -> None:
100
+ """Устанавливает параметры окна."""
101
+ super().set_params(params)
102
+
103
+ self.height = 'auto'
104
+ self.logs_link_field.value = params.get('log_url', '')
105
+
106
+ def _init_components(self) -> None:
107
+ """Инициализирует компоненты окна."""
108
+ super()._init_components()
109
+
110
+ self.entity_field = ExtStringField(
111
+ name='entity_id',
112
+ label='Сущность',
113
+ anchor='100%',
114
+ )
115
+ self.created_field = ExtDateTimeField(
116
+ name='created',
117
+ label='Дата создания',
118
+ anchor='100%',
119
+ )
120
+ self.generation_id_field = ExtStringField(
121
+ name='generation_id',
122
+ label='Идентификатор генерации',
123
+ anchor='100%',
124
+ )
125
+ self.task_id_field = ExtStringField(
126
+ name='task_id',
127
+ label='Идентификатор задачи',
128
+ anchor='100%',
129
+ )
130
+ self.status_field = ExtStringField(
131
+ name='stage.status.key',
132
+ label='Статус экспорта',
133
+ anchor='100%',
134
+ )
135
+ self.started_at_field = ExtDateTimeField(
136
+ name='stage.started_at',
137
+ label='Время начала экспорта',
138
+ anchor='100%',
139
+ )
140
+ self.logs_link_field = ExtDisplayField(
141
+ name='log_url',
142
+ label='Ссылка на логи',
143
+ anchor='100%',
144
+ )
145
+ self.period_started_at_field = ExtDateTimeField(
146
+ name='period_started_at',
147
+ label='Начало периода',
148
+ anchor='100%',
149
+ )
150
+ self.period_ended_at_field = ExtDateTimeField(
151
+ name='period_ended_at',
152
+ label='Конец периода',
153
+ anchor='100%',
154
+ )
155
+
156
+ def _do_layout(self) -> None:
157
+ """Располагает компоненты окна."""
158
+ super()._do_layout()
159
+
160
+ self.form.items.extend(
161
+ (
162
+ self.entity_field,
163
+ self.created_field,
164
+ self.generation_id_field,
165
+ self.task_id_field,
166
+ self.status_field,
167
+ self.started_at_field,
168
+ self.logs_link_field,
169
+ self.period_started_at_field,
170
+ self.period_ended_at_field,
171
+ )
172
+ )
173
+
174
+
175
+ class ExportCommandProgressListWindow(CommandProgressListWindow):
176
+ """Окно отображения реестра Экспорт данных сущностей РВД."""
177
+
178
+ def _init_components(self):
179
+ """Инициализирует компоненты окна."""
180
+ super()._init_components()
181
+
182
+ self.sub_stage_for_export_button = ExtButton(
183
+ text='Переотправить',
184
+ icon_cls=Icons.ARROW_REFRESH,
185
+ handler='stageForExport',
186
+ )
187
+
188
+ def _do_layout(self):
189
+ """Располагает компоненты окна."""
190
+ super()._do_layout()
191
+
192
+ self.grid.top_bar.items.append(self.sub_stage_for_export_button)
193
+
194
+ def set_params(self, params):
195
+ """Устанавливает параметры окна."""
196
+ super().set_params(params)
197
+
198
+ append_template_globals(self, 'ui-js/stage_for_export.js')
199
+ self.sub_stage_for_export_url = params['sub_stage_for_export_url']
@@ -30,6 +30,12 @@ from django.db.models.functions import (
30
30
  Cast,
31
31
  Least,
32
32
  )
33
+ from django.utils.html import (
34
+ format_html,
35
+ )
36
+ from django.utils.safestring import (
37
+ mark_safe,
38
+ )
33
39
  from uploader_client.adapters import (
34
40
  adapter,
35
41
  )
@@ -85,7 +91,7 @@ if TYPE_CHECKING:
85
91
  FAILED_STATUSES = {
86
92
  DataMartRequestStatus.FAILED_PROCESSING,
87
93
  DataMartRequestStatus.REQUEST_ID_NOT_FOUND,
88
- DataMartRequestStatus.FLC_ERROR
94
+ DataMartRequestStatus.FLC_ERROR,
89
95
  }
90
96
 
91
97
 
@@ -191,7 +197,7 @@ class UploadStatusHelper:
191
197
  self.cache.set(
192
198
  TOTAL_ATTACHMENTS_SIZE_KEY,
193
199
  queue_total_file_size,
194
- timeout=settings.RDM_REDIS_CACHE_TIMEOUT_SECONDS
200
+ timeout=settings.RDM_REDIS_CACHE_TIMEOUT_SECONDS,
195
201
  )
196
202
 
197
203
 
@@ -334,47 +340,73 @@ def get_collecting_managers_max_period_ended_dates(
334
340
  collecting_managers: Iterable['BaseCollectingExportedDataRunnerManager'],
335
341
  ) -> dict[str, 'datetime']:
336
342
  """Возвращает дату и время завершения последнего успешного этапа сбора для менеджеров Функций сбора."""
337
- managers_last_period_ended = CollectingExportedDataStage.objects.filter(
338
- manager_id__in=[manager.uuid for manager in collecting_managers],
339
- id=Subquery(
340
- CollectingExportedDataStage.objects.filter(
341
- manager_id=OuterRef('manager_id'),
342
- status_id=CollectingDataStageStatus.FINISHED.key,
343
- ).order_by('-id').values('id')[:1]
344
- ),
345
- ).annotate(
346
- str_manager_id=Cast('manager_id', output_field=CharField()),
347
- last_period_ended_at=Least('logs_period_ended_at', 'started_at'),
348
- ).values_list(
349
- 'str_manager_id', 'last_period_ended_at',
343
+ managers_last_period_ended = (
344
+ CollectingExportedDataStage.objects.filter(
345
+ manager_id__in=[manager.uuid for manager in collecting_managers],
346
+ id=Subquery(
347
+ CollectingExportedDataStage.objects.filter(
348
+ manager_id=OuterRef('manager_id'),
349
+ status_id=CollectingDataStageStatus.FINISHED.key,
350
+ )
351
+ .order_by('-id')
352
+ .values('id')[:1]
353
+ ),
354
+ )
355
+ .annotate(
356
+ str_manager_id=Cast('manager_id', output_field=CharField()),
357
+ last_period_ended_at=Least('logs_period_ended_at', 'started_at'),
358
+ )
359
+ .values_list(
360
+ 'str_manager_id',
361
+ 'last_period_ended_at',
362
+ )
350
363
  )
351
364
 
352
- return {
353
- manager_id: last_period_ended_at
354
- for manager_id, last_period_ended_at in managers_last_period_ended
355
- }
365
+ return {manager_id: last_period_ended_at for manager_id, last_period_ended_at in managers_last_period_ended}
356
366
 
357
367
 
358
368
  def get_exporting_managers_max_period_ended_dates(
359
369
  exporting_managers: Iterable['BaseExportDataRunnerManager'],
360
370
  ) -> dict[str, 'datetime']:
361
371
  """Возвращает дату и время последнего успешного этапа экспорта для менеджеров Функций экспорта."""
362
- managers_last_period_ended = ExportingDataStage.objects.filter(
363
- manager_id__in=[manager.uuid for manager in exporting_managers],
364
- id=Subquery(
365
- ExportingDataStage.objects.filter(
366
- manager_id=OuterRef('manager_id'),
367
- status_id=ExportingDataStageStatus.FINISHED.key,
368
- ).order_by('-id').values('id')[:1]
369
- ),
370
- ).annotate(
371
- str_manager_id=Cast('manager_id', output_field=CharField()),
372
- last_period_ended_at=Least('period_ended_at', 'started_at'),
373
- ).values_list(
374
- 'str_manager_id', 'last_period_ended_at',
372
+ managers_last_period_ended = (
373
+ ExportingDataStage.objects.filter(
374
+ manager_id__in=[manager.uuid for manager in exporting_managers],
375
+ id=Subquery(
376
+ ExportingDataStage.objects.filter(
377
+ manager_id=OuterRef('manager_id'),
378
+ status_id=ExportingDataStageStatus.FINISHED.key,
379
+ )
380
+ .order_by('-id')
381
+ .values('id')[:1]
382
+ ),
383
+ )
384
+ .annotate(
385
+ str_manager_id=Cast('manager_id', output_field=CharField()),
386
+ last_period_ended_at=Least('period_ended_at', 'started_at'),
387
+ )
388
+ .values_list(
389
+ 'str_manager_id',
390
+ 'last_period_ended_at',
391
+ )
375
392
  )
376
393
 
377
- return {
378
- manager_id: last_period_ended_at
379
- for manager_id, last_period_ended_at in managers_last_period_ended
380
- }
394
+ return {manager_id: last_period_ended_at for manager_id, last_period_ended_at in managers_last_period_ended}
395
+
396
+
397
+ def make_download_link(fieldfile, text='Cкачать', show_filename=False):
398
+ """Возвращает html ссылку для скачивания файла.
399
+
400
+ Если show_filename == True, использует имя файла как текст ссылки
401
+ """
402
+ link = mark_safe('')
403
+ if fieldfile:
404
+ link_text = os.path.basename(fieldfile.name) if show_filename else text
405
+ link = make_link(fieldfile.url, link_text)
406
+
407
+ return link
408
+
409
+
410
+ def make_link(url, text):
411
+ """Возвращает экаранированную html ссылку файла."""
412
+ return format_html('<a href="{}" target="_blank" download>{}</a>', url, text)
@@ -0,0 +1,25 @@
1
+ function stageForExport(){
2
+ var grid = Ext.getCmp('{{ component.grid.client_id }}'),
3
+ selections = grid.selModel.getSelections(),
4
+ commands = [];
5
+
6
+ if (Ext.isEmpty(selections)) {
7
+ Ext.Msg.alert('Внимание', 'Не выбрана команда!');
8
+ return false;
9
+ } else {
10
+ Ext.each(selections, function (obj) {
11
+ commands.push(obj.id);
12
+ });
13
+ }
14
+
15
+ Ext.Ajax.request({
16
+ url: '{{ component.sub_stage_for_export_url }}',
17
+ method: 'POST',
18
+ params: {'commands': commands.join()},
19
+ success: function (res) {
20
+ smart_eval(res.responseText);
21
+ grid.getStore().reload();
22
+ },
23
+ failure: uiAjaxFailMessage
24
+ });
25
+ }
@@ -0,0 +1,42 @@
1
+ function startTask(){
2
+ var grid = Ext.getCmp('{{ component.grid.client_id }}'),
3
+ selections = grid.selModel.getSelections(),
4
+ commands = [];
5
+
6
+ if (Ext.isEmpty(selections)) {
7
+ Ext.Msg.alert('Внимание', 'Не выбрана команда!');
8
+ return false;
9
+ } else {
10
+ Ext.each(selections, function (obj) {
11
+ commands.push(obj.id);
12
+ });
13
+ }
14
+
15
+ Ext.Ajax.request({
16
+ url: '{{ component.queue_select_win_url }}',
17
+ method: 'POST',
18
+ params: {},
19
+ success: function (res) {
20
+ var queue_select_win = smart_eval(res.responseText);
21
+ queue_select_win.on('closed_ok', function() {
22
+ var queue_level_field = queue_select_win.items.items[0];
23
+ var params = queue_select_win.actionContextJson;
24
+ params['commands'] = commands.join();
25
+ params['queue_level'] = queue_level_field.getValue();
26
+ Ext.Ajax.request({
27
+ url: '{{ component.start_task_url }}',
28
+ method: 'POST',
29
+ params: params,
30
+ success: function (res) {
31
+ smart_eval(res.responseText);
32
+ grid.getStore().reload();
33
+ },
34
+ failure: uiAjaxFailMessage
35
+ });
36
+ queue_select_win.close();
37
+
38
+ });
39
+ },
40
+ failure: uiAjaxFailMessage
41
+ });
42
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edu-rdm-integration
3
- Version: 3.8.1
3
+ Version: 3.9.0
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
@@ -6,7 +6,7 @@ edu_rdm_integration/base.py,sha256=1NgLZd0KZRRgUcVfufVIpDJU2coT2zksFGDaX4fWqps,5
6
6
  edu_rdm_integration/consts.py,sha256=QnL9TqTKuJ0MrysqtqHvtCwOFbS1T7iwcfUZGjVsZTU,1166
7
7
  edu_rdm_integration/entities.py,sha256=mhVeB88A-VD5IAzZCNeI1qnkvNoZ8LPiLBdqk1yA3Jc,14541
8
8
  edu_rdm_integration/enums.py,sha256=RpQIZM1iSgFbYDHfwrbT-BwgRf-N9ZZnJgx8UyRFQ2o,4978
9
- edu_rdm_integration/helpers.py,sha256=qwSyeIDBVEhdYG9raf3uLZPd1_2eXuNAaosSR7bLa50,14759
9
+ edu_rdm_integration/helpers.py,sha256=30jynZZ4msdY0LHZT53pvTSLZ-Qbk32u2JxY44ZDUtE,15761
10
10
  edu_rdm_integration/mapping.py,sha256=1B6TsC4Os9wiM8L8BChnCNv_iWqjeWu3bdDsqKVsId0,616
11
11
  edu_rdm_integration/models.py,sha256=4IR5gdNX6YVvGysQQeixcjIOCrMQ37RVhmyvSwucLdc,32297
12
12
  edu_rdm_integration/redis_cache.py,sha256=SP_rcL5t6PTVLOnEYn_NTX0Z666VdZT4By2pyED24Z4,1537
@@ -33,17 +33,22 @@ edu_rdm_integration/adapters/strings.py,sha256=-k9dex8A7hCpkzUkudVkKRAbNRuuqog2h
33
33
  edu_rdm_integration/adapters/tests.py,sha256=MoRY-a75Ow-7EjeQYxkXWunwqTGuBMaUyEkEV2oy05I,59
34
34
  edu_rdm_integration/adapters/validators.py,sha256=LJWnCY8PtXDOj-fm3fBWjQYsHsSLfyKf_D97pqPv73s,496
35
35
  edu_rdm_integration/collect_and_export_data/__init__.py,sha256=4glPgPCzAyLreBGUnUrcRPCge45XucJz5bK8VjlQBaE,82
36
+ edu_rdm_integration/collect_and_export_data/actions.py,sha256=U0QPe6OVmngLeW_2b3KA9L1Vp6uWdQoanXcp45IHnec,4018
36
37
  edu_rdm_integration/collect_and_export_data/apps.py,sha256=fAcctcjxWP4Gd0Qr3YrQkMESrzga4IORWetBTy8wvHo,160
37
38
  edu_rdm_integration/collect_and_export_data/models.py,sha256=TGm-hM-1aDhVcFPy0PTC3yNczoZGF4ZmIdr0Y9s8CfU,2038
38
- edu_rdm_integration/collect_and_export_data/utils.py,sha256=lBWqqhLgMyz2IQN7r9zugRHpYNBbeVp59G0WBxEsmj8,3546
39
+ edu_rdm_integration/collect_and_export_data/ui.py,sha256=14MW_FAMF5N7oi608Y134u3m8FFdrC5PqqpJqm5fTuA,4194
40
+ edu_rdm_integration/collect_and_export_data/utils.py,sha256=voILhNvk8qyp0-LB7uahAgsgG2hzsnHWnJXrOVfRqHo,7852
39
41
  edu_rdm_integration/collect_and_export_data/migrations/0001_initial.py,sha256=UkoaXzh3tokZ8QdCdB09v3rRZfcHhvEwNMuj3mQIB74,4714
40
42
  edu_rdm_integration/collect_and_export_data/migrations/0002_auto_20250204_1413.py,sha256=8kNc8IHzEiIKpIv1oT6rytV80RJrikrEnlvRFpaFRWc,1017
41
43
  edu_rdm_integration/collect_and_export_data/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
44
  edu_rdm_integration/collect_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
+ edu_rdm_integration/collect_data/actions.py,sha256=e6p5JlNi2LCVQH-IUV2Gezx5QdCLGaBf1j3NQGWx7kY,9774
43
46
  edu_rdm_integration/collect_data/collect.py,sha256=-u2ER3MZOLtNRmdtYwimpQqFsEBbJ-8Wsy-AjQeK168,11868
44
- edu_rdm_integration/collect_data/generators.py,sha256=C6GuwURZleB7UwoW7byKD6XOT734Fcitc7JUVwy6O1o,9061
47
+ edu_rdm_integration/collect_data/const.py,sha256=tzaK9oxzdMRq3oTEocPz4umoXSJWUtFc7YhyXucCNbs,127
48
+ edu_rdm_integration/collect_data/generators.py,sha256=nzTWdF2mDflYJXwG8KgrzR8piO8rUPPJ73OZx1Vg3sE,12144
45
49
  edu_rdm_integration/collect_data/helpers.py,sha256=wi1TECBFwur0LyREUwGLNXqQG731e2l1iuIp2Vsh8_o,2962
46
50
  edu_rdm_integration/collect_data/tests.py,sha256=_Inf8v_TS_LorBb702qykzc1Syj_tsPVRLJREcJ-XmY,5515
51
+ edu_rdm_integration/collect_data/ui.py,sha256=nBLDWWsGIGJelUBvHQE2r6YhmnXc6Xj__Ryw4FaOx8w,7698
47
52
  edu_rdm_integration/collect_data/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
53
  edu_rdm_integration/collect_data/base/caches.py,sha256=_Ja0q3hPSE_Mq-MCZN-1jr0WvpOqUr1-CkoBf1B7qKc,2141
49
54
  edu_rdm_integration/collect_data/base/consts.py,sha256=nzP7973d-YG29l-JxJcq7dF81QDLP7FRtTq0dSq46GM,304
@@ -88,6 +93,7 @@ edu_rdm_integration/enum_register/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
88
93
  edu_rdm_integration/enum_register/mixins.py,sha256=lry5JDGIleBCcOqsfX0sVOqwnnSV2Jlb4T2heD-xg54,4621
89
94
  edu_rdm_integration/enum_register/register.py,sha256=jb16O7TZDGVRo5NwWqyY_rcbBxOncYeOoSq6UAbTf48,2208
90
95
  edu_rdm_integration/export_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
+ edu_rdm_integration/export_data/actions.py,sha256=z3qMJJbgsiOCW8A_Ac5ThVBijK4dU_8VuOGrxEBNKso,10377
91
97
  edu_rdm_integration/export_data/consts.py,sha256=ZEi1kXMs-54KFKxkyGIQVwZ4d8OrOF_vLFQIjjWdSPQ,441
92
98
  edu_rdm_integration/export_data/dataclasses.py,sha256=IhftRopP4lS-m3ygdBU5Bz0HF71VSBP4JQ6-8VIVgtY,260
93
99
  edu_rdm_integration/export_data/export.py,sha256=qKvFRTcy2ZgaBMn6mEi_OsueNXZ7j_v2neu2Lu99MEs,19447
@@ -96,6 +102,7 @@ edu_rdm_integration/export_data/generators.py,sha256=UIoX49rQnUwwC9PL17te7Rb4WRD
96
102
  edu_rdm_integration/export_data/helpers.py,sha256=JKL4MC0IuoJv72NNnL8hG7HLy7kNHOXFp1uLCKF15AM,2900
97
103
  edu_rdm_integration/export_data/queue.py,sha256=GlwRwhMdv38OxmtFpFD5-Pt79gMe3IcLeWFQCLXTcik,6128
98
104
  edu_rdm_integration/export_data/strategies.py,sha256=RBBJuCMJCypB4mDwFb6zix3t791SkpFFX5B7Wd-O-4s,6715
105
+ edu_rdm_integration/export_data/ui.py,sha256=maSW3GB9l7pwIblOlni8uK3HhbwQyqh50KdUnyPc1QE,6012
99
106
  edu_rdm_integration/export_data/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
107
  edu_rdm_integration/export_data/base/caches.py,sha256=owWMT6FG9Y6xXwbObyPUI31UgSVi1rlb9i9zVMp8sTk,1507
101
108
  edu_rdm_integration/export_data/base/consts.py,sha256=jLuy2y7YQ921OrEuzDld3F0k6YxgCnr5yorWBQJiLLw,519
@@ -174,6 +181,8 @@ edu_rdm_integration/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
174
181
  edu_rdm_integration/registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
182
  edu_rdm_integration/registry/actions.py,sha256=-CHe95jbxO9JAEaOx6nV6Avn75ynppvZRWN8YPc6c6s,6074
176
183
  edu_rdm_integration/registry/ui.py,sha256=v4GqbQUcoeHxfUPUYORuj4DfzIp49diY-F1hyL3TCPo,2592
184
+ edu_rdm_integration/templates/ui-js/stage_for_export.js,sha256=329OZIpiKHlQ-i8JStjBLXtouIMKuJHbycArUGSskfk,737
185
+ edu_rdm_integration/templates/ui-js/start-task.js,sha256=mwLMFFOZku5AS0CF7AzPoIP_jGP36uetlN6noUE2pBw,1490
177
186
  edu_rdm_integration/templates/ui-js/transferred-entity-list.js,sha256=IWEZ9JoTxD5-CLic5v07XHWW0iGRWk-cjeGVSzU4yKg,1117
178
187
  edu_rdm_integration/uploader_log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
188
  edu_rdm_integration/uploader_log/actions.py,sha256=K06pkaWGjPnt6cpPYdSk8X7nqQEfW-vXXvNVORRbDCs,7957
@@ -182,8 +191,8 @@ edu_rdm_integration/uploader_log/enums.py,sha256=rgSO3BL2rh2xpfm0Pt4waQW8fB1VMJL
182
191
  edu_rdm_integration/uploader_log/managers.py,sha256=OFdToWV8qhdfeGNpd-UWAmSEISzixmVQ6LF75EW7gzA,3248
183
192
  edu_rdm_integration/uploader_log/ui.py,sha256=7O63XJJYnJBLVU9aGuSyMOxFYtcj_Kyf5u6HIiuxl9A,1788
184
193
  edu_rdm_integration/uploader_log/templates/ui-js/object-grid-buttons.js,sha256=2xyGe0wdVokM0RhpzRzcRvJPBkBmPe3SlZry4oP4Nzs,6201
185
- edu_rdm_integration-3.8.1.dist-info/licenses/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
186
- edu_rdm_integration-3.8.1.dist-info/METADATA,sha256=dEub92knjtp-P5cvuOvD1Fvfx9ZDv_Uwg7eR6JSW6_c,35263
187
- edu_rdm_integration-3.8.1.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
188
- edu_rdm_integration-3.8.1.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
189
- edu_rdm_integration-3.8.1.dist-info/RECORD,,
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,,