edu-rdm-integration 0.7.3__py3-none-any.whl → 0.8.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.
- edu_rdm_integration/migrations/0004_uploaderclientlog.py +25 -0
- edu_rdm_integration/models.py +69 -0
- edu_rdm_integration/uploader_log/__init__.py +0 -0
- edu_rdm_integration/uploader_log/actions.py +229 -0
- edu_rdm_integration/uploader_log/apps.py +10 -0
- edu_rdm_integration/uploader_log/enums.py +15 -0
- edu_rdm_integration/uploader_log/managers.py +100 -0
- edu_rdm_integration/uploader_log/ui.py +64 -0
- {edu_rdm_integration-0.7.3.dist-info → edu_rdm_integration-0.8.0.dist-info}/METADATA +15 -2
- {edu_rdm_integration-0.7.3.dist-info → edu_rdm_integration-0.8.0.dist-info}/RECORD +14 -7
- {edu_rdm_integration-0.7.3.dist-info → edu_rdm_integration-0.8.0.dist-info}/LICENSE +0 -0
- {edu_rdm_integration-0.7.3.dist-info → edu_rdm_integration-0.8.0.dist-info}/WHEEL +0 -0
- {edu_rdm_integration-0.7.3.dist-info → edu_rdm_integration-0.8.0.dist-info}/namespace_packages.txt +0 -0
- {edu_rdm_integration-0.7.3.dist-info → edu_rdm_integration-0.8.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
# Generated by Django 2.2.28 on 2023-12-01 20:58
|
2
|
+
from django.db import (
|
3
|
+
migrations,
|
4
|
+
)
|
5
|
+
|
6
|
+
|
7
|
+
class Migration(migrations.Migration):
|
8
|
+
|
9
|
+
dependencies = [
|
10
|
+
('uploader_client', '0001_initial'),
|
11
|
+
('edu_rdm_integration', '0003_create_index_file_upload_status'),
|
12
|
+
]
|
13
|
+
|
14
|
+
operations = [
|
15
|
+
migrations.CreateModel(
|
16
|
+
name='UploaderClientLog',
|
17
|
+
fields=[],
|
18
|
+
options={
|
19
|
+
'proxy': True,
|
20
|
+
'indexes': [],
|
21
|
+
'constraints': [],
|
22
|
+
},
|
23
|
+
bases=('edu_rdm_integration.exportingdatasubstageuploaderclientlog', ),
|
24
|
+
),
|
25
|
+
]
|
edu_rdm_integration/models.py
CHANGED
@@ -56,6 +56,28 @@ from edu_rdm_integration.enums import (
|
|
56
56
|
from edu_rdm_integration.utils import (
|
57
57
|
get_exporting_data_stage_attachment_path,
|
58
58
|
)
|
59
|
+
from io import (
|
60
|
+
StringIO,
|
61
|
+
)
|
62
|
+
from typing import (
|
63
|
+
Optional,
|
64
|
+
Tuple,
|
65
|
+
)
|
66
|
+
|
67
|
+
from django.db.models import (
|
68
|
+
Manager,
|
69
|
+
)
|
70
|
+
from django.utils.functional import (
|
71
|
+
cached_property,
|
72
|
+
)
|
73
|
+
|
74
|
+
from uploader_client.models import (
|
75
|
+
Entry,
|
76
|
+
)
|
77
|
+
|
78
|
+
from edu_rdm_integration.uploader_log.managers import (
|
79
|
+
UploaderClientLogManager,
|
80
|
+
)
|
59
81
|
|
60
82
|
|
61
83
|
class CollectingDataStageStatus(TitledModelEnum):
|
@@ -755,3 +777,50 @@ class AbstractCollectDataCommandProgress(ReprStrPreModelMixin, BaseObjectModel):
|
|
755
777
|
db_table = 'rdm_collecting_data_command_progress'
|
756
778
|
verbose_name = 'Задача по сбору данных'
|
757
779
|
verbose_name_plural = 'Задачи по сбору данных'
|
780
|
+
|
781
|
+
|
782
|
+
class UploaderClientLog(Entry):
|
783
|
+
"""Прокси модель Загрузчика данных в витрину."""
|
784
|
+
|
785
|
+
objects = UploaderClientLogManager()
|
786
|
+
base_objects = Manager()
|
787
|
+
|
788
|
+
@cached_property
|
789
|
+
def http_method_and_url(self) -> Tuple[str, str]:
|
790
|
+
"""Возвращает http-метод и url из поля запроса Entry.request."""
|
791
|
+
request = StringIO(self.request)
|
792
|
+
request_first_line = request.readline()
|
793
|
+
request.close()
|
794
|
+
|
795
|
+
method, url = request_first_line.split(' ')[:2]
|
796
|
+
if not (method and url.startswith('http')):
|
797
|
+
method = url = ''
|
798
|
+
|
799
|
+
return method.strip('[]'), url
|
800
|
+
|
801
|
+
@cached_property
|
802
|
+
def http_response_status(self) -> str:
|
803
|
+
"""Статус-код запроса к витрине."""
|
804
|
+
try:
|
805
|
+
http_status = self.response.split(' ')[0].strip('[]')
|
806
|
+
except IndexError:
|
807
|
+
http_status = None
|
808
|
+
return http_status
|
809
|
+
|
810
|
+
@property
|
811
|
+
def http_method(self) -> str:
|
812
|
+
"""Значение http-метода."""
|
813
|
+
return self.http_method_and_url[0]
|
814
|
+
|
815
|
+
@property
|
816
|
+
def request_url(self) -> str:
|
817
|
+
"""URL запроса."""
|
818
|
+
return self.http_method_and_url[1]
|
819
|
+
|
820
|
+
@property
|
821
|
+
def request_error(self) -> Optional[str]:
|
822
|
+
"""Ошибка запроса."""
|
823
|
+
return self.error
|
824
|
+
|
825
|
+
class Meta:
|
826
|
+
proxy = True
|
File without changes
|
@@ -0,0 +1,229 @@
|
|
1
|
+
from datetime import (
|
2
|
+
date,
|
3
|
+
datetime,
|
4
|
+
time,
|
5
|
+
timedelta,
|
6
|
+
)
|
7
|
+
from functools import (
|
8
|
+
partial,
|
9
|
+
)
|
10
|
+
from typing import (
|
11
|
+
Optional,
|
12
|
+
)
|
13
|
+
|
14
|
+
from django.db.models import (
|
15
|
+
Q,
|
16
|
+
)
|
17
|
+
from m3_ext.ui.icons import (
|
18
|
+
Icons,
|
19
|
+
)
|
20
|
+
from objectpack.actions import (
|
21
|
+
ObjectPack,
|
22
|
+
)
|
23
|
+
|
24
|
+
from educommon.objectpack.actions import (
|
25
|
+
ExtObjectRowsAction,
|
26
|
+
)
|
27
|
+
from educommon.objectpack.filters import (
|
28
|
+
BoolChoicesFilter,
|
29
|
+
ColumnFilterEngine,
|
30
|
+
DateFilterByAnnotatedField,
|
31
|
+
)
|
32
|
+
from educommon.utils.object_grid import (
|
33
|
+
add_one_row_button,
|
34
|
+
boolean_column_renderer,
|
35
|
+
)
|
36
|
+
from educommon.utils.ui import (
|
37
|
+
append_template_globals,
|
38
|
+
)
|
39
|
+
|
40
|
+
from edu_rdm_integration.models import (
|
41
|
+
UploaderClientLog,
|
42
|
+
)
|
43
|
+
from edu_rdm_integration.uploader_log.ui import (
|
44
|
+
UploaderLogInfoWindow,
|
45
|
+
)
|
46
|
+
|
47
|
+
|
48
|
+
class UploaderLogPack(ObjectPack):
|
49
|
+
"""
|
50
|
+
Пак журнала Загрузчика данных в витрину.
|
51
|
+
"""
|
52
|
+
|
53
|
+
title = 'Журнал логов РВД'
|
54
|
+
model = UploaderClientLog
|
55
|
+
|
56
|
+
edit_window = UploaderLogInfoWindow
|
57
|
+
|
58
|
+
_is_primary_for_model = False
|
59
|
+
can_delete = False
|
60
|
+
list_sort_order = ['-request_datetime']
|
61
|
+
_DEFAULT_PAGING_LIMIT = 35
|
62
|
+
|
63
|
+
filter_engine_clz = ColumnFilterEngine
|
64
|
+
_fd = partial(DateFilterByAnnotatedField, model)
|
65
|
+
|
66
|
+
need_check_permission = True
|
67
|
+
|
68
|
+
columns = [
|
69
|
+
{
|
70
|
+
'header': '№ п/п',
|
71
|
+
'data_index': 'row_number',
|
72
|
+
'sortable': False,
|
73
|
+
'width': 3,
|
74
|
+
},
|
75
|
+
{
|
76
|
+
'header': 'Метод',
|
77
|
+
'data_index': 'http_method',
|
78
|
+
'sortable': False,
|
79
|
+
'width': 3,
|
80
|
+
},
|
81
|
+
{
|
82
|
+
'header': 'URL',
|
83
|
+
'data_index': 'request_url',
|
84
|
+
'searchable': True,
|
85
|
+
'sortable': False,
|
86
|
+
'width': 21,
|
87
|
+
},
|
88
|
+
{
|
89
|
+
'header': 'Дата и время запроса',
|
90
|
+
'data_index': 'request_datetime',
|
91
|
+
'sortable': True,
|
92
|
+
'filter': _fd(
|
93
|
+
'request_datetime',
|
94
|
+
tooltip='C',
|
95
|
+
default_value=date.today() - timedelta(days=1),
|
96
|
+
editable=False,
|
97
|
+
lookup=lambda v: Q(request_datetime__gte=datetime.combine(v, time.min))
|
98
|
+
) & _fd(
|
99
|
+
'request_datetime',
|
100
|
+
tooltip='По',
|
101
|
+
default_value=date.today,
|
102
|
+
editable=False,
|
103
|
+
lookup=lambda v: Q(request_datetime__lte=datetime.combine(v, time.max))
|
104
|
+
),
|
105
|
+
'width': 11,
|
106
|
+
},
|
107
|
+
{
|
108
|
+
'header': 'Результат',
|
109
|
+
'data_index': 'http_response_status',
|
110
|
+
'sortable': False,
|
111
|
+
'width': 5,
|
112
|
+
},
|
113
|
+
{
|
114
|
+
'header': 'Путь до файлов',
|
115
|
+
'data_index': 'attachment_file',
|
116
|
+
'sortable': False,
|
117
|
+
'searchable': True,
|
118
|
+
'width': 37,
|
119
|
+
},
|
120
|
+
{
|
121
|
+
'header': 'ID запроса',
|
122
|
+
'data_index': 'request_id',
|
123
|
+
'sortable': False,
|
124
|
+
'searchable': True,
|
125
|
+
'width': 10,
|
126
|
+
},
|
127
|
+
{
|
128
|
+
'header': 'Код статуса загрузки',
|
129
|
+
'data_index': 'status_code',
|
130
|
+
'sortable': False,
|
131
|
+
'searchable': True,
|
132
|
+
'width': 10,
|
133
|
+
},
|
134
|
+
{
|
135
|
+
'header': 'Описание статуса загрузки',
|
136
|
+
'data_index': 'status_description',
|
137
|
+
'sortable': False,
|
138
|
+
'searchable': True,
|
139
|
+
'width': 10,
|
140
|
+
},
|
141
|
+
{
|
142
|
+
'header': 'Режим эмуляции',
|
143
|
+
'data_index': 'is_emulation',
|
144
|
+
'sortable': False,
|
145
|
+
'filter': BoolChoicesFilter('is_emulation'),
|
146
|
+
'column_renderer': boolean_column_renderer(),
|
147
|
+
'width': 5,
|
148
|
+
}
|
149
|
+
]
|
150
|
+
|
151
|
+
def __init__(self):
|
152
|
+
"""Инициализация."""
|
153
|
+
super(UploaderLogPack, self).__init__()
|
154
|
+
|
155
|
+
self.edit_window_action.perm_code = 'view'
|
156
|
+
self.replace_action('rows_action', ExtObjectRowsAction())
|
157
|
+
|
158
|
+
def get_rows_query(self, request, context):
|
159
|
+
"""Возвращает кварисет для получения списка данных."""
|
160
|
+
context._row_number = int(getattr(context, 'start', 0))
|
161
|
+
|
162
|
+
return super().get_rows_query(request, context)
|
163
|
+
|
164
|
+
def get_row(self, row_id: Optional[int]) -> 'UploaderClientLog':
|
165
|
+
"""Возвращает объект по идентификатору."""
|
166
|
+
if row_id:
|
167
|
+
record = self.model.base_objects.get(id=row_id)
|
168
|
+
else:
|
169
|
+
record = super().get_row(row_id)
|
170
|
+
|
171
|
+
return record
|
172
|
+
|
173
|
+
def prepare_row(self, obj, request, context):
|
174
|
+
"""Установка дополнительных атрибутов объекта."""
|
175
|
+
context._row_number += 1
|
176
|
+
obj.row_number = context._row_number
|
177
|
+
|
178
|
+
return obj
|
179
|
+
|
180
|
+
def create_list_window(self, is_select_mode, request, context):
|
181
|
+
"""Создание окна списка."""
|
182
|
+
win = super().create_list_window(is_select_mode, request, context)
|
183
|
+
|
184
|
+
append_template_globals(win, 'ui-js/object-grid-buttons.js')
|
185
|
+
|
186
|
+
return win
|
187
|
+
|
188
|
+
def get_list_window_params(self, params, request, context):
|
189
|
+
"""Установка параметров окна списка."""
|
190
|
+
params = super().get_list_window_params(params, request, context)
|
191
|
+
|
192
|
+
params.update(
|
193
|
+
maximized=True,
|
194
|
+
)
|
195
|
+
|
196
|
+
return params
|
197
|
+
|
198
|
+
def configure_grid(self, grid, *args, **kwargs):
|
199
|
+
"""Конфигурирование грида окна списка."""
|
200
|
+
super().configure_grid(grid, *args, **kwargs)
|
201
|
+
|
202
|
+
grid.url_edit = None
|
203
|
+
add_one_row_button(
|
204
|
+
'Просмотр',
|
205
|
+
grid,
|
206
|
+
self.edit_window_action,
|
207
|
+
Icons.APPLICATION_VIEW_DETAIL,
|
208
|
+
dbl_clicked=True,
|
209
|
+
index=0,
|
210
|
+
)
|
211
|
+
|
212
|
+
def get_edit_window_params(self, params, request, context):
|
213
|
+
"""Параметры окна редактирования."""
|
214
|
+
params = super().get_edit_window_params(params, request, context)
|
215
|
+
|
216
|
+
params.update(
|
217
|
+
title=f'{self.title}: Просмотр',
|
218
|
+
)
|
219
|
+
|
220
|
+
return params
|
221
|
+
|
222
|
+
def extend_menu(self, menu): # noqa D102
|
223
|
+
return menu.SubMenu(
|
224
|
+
'Администрирование', menu.SubMenu(
|
225
|
+
'Региональная витрина данных', menu.Item(
|
226
|
+
self.title, self.list_window_action
|
227
|
+
)
|
228
|
+
)
|
229
|
+
)
|
@@ -0,0 +1,100 @@
|
|
1
|
+
from django.db.models import (
|
2
|
+
Case,
|
3
|
+
CharField,
|
4
|
+
F,
|
5
|
+
Manager,
|
6
|
+
PositiveSmallIntegerField,
|
7
|
+
Q,
|
8
|
+
Value,
|
9
|
+
When,
|
10
|
+
)
|
11
|
+
from django.db.models.functions import (
|
12
|
+
Cast,
|
13
|
+
)
|
14
|
+
|
15
|
+
from edu_rdm_integration.uploader_log.enums import (
|
16
|
+
RequestResultStatus,
|
17
|
+
)
|
18
|
+
|
19
|
+
|
20
|
+
class UploaderClientLogManager(Manager):
|
21
|
+
"""Менеджер модели журнала Загрузчика данных в витрину."""
|
22
|
+
|
23
|
+
def get_queryset(self):
|
24
|
+
"""Возвращает кварисет."""
|
25
|
+
query = super().get_queryset()
|
26
|
+
|
27
|
+
result_status = Case(
|
28
|
+
When(
|
29
|
+
Q(Q(error__isnull=True) | Q(error__exact=''))
|
30
|
+
& Q(Q(response__isnull=False) & ~Q(response__exact='')),
|
31
|
+
then=Value(RequestResultStatus.SUCCESS)
|
32
|
+
),
|
33
|
+
default=Value(RequestResultStatus.ERROR),
|
34
|
+
output_field=PositiveSmallIntegerField(),
|
35
|
+
)
|
36
|
+
|
37
|
+
query = query.annotate(
|
38
|
+
request_datetime=F('date_time'),
|
39
|
+
attachment_file=Case(
|
40
|
+
When(
|
41
|
+
request__icontains='POST',
|
42
|
+
then=F('uploader_client_log__attachment__attachment')
|
43
|
+
),
|
44
|
+
When(
|
45
|
+
request__icontains='GET',
|
46
|
+
then=F('upload_status_request_log__upload__attachment__attachment'),
|
47
|
+
),
|
48
|
+
default=Value('')
|
49
|
+
),
|
50
|
+
status_code=Case(
|
51
|
+
When(
|
52
|
+
request__icontains='POST',
|
53
|
+
then=Value('', output_field=CharField())
|
54
|
+
),
|
55
|
+
When(
|
56
|
+
request__icontains='GET',
|
57
|
+
then=Cast(
|
58
|
+
'upload_status_request_log__status__code',
|
59
|
+
output_field=CharField()
|
60
|
+
),
|
61
|
+
),
|
62
|
+
default=Value('')
|
63
|
+
),
|
64
|
+
status_description=Case(
|
65
|
+
When(
|
66
|
+
request__icontains='POST',
|
67
|
+
then=Value('', output_field=CharField()),
|
68
|
+
),
|
69
|
+
When(
|
70
|
+
request__icontains='GET',
|
71
|
+
then=F('upload_status_request_log__status__description'),
|
72
|
+
),
|
73
|
+
default=Value('')
|
74
|
+
),
|
75
|
+
is_emulation=Case(
|
76
|
+
When(
|
77
|
+
request__icontains='POST',
|
78
|
+
then=F('uploader_client_log__is_emulation'),
|
79
|
+
),
|
80
|
+
When(
|
81
|
+
request__icontains='GET',
|
82
|
+
then=F('upload_status_request_log__upload__is_emulation'),
|
83
|
+
),
|
84
|
+
default=Value(False)
|
85
|
+
),
|
86
|
+
request_id=Case(
|
87
|
+
When(
|
88
|
+
request__icontains='POST',
|
89
|
+
then=F('uploader_client_log__request_id')
|
90
|
+
),
|
91
|
+
When(
|
92
|
+
request__icontains='GET',
|
93
|
+
then=F('upload_status_request_log__upload__request_id')
|
94
|
+
),
|
95
|
+
default=Value('')
|
96
|
+
),
|
97
|
+
result_status=result_status
|
98
|
+
)
|
99
|
+
|
100
|
+
return query
|
@@ -0,0 +1,64 @@
|
|
1
|
+
from m3_ext.ui.fields import (
|
2
|
+
ExtTextArea,
|
3
|
+
)
|
4
|
+
from objectpack.ui import (
|
5
|
+
BaseEditWindow,
|
6
|
+
)
|
7
|
+
|
8
|
+
from educommon.utils.ui import (
|
9
|
+
switch_window_in_read_only_mode,
|
10
|
+
)
|
11
|
+
|
12
|
+
|
13
|
+
class UploaderLogInfoWindow(BaseEditWindow):
|
14
|
+
"""Окно просмотра лога Загрузчика данных в витрину."""
|
15
|
+
|
16
|
+
def _init_components(self):
|
17
|
+
"""Инициализация компонентов окна."""
|
18
|
+
super(UploaderLogInfoWindow, self)._init_components()
|
19
|
+
|
20
|
+
self.field__request = ExtTextArea(
|
21
|
+
label='Запрос',
|
22
|
+
name='request',
|
23
|
+
anchor='100%',
|
24
|
+
height=160,
|
25
|
+
)
|
26
|
+
self.field__response = ExtTextArea(
|
27
|
+
label='Ответ',
|
28
|
+
name='response',
|
29
|
+
anchor='100%',
|
30
|
+
height=160,
|
31
|
+
)
|
32
|
+
self.field__error = ExtTextArea(
|
33
|
+
label='Ошибка',
|
34
|
+
name='request_error',
|
35
|
+
anchor='100%',
|
36
|
+
height=80,
|
37
|
+
)
|
38
|
+
self.field__attachment = ExtTextArea(
|
39
|
+
label='Вложения',
|
40
|
+
name='attachment_file',
|
41
|
+
anchor='100%',
|
42
|
+
height=40,
|
43
|
+
)
|
44
|
+
|
45
|
+
def _do_layout(self):
|
46
|
+
"""Размещение компонентов окна на форме."""
|
47
|
+
super(UploaderLogInfoWindow, self)._do_layout()
|
48
|
+
|
49
|
+
self.form.items.extend((
|
50
|
+
self.field__request,
|
51
|
+
self.field__response,
|
52
|
+
self.field__error,
|
53
|
+
self.field__attachment,
|
54
|
+
))
|
55
|
+
|
56
|
+
def set_params(self, params):
|
57
|
+
"""Настройка окна."""
|
58
|
+
super(UploaderLogInfoWindow, self).set_params(params)
|
59
|
+
|
60
|
+
self.height = 'auto'
|
61
|
+
self.width = 700
|
62
|
+
|
63
|
+
switch_window_in_read_only_mode(self)
|
64
|
+
self.make_read_only()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: edu-rdm-integration
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.8.0
|
4
4
|
Summary: Интеграция с Региональной витриной данных
|
5
5
|
Home-page:
|
6
6
|
Download-URL:
|
@@ -28,7 +28,7 @@ Requires-Dist: setuptools <69,>=47.3.1
|
|
28
28
|
Requires-Dist: wheel <0.42,>=0.37.1
|
29
29
|
Requires-Dist: transliterate <2
|
30
30
|
Requires-Dist: Django <2.3,>=1.11
|
31
|
-
Requires-Dist: educommon <4,>=3.
|
31
|
+
Requires-Dist: educommon <4,>=3.6.0
|
32
32
|
Requires-Dist: function-tools <1,>=0.8.0
|
33
33
|
Requires-Dist: m3-db-utils <1,>=0.3.8
|
34
34
|
Requires-Dist: uploader-client <1,>=0.2.1
|
@@ -289,6 +289,16 @@ Requires-Dist: uploader-client <1,>=0.2.1
|
|
289
289
|
|
290
290
|
### Удалено
|
291
291
|
|
292
|
+
## [0.8.0] - 2023-12-05
|
293
|
+
|
294
|
+
Вынесен функционал просмотра логов РВД из ЭШ.
|
295
|
+
|
296
|
+
### Изменено
|
297
|
+
|
298
|
+
- [EDUCLLG-7736](https://jira.bars.group/browse/EDUCLLG-7736)
|
299
|
+
MINOR Вынесен функционал просмотра логов РВД из ЭШ.
|
300
|
+
|
301
|
+
|
292
302
|
## [0.7.3] - 2023-12-07
|
293
303
|
|
294
304
|
Исправлена аннотация в шаблоне managers.py-tpl для функции экспорта.
|
@@ -298,6 +308,7 @@ Requires-Dist: uploader-client <1,>=0.2.1
|
|
298
308
|
- [EDUSCHL-19604](https://jira.bars.group/browse/EDUSCHL-19604)
|
299
309
|
PATCH Исправлена аннотация в шаблоне managers.py-tpl для функции экспорта.
|
300
310
|
|
311
|
+
|
301
312
|
## [0.7.2] - 2023-12-05
|
302
313
|
|
303
314
|
В метод _clean_data класса BaseCollectingFunctionTestCase добавлена возможность обрабатывать поля относящиеся к
|
@@ -312,6 +323,7 @@ Requires-Dist: uploader-client <1,>=0.2.1
|
|
312
323
|
- [EDUSCHL-19507](https://jira.bars.group/browse/EDUSCHL-19507)
|
313
324
|
PATCH Добавление обработки plugins_info при генерации списка данных формирования команд.
|
314
325
|
|
326
|
+
|
315
327
|
## [0.7.1] - 2023-12-02
|
316
328
|
|
317
329
|
Доработано получение множества моделей на основе данных plugins_info при работе метода _get_loggable_models.
|
@@ -321,6 +333,7 @@ Requires-Dist: uploader-client <1,>=0.2.1
|
|
321
333
|
- [EDUSCHL-19576](https://jira.bars.group/browse/EDUSCHL-20954)
|
322
334
|
PATCH Доработано получение множества моделей на основе данных plugins_info при работе метода _get_loggable_models.
|
323
335
|
|
336
|
+
|
324
337
|
## [0.7.0] - 2023-12-02
|
325
338
|
|
326
339
|
Добавлено формирование логов для последующего скачивания.
|
@@ -5,7 +5,7 @@ edu_rdm_integration/consts.py,sha256=chOsPOOY4_JLzN-8idg-VjbLWSlp6r3maFWqnvUsapg
|
|
5
5
|
edu_rdm_integration/entities.py,sha256=mAjsYlcIbemo4xT5CSCr4payZubiBHB7Rb3Ow1CVsy0,14552
|
6
6
|
edu_rdm_integration/enums.py,sha256=fnDPz6pwOYWS6vp65IAExbpDzn2q9U3_9GGyuf4B468,4876
|
7
7
|
edu_rdm_integration/mapping.py,sha256=bwa2fJCbV4YjQcAgRrgT3hgM6dJhr_uBtQgx3L3F2Ck,473
|
8
|
-
edu_rdm_integration/models.py,sha256=
|
8
|
+
edu_rdm_integration/models.py,sha256=EqLDzsmuSLRcVbAPgySMRhnuRtgKFQaOri4ffl2sEKE,26702
|
9
9
|
edu_rdm_integration/signals.py,sha256=3eRlpkDcFCF6TN80-QM8yBYLcyozzcmoPjz6r4_ApWg,73
|
10
10
|
edu_rdm_integration/storages.py,sha256=o5WqUG7SnkeuMt-z8spUi-IraivST-7KHzfY-M3v7FA,6807
|
11
11
|
edu_rdm_integration/utils.py,sha256=vjme0N6tEXnHt6SaqjavZshjwc-mVv4X3Pz37a5YgTw,7092
|
@@ -134,10 +134,17 @@ edu_rdm_integration/management/commands/export_entities_data.py,sha256=Mas1zwsH-
|
|
134
134
|
edu_rdm_integration/migrations/0001_initial.py,sha256=toNuYoHZePe5wJ6AKEW9oPOdt2OefmxDEDDJGYQIrFk,18719
|
135
135
|
edu_rdm_integration/migrations/0002_init_data_uploadstatus.py,sha256=kht966YNuDbC3qTGrcWswJPsVuAtNO59Ck15G2eS2bU,944
|
136
136
|
edu_rdm_integration/migrations/0003_create_index_file_upload_status.py,sha256=TiLnqQ8bxkVI7sRa5-D3JQ6jopFYDoH1ytSxmU6USUo,735
|
137
|
+
edu_rdm_integration/migrations/0004_uploaderclientlog.py,sha256=Llw_cqPpYJSrbEuEsFraUWKrBSq_tFbGzTlO2DnqOKg,626
|
137
138
|
edu_rdm_integration/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
138
|
-
edu_rdm_integration
|
139
|
-
edu_rdm_integration
|
140
|
-
edu_rdm_integration
|
141
|
-
edu_rdm_integration
|
142
|
-
edu_rdm_integration
|
143
|
-
edu_rdm_integration
|
139
|
+
edu_rdm_integration/uploader_log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
140
|
+
edu_rdm_integration/uploader_log/actions.py,sha256=CIFfmft5m7Nnl_9Drw7FdCVWr9htKJcbcimb4Dcl3EQ,6568
|
141
|
+
edu_rdm_integration/uploader_log/apps.py,sha256=tYJj4-sDlq8fLOSvw18L_yys7SILpTKWNmE2Qug6GnE,265
|
142
|
+
edu_rdm_integration/uploader_log/enums.py,sha256=rgSO3BL2rh2xpfm0Pt4waQW8fB1VMJLdsGmr3SXwH_U,266
|
143
|
+
edu_rdm_integration/uploader_log/managers.py,sha256=Oe2R1G2toEdaEh9ftU1_5s9-t_VFIXgR0TlvbIZyosk,3166
|
144
|
+
edu_rdm_integration/uploader_log/ui.py,sha256=i3q4dNYiKPcZMP3QgbKFD0aTysBntXE-Hu_B6nSjrYU,1789
|
145
|
+
edu_rdm_integration-0.8.0.dist-info/LICENSE,sha256=uw43Gjjj-1vXWCItfSrNDpbejnOwZMrNerUh8oWbq8Q,3458
|
146
|
+
edu_rdm_integration-0.8.0.dist-info/METADATA,sha256=gzs_8o4A12ziXqhjwWP4BBwN5h3yma-2xSk1vQDVuzY,45107
|
147
|
+
edu_rdm_integration-0.8.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
148
|
+
edu_rdm_integration-0.8.0.dist-info/namespace_packages.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
149
|
+
edu_rdm_integration-0.8.0.dist-info/top_level.txt,sha256=nRJV0O14UtNE-jGIYG03sohgFnZClvf57H5m6VBXe9Y,20
|
150
|
+
edu_rdm_integration-0.8.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{edu_rdm_integration-0.7.3.dist-info → edu_rdm_integration-0.8.0.dist-info}/namespace_packages.txt
RENAMED
File without changes
|
File without changes
|