edu-rdm-integration 0.9.0__py3-none-any.whl → 0.9.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.
@@ -0,0 +1,16 @@
1
+ from educommon import (
2
+ ioc,
3
+ )
4
+
5
+ from edu_rdm_integration.registry.actions import (
6
+ EntitySelectPack,
7
+ TransferredEntityPack,
8
+ )
9
+
10
+
11
+ def register_actions():
12
+ """Регистрирует паки и экшны."""
13
+ ioc.get('main_controller').packs.extend((
14
+ TransferredEntityPack(),
15
+ EntitySelectPack(),
16
+ ))
@@ -0,0 +1,43 @@
1
+ import django.db.models.deletion
2
+ from django.db import (
3
+ migrations,
4
+ models,
5
+ )
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+ """Миграция."""
10
+
11
+ dependencies = [
12
+ ('edu_rdm_integration', '0007_delete_upload_status'),
13
+ ]
14
+
15
+ operations = [
16
+ migrations.CreateModel(
17
+ name='TransferredEntity',
18
+ fields=[
19
+ (
20
+ 'id',
21
+ models.AutoField(
22
+ auto_created=True,
23
+ primary_key=True,
24
+ serialize=False,
25
+ verbose_name='ID',
26
+ ),
27
+ ),
28
+ (
29
+ 'entity',
30
+ models.OneToOneField(
31
+ on_delete=django.db.models.deletion.CASCADE,
32
+ to='edu_rdm_integration.RegionalDataMartEntityEnum',
33
+ verbose_name='Сущность',
34
+ ),
35
+ ),
36
+ ],
37
+ options={
38
+ 'verbose_name': 'Сущность, по которой должен быть произведен сбор и экспорт данных',
39
+ 'verbose_name_plural': 'Сущности, по которым должен быть произведен сбор и экспорт данных',
40
+ 'db_table': 'rdm_transferred_entity',
41
+ },
42
+ ),
43
+ ]
@@ -24,6 +24,7 @@ from django.db.models import (
24
24
  FileField,
25
25
  ForeignKey,
26
26
  Manager,
27
+ OneToOneField,
27
28
  SmallIntegerField,
28
29
  UUIDField,
29
30
  )
@@ -895,3 +896,18 @@ class UploaderClientLog(Entry):
895
896
 
896
897
  class Meta:
897
898
  proxy = True
