fix: город, combobox pd_count, убрана кнопка расчёта, импорт описания
This commit is contained in:
+4
-5
@@ -245,11 +245,10 @@ def _import_152_is_list(wb, data, log_fn):
|
|||||||
if 'цель обработки' in field_lower:
|
if 'цель обработки' in field_lower:
|
||||||
current_section = 'purpose'
|
current_section = 'purpose'
|
||||||
elif current_section == 'purpose':
|
elif current_section == 'purpose':
|
||||||
if field and 'выбрать' not in field_lower and field_lower not in ('значение', 'примечание'):
|
purpose_val = field or val_b or ''
|
||||||
is_obj['description'] = field
|
if purpose_val and 'выбрать' not in purpose_val.lower():
|
||||||
log_fn(f" Цель: {field[:80]}")
|
is_obj['purpose'] = purpose_val
|
||||||
elif val_b and 'выбрать' not in field_lower:
|
log_fn(f" Цель: {purpose_val[:80]}")
|
||||||
is_obj['description'] = val_b
|
|
||||||
current_section = 'header'
|
current_section = 'header'
|
||||||
elif current_section == 'subjects':
|
elif current_section == 'subjects':
|
||||||
if is_checked and 'выбрать' not in field_lower:
|
if is_checked and 'выбрать' not in field_lower:
|
||||||
|
|||||||
+13
-20
@@ -201,7 +201,7 @@ class DokoGenApp:
|
|||||||
|
|
||||||
addr_fields = [
|
addr_fields = [
|
||||||
("Юридический адрес:", "address"),
|
("Юридический адрес:", "address"),
|
||||||
("Город (заполняется автоматически):", "city_name"),
|
("Город:", "city_name"),
|
||||||
("ИНН:", "inn"),
|
("ИНН:", "inn"),
|
||||||
("КПП:", "kpp"),
|
("КПП:", "kpp"),
|
||||||
("ОГРН:", "ogrn"),
|
("ОГРН:", "ogrn"),
|
||||||
@@ -309,8 +309,7 @@ class DokoGenApp:
|
|||||||
for lvl in ["1", "2", "3", "4"]:
|
for lvl in ["1", "2", "3", "4"]:
|
||||||
ttk.Radiobutton(def_frame, text=f"{lvl} ур.",
|
ttk.Radiobutton(def_frame, text=f"{lvl} ур.",
|
||||||
variable=self.is_defence_var, value=lvl).pack(side=tk.LEFT, padx=3)
|
variable=self.is_defence_var, value=lvl).pack(side=tk.LEFT, padx=3)
|
||||||
ttk.Button(def_frame, text="Рассчитать автоматически",
|
|
||||||
command=self._auto_calc_defence_level).pack(side=tk.LEFT, padx=10)
|
|
||||||
|
|
||||||
# Категории ПДн
|
# Категории ПДн
|
||||||
ttk.Label(fields_frame, text="Категории ПДн:").grid(row=5, column=0, sticky=tk.NW, pady=2)
|
ttk.Label(fields_frame, text="Категории ПДн:").grid(row=5, column=0, sticky=tk.NW, pady=2)
|
||||||
@@ -324,11 +323,14 @@ class DokoGenApp:
|
|||||||
cb.pack(anchor=tk.W)
|
cb.pack(anchor=tk.W)
|
||||||
self.category_vars.append((cat, var))
|
self.category_vars.append((cat, var))
|
||||||
|
|
||||||
# Количество записей ПДн
|
# Количество записей ПДн (выпадающий список)
|
||||||
ttk.Label(fields_frame, text="Кол-во записей:").grid(row=6, column=0, sticky=tk.W, pady=2)
|
ttk.Label(fields_frame, text="Кол-во записей:").grid(row=6, column=0, sticky=tk.W, pady=2)
|
||||||
self.is_pd_count_entry = ttk.Entry(fields_frame, width=30)
|
self.is_pd_count_var = tk.StringVar(value="менее 100 000")
|
||||||
self.is_pd_count_entry.grid(row=6, column=1, padx=10, sticky=tk.W)
|
self.is_pd_count_combo = ttk.Combobox(fields_frame, textvariable=self.is_pd_count_var,
|
||||||
self.is_pd_count_entry.bind('<KeyRelease>', lambda e: self._on_categories_or_count_changed())
|
values=["менее 100 000", "более 100 000"],
|
||||||
|
state='readonly', width=28)
|
||||||
|
self.is_pd_count_combo.grid(row=6, column=1, padx=10, sticky=tk.W)
|
||||||
|
self.is_pd_count_combo.bind('<<ComboboxSelected>>', lambda e: self._on_categories_or_count_changed())
|
||||||
|
|
||||||
fields_frame.columnconfigure(1, weight=1)
|
fields_frame.columnconfigure(1, weight=1)
|
||||||
|
|
||||||
@@ -734,7 +736,7 @@ class DokoGenApp:
|
|||||||
|
|
||||||
# Считываем категории
|
# Считываем категории
|
||||||
categories = [cat for cat, var in self.category_vars if var.get()]
|
categories = [cat for cat, var in self.category_vars if var.get()]
|
||||||
pd_count_text = self.is_pd_count_entry.get().strip() if hasattr(self, 'is_pd_count_entry') else ''
|
pd_count = self.is_pd_count_var.get() if hasattr(self, 'is_pd_count_var') else 'менее 100 000'
|
||||||
|
|
||||||
# Определяем базовый уровень (4 — самый низкий, по умолчанию)
|
# Определяем базовый уровень (4 — самый низкий, по умолчанию)
|
||||||
level = 4
|
level = 4
|
||||||
@@ -744,18 +746,9 @@ class DokoGenApp:
|
|||||||
if has_special:
|
if has_special:
|
||||||
level = 3
|
level = 3
|
||||||
|
|
||||||
# Больше 100 000 записей → повышаем уровень на 1 (уровень становится строже)
|
# Больше 100 000 записей → повышаем уровень на 1
|
||||||
if pd_count_text:
|
if 'более' in pd_count.lower():
|
||||||
# Парсим число
|
level = max(1, level - 1)
|
||||||
import re
|
|
||||||
nums = re.findall(r'\d+', pd_count_text.replace(' ', ''))
|
|
||||||
if nums:
|
|
||||||
count = int(nums[0])
|
|
||||||
if count > 100000:
|
|
||||||
level = max(1, level - 1) # Уровень повышается (число уменьшается)
|
|
||||||
# Также проверяем текстовые варианты
|
|
||||||
if 'более' in pd_count_text.lower() or 'свыше' in pd_count_text.lower():
|
|
||||||
level = max(1, level - 1)
|
|
||||||
|
|
||||||
self.is_defence_var.set(str(level))
|
self.is_defence_var.set(str(level))
|
||||||
self.log(f"🛡 Уровень защищённости автоматически рассчитан: {level}")
|
self.log(f"🛡 Уровень защищённости автоматически рассчитан: {level}")
|
||||||
|
|||||||
Reference in New Issue
Block a user