fix: город, combobox pd_count, убрана кнопка расчёта, импорт описания

This commit is contained in:
2026-07-30 14:52:01 +04:00
parent 30cb3f66bf
commit eac0786bce
2 changed files with 17 additions and 25 deletions
+4 -5
View File
@@ -245,11 +245,10 @@ def _import_152_is_list(wb, data, log_fn):
if 'цель обработки' in field_lower:
current_section = 'purpose'
elif current_section == 'purpose':
if field and 'выбрать' not in field_lower and field_lower not in ('значение', 'примечание'):
is_obj['description'] = field
log_fn(f" Цель: {field[:80]}")
elif val_b and 'выбрать' not in field_lower:
is_obj['description'] = val_b
purpose_val = field or val_b or ''
if purpose_val and 'выбрать' not in purpose_val.lower():
is_obj['purpose'] = purpose_val
log_fn(f" Цель: {purpose_val[:80]}")
current_section = 'header'
elif current_section == 'subjects':
if is_checked and 'выбрать' not in field_lower:
+13 -20
View File
@@ -201,7 +201,7 @@ class DokoGenApp:
addr_fields = [
("Юридический адрес:", "address"),
("Город (заполняется автоматически):", "city_name"),
("Город:", "city_name"),
("ИНН:", "inn"),
("КПП:", "kpp"),
("ОГРН:", "ogrn"),
@@ -309,8 +309,7 @@ class DokoGenApp:
for lvl in ["1", "2", "3", "4"]:
ttk.Radiobutton(def_frame, text=f"{lvl} ур.",
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)
@@ -324,11 +323,14 @@ class DokoGenApp:
cb.pack(anchor=tk.W)
self.category_vars.append((cat, var))
# Количество записей ПДн
# Количество записей ПДн (выпадающий список)
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_entry.grid(row=6, column=1, padx=10, sticky=tk.W)
self.is_pd_count_entry.bind('<KeyRelease>', lambda e: self._on_categories_or_count_changed())
self.is_pd_count_var = tk.StringVar(value="менее 100 000")
self.is_pd_count_combo = ttk.Combobox(fields_frame, textvariable=self.is_pd_count_var,
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)
@@ -734,7 +736,7 @@ class DokoGenApp:
# Считываем категории
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 — самый низкий, по умолчанию)
level = 4
@@ -744,18 +746,9 @@ class DokoGenApp:
if has_special:
level = 3
# Больше 100 000 записей → повышаем уровень на 1 (уровень становится строже)
if pd_count_text:
# Парсим число
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)
# Больше 100 000 записей → повышаем уровень на 1
if 'более' in pd_count.lower():
level = max(1, level - 1)
self.is_defence_var.set(str(level))
self.log(f"🛡 Уровень защищённости автоматически рассчитан: {level}")