feat: словарь и вкладка Действия с ПДн в ИС
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
[
|
||||
"Сбор персональных данных",
|
||||
"Запись персональных данных",
|
||||
"Систематизация персональных данных",
|
||||
"Накопление персональных данных",
|
||||
"Хранение персональных данных",
|
||||
"Уточнение (обновление, изменение) персональных данных",
|
||||
"Извлечение персональных данных",
|
||||
"Использование персональных данных",
|
||||
"Передача (распространение, предоставление, доступ) персональных данных",
|
||||
"Обезличивание персональных данных",
|
||||
"Блокирование персональных данных",
|
||||
"Удаление персональных данных",
|
||||
"Уничтожение персональных данных",
|
||||
"Трансграничная передача персональных данных",
|
||||
"Автоматизированная обработка персональных данных",
|
||||
"Неавтоматизированная обработка персональных данных",
|
||||
"Смешанная обработка персональных данных",
|
||||
"Формирование и ведение баз данных",
|
||||
"Передача данных третьим лицам",
|
||||
"Внутренняя передача данных между подразделениями"
|
||||
]
|
||||
@@ -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)
|
||||
|
||||
@@ -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