fix: импорт старых данных (обратная совместимость)
- объекты КИИ: добавлены варианты во мн.ч. в словари типов объекта (Автоматизированные системы управления, Информационно-телекоммуникационные сети) и способов взаимодействия (Проводной, Без проводной) — как в старом опроснике - employees_access: фильтр плейсхолдеров («Формат: Фамилия Имя Отчество», «Пример: …») и пустых строк при загрузке файла (from_dict) и при импорте опросника
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
[
|
[
|
||||||
"проводной",
|
"проводной",
|
||||||
"беспроводной"
|
"беспроводной",
|
||||||
|
"Проводной",
|
||||||
|
"Без проводной"
|
||||||
]
|
]
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
[
|
[
|
||||||
"Информационная система",
|
"Информационная система",
|
||||||
"Автоматизированная система управления",
|
"Автоматизированная система управления",
|
||||||
"Информационно-телекоммуникационная сеть"
|
"Информационно-телекоммуникационная сеть",
|
||||||
|
"Автоматизированные системы управления",
|
||||||
|
"Информационно-телекоммуникационные сети"
|
||||||
]
|
]
|
||||||
@@ -154,6 +154,20 @@ class Company:
|
|||||||
]
|
]
|
||||||
if "employees_access" in d and not isinstance(d["employees_access"], list):
|
if "employees_access" in d and not isinstance(d["employees_access"], list):
|
||||||
d["employees_access"] = []
|
d["employees_access"] = []
|
||||||
|
# Отбрасываем плейсхолдеры из старых опросников («Формат: Фамилия Имя Отчество») и пустые строки
|
||||||
|
if "employees_access" in d and isinstance(d["employees_access"], list):
|
||||||
|
clean = []
|
||||||
|
for e in d["employees_access"]:
|
||||||
|
if not isinstance(e, dict):
|
||||||
|
continue
|
||||||
|
fio = str(e.get("fio", "")).strip()
|
||||||
|
pos = str(e.get("position", "")).strip()
|
||||||
|
if fio.lower().startswith("формат:") or fio.lower().startswith("пример:"):
|
||||||
|
continue
|
||||||
|
if not fio and not pos:
|
||||||
|
continue
|
||||||
|
clean.append(e)
|
||||||
|
d["employees_access"] = clean
|
||||||
if "okved_extra" in d and not isinstance(d.get("okved_extra"), list):
|
if "okved_extra" in d and not isinstance(d.get("okved_extra"), list):
|
||||||
d["okved_extra"] = []
|
d["okved_extra"] = []
|
||||||
valid = {f.name for f in cls.__dataclass_fields__.values()}
|
valid = {f.name for f in cls.__dataclass_fields__.values()}
|
||||||
|
|||||||
+9
-6
@@ -2479,14 +2479,17 @@ class DokoGenApp:
|
|||||||
row_frame.destroy()
|
row_frame.destroy()
|
||||||
self._employee_entries.clear()
|
self._employee_entries.clear()
|
||||||
for emp in data['employeesAccess']:
|
for emp in data['employeesAccess']:
|
||||||
|
fio = str(emp.get('fio', '')).strip()
|
||||||
|
pos = str(emp.get('position', '')).strip()
|
||||||
|
if fio.lower().startswith('формат:') or fio.lower().startswith('пример:'):
|
||||||
|
continue
|
||||||
|
if not fio and not pos:
|
||||||
|
continue
|
||||||
self.model.employees_access.append({
|
self.model.employees_access.append({
|
||||||
'position': emp.get('position', ''),
|
'position': pos,
|
||||||
'fio': emp.get('fio', ''),
|
'fio': fio,
|
||||||
})
|
})
|
||||||
self._add_employee_row(
|
self._add_employee_row(pos, fio)
|
||||||
emp.get('position', ''),
|
|
||||||
emp.get('fio', ''),
|
|
||||||
)
|
|
||||||
self._update_emp_count()
|
self._update_emp_count()
|
||||||
|
|
||||||
self.log("✅ Импорт применён")
|
self.log("✅ Импорт применён")
|
||||||
|
|||||||
Reference in New Issue
Block a user