899
+
900
+
901
+ class TransferredEntity(BaseObjectModel):
902
+ """Сущность, по которой должен быть произведен сбор и экспорт данных."""
903
+
904
+ entity = OneToOneField(
905
+ to=RegionalDataMartEntityEnum,
906
+ verbose_name='Сущность',
907
+ on_delete=CASCADE,
908
+ )
909
+
910
+ class Meta:
911
+ db_table = 'rdm_transferred_entity'
912
+ verbose_name = 'Сущность, по которой должен быть произведен сбор и экспорт данных'
913
+ verbose_name_plural = 'Сущности, по которым должен быть произведен сбор и экспорт данных'
File without changes
@@ -0,0 +1,136 @@
1
+ from m3 import (
2
+ OperationResult,
3
+ )
4
+ from m3.actions import (
5
+ ControllerCache,
6
+ )
7
+ from m3_ext.ui.containers import (
8
+ ExtGridCheckBoxSelModel,
9
+ )
10
+ from objectpack.actions import (
11
+ BaseAction,
12
+ ObjectPack,
13
+ SelectorWindowAction,
14
+ )
15
+
16
+ from edu_rdm_integration.models import (
17
+ RegionalDataMartEntityEnum,
18
+ TransferredEntity,
19
+ )
20
+
21
+
22
+ class EntitySelectPack(ObjectPack):
23
+ """Пак выбора сущностей для сбора и экспорта данных."""
24
+
25
+ title = 'Сущность РВД'
26
+ model = RegionalDataMartEntityEnum
27
+ _is_primary_for_model = False
28
+
29
+ list_sort_order = ('order_number', )
30
+
31
+ columns = [
32
+ {
33
+ 'data_index': 'key',
34
+ 'header': 'Сущность',
35
+ },
36
+ {
37
+ 'data_index': 'title',
38
+ 'header': 'Описание',
39
+ },
40
+ ]
41
+
42
+ def get_rows_query(self, request, context):
43
+ """Возвращает выборку из БД для получения списка данных.
44
+
45
+ Ранее выбранные сущности не отображаются в списке.
46
+ """
47
+ query = super().get_rows_query(request, context)
48
+
49
+ return query.filter(transferredentity__isnull=True)
50
+
51
+
52
+ class TransferredEntityAddWindowAction(SelectorWindowAction):
53
+ """Экшн показа окна выбора сущностей для сбора и экспорта данных."""
54
+
55
+ def configure_action(self, request, context):
56
+ """Конфигурирует экшн."""
57
+ self.data_pack = ControllerCache.find_pack(EntitySelectPack)
58
+ self.callback_url = self.parent.save_action.absolute_url()
59
+
60
+ def configure_window(self, win, request, context):
61
+ """Конфигурирует окно выбора."""
62
+ win.grid.sm = ExtGridCheckBoxSelModel()
63
+ win.grid.store.id_property = 'key'
64
+
65
+ return win
66
+
67
+
68
+ class TransferredEntitySaveAction(BaseAction):
69
+ """Экшн сохранения выбранных сущностей для сбора и экспорта данных."""
70
+
71
+ def context_declaration(self):
72
+ """Объявляет контекст экшна."""
73
+ return {
74
+ 'id': {'type': 'str_list', 'default': []},
75
+ }
76
+
77
+ def run(self, request, context):
78
+ """Обеспечивает выполнение запроса."""
79
+ self.parent.model.objects.bulk_create([
80
+ self.parent.model(entity_id=key)
81
+ for key in context.id
82
+ ])
83
+
84
+ return OperationResult(success=True)
85
+
86
+
87
+ class TransferredEntityPack(ObjectPack):
88
+ """Пак сущностей, по которым должен быть произведен сбор и экспорт данных."""
89
+
90
+ title = 'Сущности для сбора и экспорта данных'
91
+ model = TransferredEntity
92
+
93
+ can_delete = True
94
+
95
+ list_sort_order = ('entity__order_number', )
96
+
97
+ need_check_permission = True
98
+
99
+ columns = [
100
+ {
101
+ 'data_index': 'entity.key',
102
+ 'header': 'Сущность',
103
+ },
104
+ {
105
+ 'data_index': 'entity.title',
106
+ 'header': 'Описание',
107
+ },
108
+ ]
109
+
110
+ def __init__(self):
111
+ super().__init__()
112
+
113
+ self.add_window_action = TransferredEntityAddWindowAction()
114
+ self.replace_action('new_window_action', self.add_window_action)
115
+
116
+ self.save_entity_action = TransferredEntitySaveAction()
117
+ self.replace_action('save_action', self.save_entity_action)
118
+
119
+ def configure_grid(self, grid, *args, **kwargs):
120
+ """Конфигурирует грид."""
121
+ super().configure_grid(grid, *args, **kwargs)
122
+
123
+ grid.sm = ExtGridCheckBoxSelModel()
124
+
125
+ def extend_menu(self, menu):
126
+ """Расширяет главное меню."""
127
+ return menu.SubMenu(
128
+ 'Администрирование',
129
+ menu.SubMenu(
130
+ 'Региональная витрина данных',
131
+ menu.Item(
132
+ self.title,
133
+ self.list_window_action,
134
+ ),
135
+ ),
136
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edu-rdm-integration
3
- Version: 0.9.0
3
+ Version: 0.9.1
4
4
  Summary: Интеграция с Региональной витриной данных
5
5
  Home-page:
6
6
  Download-URL:
@@ -143,9 +143,7 @@ Requires-Dist: uploader-client <1,>=0.2.1
143
143
  RDM_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task', 'HOUR')
144
144
  RDM_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task', 'DAY_OF_WEEK')
145
145
  RDM_TRANSFER_TASK_TIMEDELTA = conf.get_int('rdm_transfer_task', 'TIMEDELTA')
146
- # Сущности, по которым должен производиться сбор и выгрузка данных
147
- RDM_TRANSFER_TASK_ENTITIES = conf.get_tuple('rdm_transfer_task', 'ENTITIES') or ()
148
-
146
+
149
147
  # Настройка запуска периодической задачи статуса загрузки данных в витрину:
150
148
  RDM_UPLOAD_STATUS_TASK_MINUTE = conf.get('rdm_upload_status_task', 'MINUTE')
151
149
  RDM_UPLOAD_STATUS_TASK_HOUR = conf.get('rdm_upload_status_task', 'HOUR')
@@ -191,7 +189,6 @@ Requires-Dist: uploader-client <1,>=0.2.1
191
189
  | RDM_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи выгрузки данных. Час | '*/4' |
192
190
  | RDM_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи выгрузки данных. День недели | '*' |
193
191
  | RDM_TRANSFER_TASK_TIMEDELTA | Дельта между предыдущим и следующим запуском периодической задачи в секундах | 3600 |
194
- | RDM_TRANSFER_TASK_ENTITIES | Сущности, по которым должен производиться сбор и выгрузка данных | '' |
195
192
  | RDM_UPLOAD_STATUS_TASK_MINUTE | Настройка запуска периодической задачи статуса загрузки данных в витрину. Минута | '*/30' |
196
193
  | RDM_UPLOAD_STATUS_TASK_HOUR | Настройка запуска периодической задачи статуса загрузки данных в витрину. Час | '*' |
197
194
  | RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи статуса загрузки данных в витрину. День недели | '*' |
@@ -290,6 +287,23 @@ Requires-Dist: uploader-client <1,>=0.2.1
290
287
 
291
288
  ### Удалено
292
289
 
290
+ ## [0.9.1] - 2024-01-11
291
+
292
+ Добавлен реестр выбора сущностей для сбора и выгрузки данных.
293
+ Удалена настройка RDM_TRANSFER_TASK_ENTITIES, вместо перечисления сущностей в конфиге используется реестр и модель
294
+ TransferredEntity.
295
+
296
+ ### Добавлено
297
+
298
+ - [EDUSCHL-21112](https://jira.bars.group/browse/EDUSCHL-21112)
299
+ MINOR Добавлен реестр выбора сущностей для сбора и выгрузки данных.
300
+
301
+ ### Удалено
302
+
303
+ - [EDUSCHL-21112](https://jira.bars.group/browse/EDUSCHL-21112)
304
+ MINOR Удалена настройка RDM_TRANSFER_TASK_ENTITIES.
305
+
306
+
293
307
  ## [0.9.0] - 2023-12-29
294
308
 
295
309
  Из ЭШ перенесены периодические задачи по сбору статусов загрузки файлов в витрину, а также
@@ -1,4 +1,5 @@
1
1
  edu_rdm_integration/__init__.py,sha256=fVCvQ7QGI_iCyAeE8dMapyY8gOM617ye5GQqAVGPlZI,72
2
+ edu_rdm_integration/app_meta.py,sha256=v5IU69yaeLbyHF0Ln6iPN_IfizbtF3rCWrz2n71m8dU,337
2
3
  edu_rdm_integration/app_settings.py,sha256=kideEO9SvYU8RXPB-8hTVosL4bAspPHNHtyz-R0F7v4,1822
3
4
  edu_rdm_integration/apps.py,sha256=5OgNdmuqe26fbu4wYb69haQJe-XFO_rDbnU1vPqJU-U,3571
4
5
  edu_rdm_integration/base.py,sha256=_G0qPTAXe6bXfgDHNiZMSsYt3sMuUhLKnHuQCWSFttU,1341
@@ -7,7 +8,7 @@ edu_rdm_integration/entities.py,sha256=mAjsYlcIbemo4xT5CSCr4payZubiBHB7Rb3Ow1CVs
7
8
  edu_rdm_integration/enums.py,sha256=6Gv_hpYrC6v75ZtBA_xBrHqvza9NbJKhMa1TdTHkzys,4048
8
9
  edu_rdm_integration/helpers.py,sha256=-UjORR2Pj_zW9gcAz-Dqs2Qi-s8TIptKVUBJVUBjRus,4958
9
10
  edu_rdm_integration/mapping.py,sha256=bwa2fJCbV4YjQcAgRrgT3hgM6dJhr_uBtQgx3L3F2Ck,473
10
- edu_rdm_integration/models.py,sha256=NgUR_1uPzKSaj013T1ofPCmA8rhf4DBAwl-liY1oWns,28630
11
+ edu_rdm_integration/models.py,sha256=Wg8NYj4C6Xqw-15AsQGU0TWNzUjdwBW_YZDzmPqx3GY,29327
11
12
  edu_rdm_integration/signals.py,sha256=3eRlpkDcFCF6TN80-QM8yBYLcyozzcmoPjz6r4_ApWg,73
12
13
  edu_rdm_integration/storages.py,sha256=o5WqUG7SnkeuMt-z8spUi-IraivST-7KHzfY-M3v7FA,6807
13
14
  edu_rdm_integration/tasks.py,sha256=XzRhcfv6u2LSANvWTNvocdw0UJZDKLn3MzenViYrAVE,3421
@@ -145,16 +146,19 @@ edu_rdm_integration/migrations/0004_uploaderclientlog.py,sha256=Llw_cqPpYJSrbEuE
145
146
  edu_rdm_integration/migrations/0005_auto_20231204_1224.py,sha256=YXWiwTImGg8FAO_Er0qxcvaS6V9iF2rSy_7z5r--C_U,1782
146
147
  edu_rdm_integration/migrations/0006_request_status_data.py,sha256=g5JZtP0q0fOrbKCooGmCeGgtcqd9ZLIBP56h-ZH8IS8,3448
147
148
  edu_rdm_integration/migrations/0007_delete_upload_status.py,sha256=GAQKX6N1vDDWiCTXLGg--0gzLQr7VveAPFYzC9QpUpU,457
149
+ edu_rdm_integration/migrations/0008_transferredentity.py,sha256=rE5av85AIYKGDy7nuFKLrHAhj0uaeUTRsFfIsXPtaxo,1427
148
150
  edu_rdm_integration/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
+ edu_rdm_integration/registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
+ edu_rdm_integration/registry/actions.py,sha256=y84gsGz-ZpkOdG85dNwk-J3zmPeEqp894K55puJNDiI,4146
149
153
  edu_rdm_integration/uploader_log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
154
  edu_rdm_integration/uploader_log/actions.py,sha256=SGYYYNL4MdST1FYCZBCYAxj3_-PsJ8IcXBYwxpZqucg,6755
151
155
  edu_rdm_integration/uploader_log/apps.py,sha256=tYJj4-sDlq8fLOSvw18L_yys7SILpTKWNmE2Qug6GnE,265
152
156
  edu_rdm_integration/uploader_log/enums.py,sha256=rgSO3BL2rh2xpfm0Pt4waQW8fB1VMJLdsGmr3SXwH_U,266
153
157
  edu_rdm_integration/uploader_log/managers.py,sha256=y5wTSMzF9hpOpIU_A7nIafL_LBU3QEie6LAYWoB-pBQ,3203
154
158
  edu_rdm_integration/uploader_log/ui.py,sha256=YM9Buqp2wxE95Wf5gvAATBzuYzDOossK1sEmvFk07cI,2110
155
- edu_rdm_integration-0.9.0.dist-info/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
156
- edu_rdm_integration-0.9.0.dist-info/METADATA,sha256=OI0gv65iJLUIwzRqXz0tI8SUr2RSGYY_bKFLQGvQzJA,49762
157
- edu_rdm_integration-0.9.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
158
- edu_rdm_integration-0.9.0.dist-info/namespace_packages.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
159
- edu_rdm_integration-0.9.0.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
160
- edu_rdm_integration-0.9.0.dist-info/RECORD,,
159
+ edu_rdm_integration-0.9.1.dist-info/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
160
+ edu_rdm_integration-0.9.1.dist-info/METADATA,sha256=4dMio16uN6o1Y1WGWOL8EWMlYf8TgsLmF4kGBU14Id8,49997
161
+ edu_rdm_integration-0.9.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
162
+ edu_rdm_integration-0.9.1.dist-info/namespace_packages.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
163
+ edu_rdm_integration-0.9.1.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
164
+ edu_rdm_integration-0.9.1.dist-info/RECORD,,