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:
|
||||
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
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user