edu-rdm-integration 3.16.0__py3-none-any.whl → 3.16.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.
Potentially problematic release.
This version of edu-rdm-integration might be problematic. Click here for more details.
- edu_rdm_integration/core/consts.py +8 -0
- edu_rdm_integration/stages/collect_data/registry/actions.py +4 -3
- edu_rdm_integration/stages/collect_data/registry/templates/ui-js/collect-command-window.js +98 -0
- edu_rdm_integration/stages/collect_data/registry/templates/ui-js/validators.js +66 -0
- edu_rdm_integration/stages/collect_data/registry/ui.py +20 -7
- edu_rdm_integration/stages/export_data/registry/templates/ui-js/create-export-command-win.js +39 -12
- edu_rdm_integration/stages/export_data/registry/ui.py +8 -5
- {edu_rdm_integration-3.16.0.dist-info → edu_rdm_integration-3.16.2.dist-info}/METADATA +1 -1
- {edu_rdm_integration-3.16.0.dist-info → edu_rdm_integration-3.16.2.dist-info}/RECORD +12 -11
- edu_rdm_integration/stages/collect_data/registry/templates/ui-js/create-collect-command-win.js +0 -14
- {edu_rdm_integration-3.16.0.dist-info → edu_rdm_integration-3.16.2.dist-info}/WHEEL +0 -0
- {edu_rdm_integration-3.16.0.dist-info → edu_rdm_integration-3.16.2.dist-info}/licenses/LICENSE +0 -0
- {edu_rdm_integration-3.16.0.dist-info → edu_rdm_integration-3.16.2.dist-info}/top_level.txt +0 -0
|
@@ -21,6 +21,14 @@ HASH_ALGORITHM = HashGostFunctionVersion.GOST12_512
|
|
|
21
21
|
|
|
22
22
|
BATCH_SIZE = 5000
|
|
23
23
|
|
|
24
|
+
CHUNK_MAX_VALUE = 100000
|
|
25
|
+
"""Максимальное значение для размера чанка при сборе данных РВД.
|
|
26
|
+
Ограничение 100000 предотвращает чрезмерное потребление памяти и блокировку БД
|
|
27
|
+
при обработке больших объемов данных в одном батче."""
|
|
28
|
+
|
|
29
|
+
SPLIT_BY_QUANTITY_MAX_VALUE = 366
|
|
30
|
+
"""Максимальное значение для размера подпериода при временном разделении данных."""
|
|
31
|
+
|
|
24
32
|
ACADEMIC_YEAR = {
|
|
25
33
|
'start_day': 1,
|
|
26
34
|
'start_month': 9,
|
|
@@ -2,6 +2,9 @@ from functools import (
|
|
|
2
2
|
partial,
|
|
3
3
|
)
|
|
4
4
|
|
|
5
|
+
from django.conf import (
|
|
6
|
+
settings,
|
|
7
|
+
)
|
|
5
8
|
from django.db.models import (
|
|
6
9
|
F,
|
|
7
10
|
Func,
|
|
@@ -268,6 +271,4 @@ class BaseCollectingDataProgressPack(BaseCommandProgressPack):
|
|
|
268
271
|
)
|
|
269
272
|
for command in commands_to_save
|
|
270
273
|
]
|
|
271
|
-
|
|
272
|
-
for obj in objs:
|
|
273
|
-
super().save_row(obj, create_new, request, context, *args, **kwargs)
|
|
274
|
+
self.model.objects.bulk_create(objs, batch_size=settings.COLLECT_PROGRESS_BATCH_SIZE)
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{% load educommon %}
|
|
2
|
+
{% include "ui-js/validators.js" %}
|
|
3
|
+
|
|
4
|
+
var win = Ext.getCmp('{{ component.client_id }}');
|
|
5
|
+
|
|
6
|
+
Ext.onReady(function() {
|
|
7
|
+
// Инициализация валидаторов
|
|
8
|
+
initializeValidators();
|
|
9
|
+
|
|
10
|
+
// Инициализация взаимозависимых полей
|
|
11
|
+
initializeBatchSizeSplitByLogic();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
function initializeValidators() {
|
|
15
|
+
// Валидатор для institute_ids
|
|
16
|
+
var instituteIdsField = Ext.getCmp('institute_ids');
|
|
17
|
+
if (instituteIdsField) {
|
|
18
|
+
instituteIdsField.validate = instituteIdsValidator;
|
|
19
|
+
instituteIdsField.on('blur', function() {
|
|
20
|
+
this.validate();
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Валидатор для institute_count
|
|
25
|
+
var instituteCountField = Ext.getCmp('institute_count');
|
|
26
|
+
if (instituteCountField) {
|
|
27
|
+
var originalValidator = instituteCountField.validate;
|
|
28
|
+
|
|
29
|
+
instituteCountField.validate = function() {
|
|
30
|
+
if (!instituteCountValidator.call(this)) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
if (originalValidator) {
|
|
34
|
+
return originalValidator.call(this);
|
|
35
|
+
}
|
|
36
|
+
return true;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
instituteCountField.on('blur', function() {
|
|
40
|
+
this.validate();
|
|
41
|
+
});
|
|
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;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function initializeBatchSizeSplitByLogic() {
|
|
65
|
+
var batchSizeField = Ext.getCmp('batch_size');
|
|
66
|
+
var splitByField = Ext.getCmp('split_by');
|
|
67
|
+
|
|
68
|
+
if (!batchSizeField || !splitByField) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Функция для обновления обязательности полей
|
|
73
|
+
function updateFieldRequirements() {
|
|
74
|
+
var batchSizeValue = batchSizeField.getValue();
|
|
75
|
+
var splitByValue = splitByField.getValue();
|
|
76
|
+
|
|
77
|
+
if (splitByValue && splitByValue !== '') {
|
|
78
|
+
batchSizeField.allowBlank = true;
|
|
79
|
+
batchSizeField.clearInvalid();
|
|
80
|
+
} else {
|
|
81
|
+
batchSizeField.allowBlank = false;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (batchSizeValue && batchSizeValue !== '' && batchSizeValue !== 0) {
|
|
85
|
+
splitByField.allowBlank = true;
|
|
86
|
+
splitByField.clearInvalid();
|
|
87
|
+
} else {
|
|
88
|
+
splitByField.allowBlank = false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Обработчики изменения полей
|
|
93
|
+
batchSizeField.on('change', updateFieldRequirements);
|
|
94
|
+
splitByField.on('change', updateFieldRequirements);
|
|
95
|
+
|
|
96
|
+
// Инициализация при загрузке
|
|
97
|
+
updateFieldRequirements();
|
|
98
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Валидатор для поля institute_ids
|
|
2
|
+
var instituteIdsValidator = function () {
|
|
3
|
+
var value = this.getValue();
|
|
4
|
+
|
|
5
|
+
// Если поле пустое - это допустимо
|
|
6
|
+
if (!value || value.trim() === '') {
|
|
7
|
+
this.clearInvalid();
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
value = value.trim();
|
|
12
|
+
|
|
13
|
+
if (!/^[0-9,]+$/.test(value)) {
|
|
14
|
+
this.markInvalid('Разрешены только цифры и запятые');
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
var numbers = value.split(',');
|
|
19
|
+
|
|
20
|
+
for (var i = 0; i < numbers.length; i++) {
|
|
21
|
+
if (numbers[i].trim() === '') {
|
|
22
|
+
this.markInvalid('Между запятыми не должно быть пустых значений');
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var uniqueNumbers = [];
|
|
28
|
+
for (var j = 0; j < numbers.length; j++) {
|
|
29
|
+
var num = parseInt(numbers[j].trim());
|
|
30
|
+
if (uniqueNumbers.indexOf(num) !== -1) {
|
|
31
|
+
this.markInvalid('ID организаций не должны повторяться');
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
uniqueNumbers.push(num);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
this.clearInvalid();
|
|
38
|
+
return true;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// Валидатор для поля institute_count - запрещаем 0
|
|
42
|
+
var instituteCountValidator = function() {
|
|
43
|
+
var value = this.getValue();
|
|
44
|
+
if (value === 0) {
|
|
45
|
+
this.markInvalid('Количество организаций не может быть равно 0');
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
this.clearInvalid();
|
|
50
|
+
return true;
|
|
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
|
+
};
|
|
@@ -24,6 +24,8 @@ from educommon.utils.date import (
|
|
|
24
24
|
|
|
25
25
|
from edu_rdm_integration.core.consts import (
|
|
26
26
|
BATCH_SIZE,
|
|
27
|
+
CHUNK_MAX_VALUE,
|
|
28
|
+
SPLIT_BY_QUANTITY_MAX_VALUE,
|
|
27
29
|
)
|
|
28
30
|
from edu_rdm_integration.core.registry.ui import (
|
|
29
31
|
BaseCreateCommandWindow,
|
|
@@ -39,11 +41,6 @@ from edu_rdm_integration.stages.collect_data.consts import (
|
|
|
39
41
|
class CreateCollectCommandWindow(BaseCreateCommandWindow):
|
|
40
42
|
"""Окно создания команды сбора данных модели РВД."""
|
|
41
43
|
|
|
42
|
-
def __init__(self):
|
|
43
|
-
super().__init__()
|
|
44
|
-
|
|
45
|
-
self.template_globals = 'ui-js/create-collect-command-win.js'
|
|
46
|
-
|
|
47
44
|
def _init_components(self):
|
|
48
45
|
"""Инициализация компонентов."""
|
|
49
46
|
super()._init_components()
|
|
@@ -63,20 +60,23 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
|
|
|
63
60
|
label='Начало периода',
|
|
64
61
|
anchor='100%',
|
|
65
62
|
allow_blank=False,
|
|
63
|
+
client_id='logs_period_started_at',
|
|
66
64
|
)
|
|
67
65
|
logs_period_ended_at = ExtDateTimeField(
|
|
68
66
|
name='logs_period_ended_at',
|
|
69
67
|
label='Конец периода',
|
|
70
68
|
anchor='100%',
|
|
71
69
|
allow_blank=False,
|
|
70
|
+
client_id='logs_period_ended_at',
|
|
72
71
|
)
|
|
73
72
|
split_by = ExtComboBox(
|
|
74
73
|
name='split_by',
|
|
75
74
|
display_field='split_by',
|
|
76
75
|
label='Единица подпериода',
|
|
77
76
|
anchor='100%',
|
|
78
|
-
editable=
|
|
77
|
+
editable=False,
|
|
79
78
|
trigger_action_all=True,
|
|
79
|
+
client_id='split_by',
|
|
80
80
|
)
|
|
81
81
|
split_by.set_store(ExtDataStore(enumerate(DatesSplitter.get_split_by_modes())))
|
|
82
82
|
split_by_quantity = ExtNumberField(
|
|
@@ -85,6 +85,7 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
|
|
|
85
85
|
allow_blank=False,
|
|
86
86
|
allow_decimals=False,
|
|
87
87
|
allow_negative=False,
|
|
88
|
+
max_value=SPLIT_BY_QUANTITY_MAX_VALUE,
|
|
88
89
|
anchor='100%',
|
|
89
90
|
value=1,
|
|
90
91
|
)
|
|
@@ -109,6 +110,8 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
|
|
|
109
110
|
allow_negative=False,
|
|
110
111
|
anchor='100%',
|
|
111
112
|
value=BATCH_SIZE,
|
|
113
|
+
max_value=CHUNK_MAX_VALUE,
|
|
114
|
+
client_id='batch_size',
|
|
112
115
|
)
|
|
113
116
|
by_institutes = ExtCheckBox(
|
|
114
117
|
anchor='100%',
|
|
@@ -116,10 +119,12 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
|
|
|
116
119
|
name='by_institutes',
|
|
117
120
|
)
|
|
118
121
|
institute_ids = ExtStringField(
|
|
119
|
-
label='
|
|
122
|
+
label='ID организаций (через запятую, например: 1,2,3 или оставить пустым для всех)',
|
|
120
123
|
name='institute_ids',
|
|
121
124
|
allow_blank=True,
|
|
122
125
|
anchor='100%',
|
|
126
|
+
max_length=100,
|
|
127
|
+
client_id='institute_ids',
|
|
123
128
|
)
|
|
124
129
|
institute_count = ExtNumberField(
|
|
125
130
|
name='institute_count',
|
|
@@ -128,6 +133,8 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
|
|
|
128
133
|
anchor='100%',
|
|
129
134
|
min_value=ALL_UNITS_IN_COMMAND,
|
|
130
135
|
value=ALL_UNITS_IN_COMMAND,
|
|
136
|
+
client_id='institute_count',
|
|
137
|
+
allow_blank=False,
|
|
131
138
|
)
|
|
132
139
|
hint_text = ExtDisplayField(
|
|
133
140
|
value=(
|
|
@@ -156,6 +163,12 @@ class CreateCollectCommandWindow(BaseCreateCommandWindow):
|
|
|
156
163
|
split_mode,
|
|
157
164
|
)
|
|
158
165
|
|
|
166
|
+
def set_params(self, params: Dict[str, Any]) -> None:
|
|
167
|
+
"""Устанавливает параметры окна."""
|
|
168
|
+
super().set_params(params)
|
|
169
|
+
|
|
170
|
+
self.template_globals = 'ui-js/collect-command-window.js'
|
|
171
|
+
|
|
159
172
|
|
|
160
173
|
class DetailCollectCommandWindow(BaseEditWindow):
|
|
161
174
|
"""Окно просмотра команды сбора данных модели РВД."""
|
edu_rdm_integration/stages/export_data/registry/templates/ui-js/create-export-command-win.js
CHANGED
|
@@ -1,14 +1,41 @@
|
|
|
1
1
|
var win = Ext.getCmp('{{ component.client_id }}');
|
|
2
|
-
var
|
|
3
|
-
var periodEndField =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
//
|
|
7
|
-
|
|
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.
|
|
3
|
+
Version: 3.16.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
|
|
@@ -9,7 +9,7 @@ edu_rdm_integration/collect_and_export_data/migrations/0002_auto_20250204_1413.p
|
|
|
9
9
|
edu_rdm_integration/collect_and_export_data/migrations/0003_auto_20250704_0725.py,sha256=IcBTuQWp7D_mP1chCgTXUIJcm5nf2Scdt3ZJgjCgvgI,1108
|
|
10
10
|
edu_rdm_integration/collect_and_export_data/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
edu_rdm_integration/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
-
edu_rdm_integration/core/consts.py,sha256=
|
|
12
|
+
edu_rdm_integration/core/consts.py,sha256=4dklnQS7rtuYJu0Hh7oX1Z9dc72pbIWZl9gXMUvc4rI,1526
|
|
13
13
|
edu_rdm_integration/core/enums.py,sha256=HHZxX2vIe-c4SY6BIWgOg-Tu-_LVJjltFZ1lI9YITLw,3824
|
|
14
14
|
edu_rdm_integration/core/helpers.py,sha256=Fe2AyI8kHAfcnXAn2I_SyNraI5uAjNzHObUNtZtum-g,12183
|
|
15
15
|
edu_rdm_integration/core/mapping.py,sha256=1B6TsC4Os9wiM8L8BChnCNv_iWqjeWu3bdDsqKVsId0,616
|
|
@@ -151,10 +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=
|
|
154
|
+
edu_rdm_integration/stages/collect_data/registry/actions.py,sha256=mUMGv1FjzjY0G46gTgi_mfL0yUjuCJlA2wQutq3jmPo,9798
|
|
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=
|
|
157
|
-
edu_rdm_integration/stages/collect_data/registry/templates/ui-js/
|
|
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
|
|
158
159
|
edu_rdm_integration/stages/export_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
159
160
|
edu_rdm_integration/stages/export_data/apps.py,sha256=TU6AaMZGQE2oHVwKgtUDzFplaVasb2tMIurhkhwkxZo,406
|
|
160
161
|
edu_rdm_integration/stages/export_data/consts.py,sha256=ZEi1kXMs-54KFKxkyGIQVwZ4d8OrOF_vLFQIjjWdSPQ,441
|
|
@@ -207,8 +208,8 @@ edu_rdm_integration/stages/export_data/migrations/__init__.py,sha256=47DEQpj8HBS
|
|
|
207
208
|
edu_rdm_integration/stages/export_data/registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
208
209
|
edu_rdm_integration/stages/export_data/registry/actions.py,sha256=r-NAPs4pYVectt_J38UzMsnKrWfYkjy2rhx3LUGKQWk,10423
|
|
209
210
|
edu_rdm_integration/stages/export_data/registry/apps.py,sha256=71DtJQ2ULt8_3CnTu2VAfT5ABBrDNY1nKTmZ6UtvIpw,448
|
|
210
|
-
edu_rdm_integration/stages/export_data/registry/ui.py,sha256=
|
|
211
|
-
edu_rdm_integration/stages/export_data/registry/templates/ui-js/create-export-command-win.js,sha256=
|
|
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
|
|
212
213
|
edu_rdm_integration/stages/export_data/registry/templates/ui-js/stage_for_export.js,sha256=329OZIpiKHlQ-i8JStjBLXtouIMKuJHbycArUGSskfk,737
|
|
213
214
|
edu_rdm_integration/stages/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
214
215
|
edu_rdm_integration/stages/service/apps.py,sha256=lgCG4_kpwgfDWh6y-GNuUwz5SOjkP7oS8kkUyVUcNRg,648
|
|
@@ -244,8 +245,8 @@ edu_rdm_integration/stages/upload_data/uploader_log/ui.py,sha256=mU3XA9zVKHGqzNk
|
|
|
244
245
|
edu_rdm_integration/stages/upload_data/uploader_log/migrations/0001_initial.py,sha256=r5oOB7DBK9-mfuqPAgjXUJY5-hEcmMdILCwDTpaLnBc,753
|
|
245
246
|
edu_rdm_integration/stages/upload_data/uploader_log/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
246
247
|
edu_rdm_integration/stages/upload_data/uploader_log/templates/ui-js/object-grid-buttons.js,sha256=2xyGe0wdVokM0RhpzRzcRvJPBkBmPe3SlZry4oP4Nzs,6201
|
|
247
|
-
edu_rdm_integration-3.16.
|
|
248
|
-
edu_rdm_integration-3.16.
|
|
249
|
-
edu_rdm_integration-3.16.
|
|
250
|
-
edu_rdm_integration-3.16.
|
|
251
|
-
edu_rdm_integration-3.16.
|
|
248
|
+
edu_rdm_integration-3.16.2.dist-info/licenses/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
|
|
249
|
+
edu_rdm_integration-3.16.2.dist-info/METADATA,sha256=OH3vRLpk80LhM4oaWAv3eIja9m6A67tjfsV0e1xrLeA,39780
|
|
250
|
+
edu_rdm_integration-3.16.2.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
|
251
|
+
edu_rdm_integration-3.16.2.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
|
|
252
|
+
edu_rdm_integration-3.16.2.dist-info/RECORD,,
|
edu_rdm_integration/stages/collect_data/registry/templates/ui-js/create-collect-command-win.js
DELETED
|
@@ -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
|
-
});
|
|
File without changes
|
{edu_rdm_integration-3.16.0.dist-info → edu_rdm_integration-3.16.2.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|