feat: словарь и вкладка Действия с ПДн в ИС

This commit is contained in:
2026-07-30 15:07:13 +04:00
parent eac0786bce
commit 371370f450
3 changed files with 52 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
[
"Сбор персональных данных",
"Запись персональных данных",
"Систематизация персональных данных",
"Накопление персональных данных",
"Хранение персональных данных",
"Уточнение (обновление, изменение) персональных данных",
"Извлечение персональных данных",
"Использование персональных данных",
"Передача (распространение, предоставление, доступ) персональных данных",
"Обезличивание персональных данных",
"Блокирование персональных данных",
"Удаление персональных данных",
"Уничтожение персональных данных",
"Трансграничная передача персональных данных",
"Автоматизированная обработка персональных данных",
"Неавтоматизированная обработка персональных данных",
"Смешанная обработка персональных данных",
"Формирование и ведение баз данных",
"Передача данных третьим лицам",
"Внутренняя передача данных между подразделениями"
]
+1
View File
@@ -28,6 +28,7 @@ class InformationSystem:
users: str = ""
defense_tools_list: List[str] = field(default_factory=list)
processing_modes: str = ""
pd_actions_list: List[str] = field(default_factory=list)
pd_subjects_list: List[str] = field(default_factory=list)
personal_data_list: List[str] = field(default_factory=list)
users_list: List[str] = field(default_factory=list)
+29
View File
@@ -358,6 +358,16 @@ class DokoGenApp:
self.pd_subjects_listbox = tk.Listbox(subj_tab, height=6)
self.pd_subjects_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
# Действия с ПДн
act_tab = ttk.Frame(nb2)
nb2.add(act_tab, text="Действия с ПДн")
act_btn_frame = ttk.Frame(act_tab)
act_btn_frame.pack(fill=tk.X)
ttk.Button(act_btn_frame, text="+ Добавить", command=self._add_pd_action_item).pack(side=tk.LEFT, padx=2)
ttk.Button(act_btn_frame, text="Выбрать из списка", command=self._select_from_actions_list).pack(side=tk.LEFT, padx=2)
self.pd_actions_listbox = tk.Listbox(act_tab, height=6)
self.pd_actions_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
# СЗИ
def_tab = ttk.Frame(nb2)
nb2.add(def_tab, text="Средства защиты")
@@ -606,6 +616,7 @@ class DokoGenApp:
# Списки
isys.personal_data_list = list(self.pd_listbox.get(0, tk.END))
isys.pd_subjects_list = list(self.pd_subjects_listbox.get(0, tk.END))
isys.pd_actions_list = list(self.pd_actions_listbox.get(0, tk.END))
isys.defense_tools_list = list(self.defense_tools_listbox.get(0, tk.END))
isys.users_list = list(self.users_listbox.get(0, tk.END))
@@ -840,6 +851,7 @@ class DokoGenApp:
for lb, items in [
(self.pd_listbox, isys.personal_data_list or []),
(self.pd_subjects_listbox, isys.pd_subjects_list or []),
(self.pd_actions_listbox, isys.pd_actions_list or []),
(self.defense_tools_listbox, isys.defense_tools_list or []),
(self.users_listbox, isys.users_list or []),
]:
@@ -872,6 +884,7 @@ class DokoGenApp:
threat_type=src.threat_type,
personal_data_category=list(src.personal_data_category),
personal_data_list=list(src.personal_data_list),
pd_actions_list=list(src.pd_actions_list),
pd_subjects_list=list(src.pd_subjects_list),
defense_tools_list=list(src.defense_tools_list),
users_list=list(src.users_list),
@@ -974,6 +987,22 @@ class DokoGenApp:
dialog.wait_window()
def _add_pd_action_item(self):
item = simpledialog.askstring("Добавить действие", "Введите действие с ПДн:")
if item:
self.pd_actions_listbox.insert(tk.END, item)
def _select_from_actions_list(self):
"""Выбор действий с ПДн из JSON словаря."""
import json
dict_path = os.path.join(os.path.dirname(__file__), 'dictionaries', 'pd_actions.json')
try:
with open(dict_path, 'r', encoding='utf-8') as f:
items = json.load(f)
self._select_from_dialog("Выбор действий с персональными данными", items, self.pd_actions_listbox)
except Exception as e:
messagebox.showerror("Ошибка", f"Не удалось загрузить словарь: {e}")
def _select_from_pd_list(self):
"""Выбор ПДн из JSON словаря."""
import json