edu-rdm-integration 3.16.1__py3-none-any.whl → 3.17.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.

Potentially problematic release.


This version of edu-rdm-integration might be problematic. Click here for more details.

@@ -227,16 +227,6 @@ class BaseFirstCollectModelsDataCommandsGenerator:
227
227
  # Корректируем границы начала и конца сбора данных под значения введенные пользователем
228
228
  params_for_model[0]['period_started_at'] = self.logs_period_started_at
229
229
  params_for_model[-1]['period_ended_at'] = self.logs_period_ended_at
230
- else:
231
- # Создаем команду для отображения в UI, даже если не нашлось данных для обработки
232
- params_for_model.append(
233
- {
234
- 'period_started_at': self.logs_period_started_at,
235
- 'period_ended_at': self.logs_period_ended_at,
236
- 'model': rdm_model.key,
237
- 'generation_id': self.generation_id,
238
- }
239
- )
240
230
 
241
231
  params_for_commands.extend(params_for_model)
242
232
 
@@ -260,6 +260,13 @@ class BaseCollectingDataProgressPack(BaseCommandProgressPack):
260
260
  actual_institute_ids=self._get_actual_institute_ids(),
261
261
  )
262
262
 
263
+ if not commands_to_save:
264
+ raise ApplicationLogicException(
265
+ f'Недостаточно данных для обработки модели "{obj.model_id}" '
266
+ f'в указанный период с {context.logs_period_started_at} по {context.logs_period_ended_at}. '
267
+ f'Проверьте наличие данных в указанном временном диапазоне.'
268
+ )
269
+
263
270
  objs = [
264
271
  self.model(
265
272
  model_id=obj.model_id,
@@ -1,6 +1,8 @@
1
1
  {% load educommon %}
2
2
  {% include "ui-js/validators.js" %}
3
3
 
4
+ var win = Ext.getCmp('{{ component.client_id }}');
5
+
4
6
  Ext.onReady(function() {
5
7
  // Инициализация валидаторов
6
8
  initializeValidators();
@@ -38,6 +40,25 @@ function initializeValidators() {
38
40
  this.validate();
39
41
  });
40
42
  }
43
+
44
+ // Устанавливаем текущую дату и время как максимальное значение
45
+ // и выполняем валидацию каждую секунду
46
+ var validationInterval = setInterval(function() {
47
+ var now = new Date();
48
+
49
+ logsPeriodStartField.setMaxValue(now);
50
+ logsPeriodEndField.setMaxValue(now);
51
+
52
+ logsPeriodStartField.validate();
53
+ logsPeriodEndField.validate();
54
+ }, 1000);
55
+
56
+ win.on('destroy', function() {
57
+ clearInterval(validationInterval);
58
+ });
59
+
60
+ logsPeriodStartField.validator = logsPeriodsValidator;
61
+ logsPeriodEndField.validator = logsPeriodsValidator;
41
62
  }
42
63
 
43
64
  function initializeBatchSizeSplitByLogic() {
@@ -49,3 +49,18 @@ var instituteCountValidator = function() {
49
49
  this.clearInvalid();
50
50
  return true;
51
51
  };
52
+
53
+ var logsPeriodStartField = Ext.getCmp('logs_period_started_at');
54
+ var logsPeriodEndField = Ext.getCmp('logs_period_ended_at');
55
+
56
+ var logsPeriodsValidator = function () {
57
+ if (
58
+ logsPeriodStartField.getValue() &&
59
+ logsPeriodEndField.getValue() &&
60
+ logsPeriodStartField.getValue() > logsPeriodEndField.getValue()
61
+ ) {
62
+ return 'Дата конца периода не может быть меньше даты начала периода'
63
+ };
64
+
65
+ return true;
66
+ };
@@ -41,11 +41,6 @@ from edu_rdm_integration.stages.collect_data.consts import (
41
41
  class CreateCollectCommandWindow(BaseCreateCommandWindow):
42
42
  """Окно создания команды сбора данных модели РВД."""
43
43
 
44
- def __init__(self):
45
- super().__init__()
46
-
47
- self.template_globals = 'ui-js/create-collect-command-win.js'
48
-
49
44
  def _init_components(self):
50
45
  """Инициализация компонентов."""
51
46
  super()._init_components()
@@ -65,12 +60,14 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
65
60
  label='Начало периода',
66
61
  anchor='100%',
67
62
  allow_blank=False,
63
+ client_id='logs_period_started_at',
68
64
  )
69
65
  logs_period_ended_at = ExtDateTimeField(
70
66
  name='logs_period_ended_at',
71
67
  label='Конец периода',
72
68
  anchor='100%',
73
69
  allow_blank=False,
70
+ client_id='logs_period_ended_at',
74
71
  )
75
72
  split_by = ExtComboBox(
76
73
  name='split_by',
@@ -1,14 +1,41 @@
1
1
  var win = Ext.getCmp('{{ component.client_id }}');
2
- var form = win.getForm();
3
- var periodEndField = form.findField('period_ended_at');
4
-
5
- // Устанавливаем текущую дату и время как максимальное значение
6
- // и выполняем валидацию каждую секунду
7
- var validationInterval = setInterval(function() {
8
- periodEndField.setMaxValue(new Date())
9
- periodEndField.validate();
10
- }, 1000);
11
-
12
- win.on('destroy', function() {
13
- clearInterval(validationInterval);
2
+ var periodStartField = Ext.getCmp('period_started_at');
3
+ var periodEndField = Ext.getCmp('period_ended_at');
4
+
5
+ Ext.onReady(function() {
6
+ // Инициализация валидаторов
7
+ initializeValidators();
14
8
  });
9
+
10
+ function initializeValidators() {
11
+ // Устанавливаем текущую дату и время как максимальное значение
12
+ // и выполняем валидацию каждую секунду
13
+ var validationInterval = setInterval(function() {
14
+ var now = new Date();
15
+
16
+ periodStartField.setMaxValue(now);
17
+ periodEndField.setMaxValue(now);
18
+
19
+ periodStartField.validate();
20
+ periodEndField.validate();
21
+ }, 1000);
22
+
23
+ win.on('destroy', function() {
24
+ clearInterval(validationInterval);
25
+ });
26
+
27
+ var periodsValidator = function () {
28
+ if (
29
+ periodStartField.getValue() &&
30
+ periodEndField.getValue() &&
31
+ periodStartField.getValue() > periodEndField.getValue()
32
+ ) {
33
+ return 'Дата конца периода не может быть меньше даты начала периода'
34
+ };
35
+
36
+ return true;
37
+ };
38
+
39
+ periodStartField.validator = periodsValidator;
40
+ periodEndField.validator = periodsValidator;
41
+ }
@@ -44,11 +44,6 @@ from edu_rdm_integration.rdm_entities.models import (
44
44
  class CreateExportCommandWindow(BaseCreateCommandWindow):
45
45
  """Окно создания команды экспорта данных сущности РВД."""
46
46
 
47
- def __init__(self):
48
- super().__init__()
49
-
50
- self.template_globals = 'ui-js/create-export-command-win.js'
51
-
52
47
  def _init_components(self):
53
48
  """Инициализация компонентов."""
54
49
  super()._init_components()
@@ -68,12 +63,14 @@ class CreateExportCommandWindow(BaseCreateCommandWindow):
68
63
  label='Начало периода',
69
64
  anchor='100%',
70
65
  allow_blank=False,
66
+ client_id='period_started_at',
71
67
  )
72
68
  period_ended_at = ExtDateTimeField(
73
69
  name='period_ended_at',
74
70
  label='Конец периода',
75
71
  anchor='100%',
76
72
  allow_blank=False,
73
+ client_id='period_ended_at',
77
74
  )
78
75
  batch_size = ExtNumberField(
79
76
  name='batch_size',
@@ -93,6 +90,12 @@ class CreateExportCommandWindow(BaseCreateCommandWindow):
93
90
  batch_size,
94
91
  )
95
92
 
93
+ def set_params(self, params: Dict[str, Any]) -> None:
94
+ """Устанавливает параметры окна."""
95
+ super().set_params(params)
96
+
97
+ self.template_globals = 'ui-js/create-export-command-win.js'
98
+
96
99
 
97
100
  class DetailExportCommandWindow(BaseEditWindow):
98
101
  """Окно просмотра команды экспорта данных сущности РВД."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edu-rdm-integration
3
- Version: 3.16.1
3
+ Version: 3.17.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
@@ -31,6 +31,7 @@ Requires-Dist: educommon<4,>=3.24.0
31
31
  Requires-Dist: edu-function-tools<1,>=0.2.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: m3-ui<2.3,>=2.2.122
34
35
  Requires-Dist: uploader-client<1,>=0.3.0
35
36
  Provides-Extra: dev
36
37
  Requires-Dist: isort==5.12.0; extra == "dev"
@@ -77,7 +77,7 @@ edu_rdm_integration/stages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
77
77
  edu_rdm_integration/stages/collect_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
78
  edu_rdm_integration/stages/collect_data/apps.py,sha256=PhrxzAMXvzXajSlgwLudAgasVjh9IFS5M7a7pGbEKC0,339
79
79
  edu_rdm_integration/stages/collect_data/consts.py,sha256=tzaK9oxzdMRq3oTEocPz4umoXSJWUtFc7YhyXucCNbs,127
80
- edu_rdm_integration/stages/collect_data/generators.py,sha256=OM5KsInz_as8K2TX4XLJ-AWTnul-VR4v6oS5ORdU0fI,12970
80
+ edu_rdm_integration/stages/collect_data/generators.py,sha256=azl0s_xJp6Mg2ARNLKd4o4ikVcarUN3ysb4xm8pYlyY,12434
81
81
  edu_rdm_integration/stages/collect_data/helpers.py,sha256=xy8z9yJKEMjNUPNhrsRRtnYy6RVbwDoD5zSDAX7y_6U,5260
82
82
  edu_rdm_integration/stages/collect_data/mixins.py,sha256=izioaiPC26BDODgi_Lhy33IaH207945tGjFnbFLMQyI,2072
83
83
  edu_rdm_integration/stages/collect_data/models.py,sha256=wBN1hT6c4pRotsv8EhW-dnvjJvbfk_3w49NMCF5uUyM,9426
@@ -151,12 +151,11 @@ edu_rdm_integration/stages/collect_data/migrations/0003_auto_20250704_0810.py,sh
151
151
  edu_rdm_integration/stages/collect_data/migrations/0004_auto_20250704_0825.py,sha256=B6SUsxlhQvWoD8lFGNwaMUCFDzhPj91bsMdmAcSuEDg,1379
152
152
  edu_rdm_integration/stages/collect_data/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
153
  edu_rdm_integration/stages/collect_data/registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
- edu_rdm_integration/stages/collect_data/registry/actions.py,sha256=mUMGv1FjzjY0G46gTgi_mfL0yUjuCJlA2wQutq3jmPo,9798
154
+ edu_rdm_integration/stages/collect_data/registry/actions.py,sha256=ZMk8H1adcI2ycQ0a0ECBVRNKrkeYDc64UEHKV8drpUU,10260
155
155
  edu_rdm_integration/stages/collect_data/registry/apps.py,sha256=K5f97YXKMmdM7m33qgQYvJjrA8_eGAJ4VWyuRjJ0gwQ,439
156
- edu_rdm_integration/stages/collect_data/registry/ui.py,sha256=oOghmS49uCOEycOL3Wz-4-NUSy9mp7_pcwXf_VVz8rU,8427
157
- edu_rdm_integration/stages/collect_data/registry/templates/ui-js/collect-command-window.js,sha256=IWG4CczBG9-Bi6X2Hivod4z63gSBZ6Fd126QVRRFacA,2386
158
- edu_rdm_integration/stages/collect_data/registry/templates/ui-js/create-collect-command-win.js,sha256=BypYLy6-xKjmQucGy_uVEx2830jh5f7VFvUaAaqL_AY,549
159
- edu_rdm_integration/stages/collect_data/registry/templates/ui-js/validators.js,sha256=c0p0ND7i2C-fZrADgiUv9Eekjx_ZlFHBrgd-oXuqXKI,1525
156
+ edu_rdm_integration/stages/collect_data/registry/ui.py,sha256=pw13DAASxqnX_E5D4RG9CywtnQKQeljXHief7mojVgk,8398
157
+ edu_rdm_integration/stages/collect_data/registry/templates/ui-js/collect-command-window.js,sha256=QfxVSAA0282-41K0XGtyPa9WPzpoX_uClke8pHdAzBo,3112
158
+ edu_rdm_integration/stages/collect_data/registry/templates/ui-js/validators.js,sha256=8A07RgqRs71UuyHNc0HA_isGZL5-W9iLm0O-eC2JFT8,2021
160
159
  edu_rdm_integration/stages/export_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
160
  edu_rdm_integration/stages/export_data/apps.py,sha256=TU6AaMZGQE2oHVwKgtUDzFplaVasb2tMIurhkhwkxZo,406
162
161
  edu_rdm_integration/stages/export_data/consts.py,sha256=ZEi1kXMs-54KFKxkyGIQVwZ4d8OrOF_vLFQIjjWdSPQ,441
@@ -209,8 +208,8 @@ edu_rdm_integration/stages/export_data/migrations/__init__.py,sha256=47DEQpj8HBS
209
208
  edu_rdm_integration/stages/export_data/registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
209
  edu_rdm_integration/stages/export_data/registry/actions.py,sha256=r-NAPs4pYVectt_J38UzMsnKrWfYkjy2rhx3LUGKQWk,10423
211
210
  edu_rdm_integration/stages/export_data/registry/apps.py,sha256=71DtJQ2ULt8_3CnTu2VAfT5ABBrDNY1nKTmZ6UtvIpw,448
212
- edu_rdm_integration/stages/export_data/registry/ui.py,sha256=GPp52ziV_xb0cnveprqIYmrx4kv0zgvrhMg-PHqUFeE,6042
213
- edu_rdm_integration/stages/export_data/registry/templates/ui-js/create-export-command-win.js,sha256=ADE04kltbx1e0spaFK_ycBmtxBQPz6pqfaNY_czo9z8,532
211
+ edu_rdm_integration/stages/export_data/registry/ui.py,sha256=0kWWfOmtTyN4SUO9dGUcEz0wgOPA111jHoWw3_LNPqI,6238
212
+ edu_rdm_integration/stages/export_data/registry/templates/ui-js/create-export-command-win.js,sha256=g0dpYsvd_6VfRU4nRv3tNK-0wtMND_VurQRT04ShJjk,1341
214
213
  edu_rdm_integration/stages/export_data/registry/templates/ui-js/stage_for_export.js,sha256=329OZIpiKHlQ-i8JStjBLXtouIMKuJHbycArUGSskfk,737
215
214
  edu_rdm_integration/stages/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
216
215
  edu_rdm_integration/stages/service/apps.py,sha256=lgCG4_kpwgfDWh6y-GNuUwz5SOjkP7oS8kkUyVUcNRg,648
@@ -246,8 +245,8 @@ edu_rdm_integration/stages/upload_data/uploader_log/ui.py,sha256=mU3XA9zVKHGqzNk
246
245
  edu_rdm_integration/stages/upload_data/uploader_log/migrations/0001_initial.py,sha256=r5oOB7DBK9-mfuqPAgjXUJY5-hEcmMdILCwDTpaLnBc,753
247
246
  edu_rdm_integration/stages/upload_data/uploader_log/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
248
247
  edu_rdm_integration/stages/upload_data/uploader_log/templates/ui-js/object-grid-buttons.js,sha256=2xyGe0wdVokM0RhpzRzcRvJPBkBmPe3SlZry4oP4Nzs,6201
249
- edu_rdm_integration-3.16.1.dist-info/licenses/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
250
- edu_rdm_integration-3.16.1.dist-info/METADATA,sha256=oFZgonV1BYPkEAzdOOQFI-NpB2NNW_FTbtzMzCmjyA8,39780
251
- edu_rdm_integration-3.16.1.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
252
- edu_rdm_integration-3.16.1.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
253
- edu_rdm_integration-3.16.1.dist-info/RECORD,,
248
+ edu_rdm_integration-3.17.0.dist-info/licenses/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
249
+ edu_rdm_integration-3.17.0.dist-info/METADATA,sha256=9OfQ0SfmcdceqyoyeH6Dqmo5EBlTm1Hb-lH3z5rIx7k,39815
250
+ edu_rdm_integration-3.17.0.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
251
+ edu_rdm_integration-3.17.0.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
252
+ edu_rdm_integration-3.17.0.dist-info/RECORD,,
@@ -1,14 +0,0 @@
1
- var win = Ext.getCmp('{{ component.client_id }}');
2
- var form = win.getForm();
3
- var logsPeriodEndField = form.findField('logs_period_ended_at');
4
-
5
- // Устанавливаем текущую дату и время как максимальное значение
6
- // и выполняем валидацию каждую секунду
7
- var validationInterval = setInterval(function() {
8
- logsPeriodEndField.setMaxValue(new Date())
9
- logsPeriodEndField.validate();
10
- }, 1000);
11
-
12
- win.on('destroy', function() {
13
- clearInterval(validationInterval);
14
- });