feat: словарь и вкладка Действия с ПДн в ИС
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user