feat: вкладки «Сеть» и «ПО» вместо «Сети и ПО», словарики сети, «Безопасность» вместо «Безопасность (236)»

- вкладка «Сеть»: категория сети (словарик), провайдер, цель взаимодействия (словарик), способ взаимодействия (словарик), ЛВС/Интернет
- вкладка «ПО»: ПО и аппаратные средства, ОС, прикладные программы
- словари: net_categories.json, net_purposes.json, net_methods.json
- вкладка безопасности переименована в «Безопасность»
This commit is contained in:
2026-08-04 15:38:08 +04:00
parent ffbe96d8c0
commit 4e7c3463f4
4 changed files with 86 additions and 24 deletions
+9
View File
@@ -0,0 +1,9 @@
[
"общего пользования",
"выделенная",
"технологическая",
"присоединенная к сети связи общего пользования",
"специального назначения",
"другая сеть связи для передачи информации при помощи электромагнитных систем",
"взаимодействие с сетями электросвязи отсутствует"
]
+4
View File
@@ -0,0 +1,4 @@
[
"проводной",
"беспроводной"
]
+7
View File
@@ -0,0 +1,7 @@
[
"передача (прием) информации",
"оказание услуг",
"управление",
"контроль за технологическим производственным оборудованием (исполнительными устройствами)",
"иная цель"
]
+66 -24
View File
@@ -859,9 +859,9 @@ class DokoGenApp:
setattr(self, attr, entry) setattr(self, attr, entry)
subj_frame.columnconfigure(1, weight=1) subj_frame.columnconfigure(1, weight=1)
# ===== Вкладка «Сети и ПО» ===== # ===== Вкладка «Сеть» =====
net_tab = ttk.Frame(nb2) net_tab = ttk.Frame(nb2)
nb2.add(net_tab, text="Сети и ПО") nb2.add(net_tab, text="Сеть")
net_frame = ttk.Frame(net_tab, padding=8) net_frame = ttk.Frame(net_tab, padding=8)
net_frame.pack(fill=tk.BOTH, expand=True) net_frame.pack(fill=tk.BOTH, expand=True)
@@ -873,26 +873,68 @@ class DokoGenApp:
self.is_internet_var = tk.BooleanVar() self.is_internet_var = tk.BooleanVar()
ttk.Checkbutton(chk, text="Интернет", variable=self.is_internet_var).pack(side=tk.LEFT, padx=5) ttk.Checkbutton(chk, text="Интернет", variable=self.is_internet_var).pack(side=tk.LEFT, padx=5)
net_fields = [ # Категория сети — словарик
("Категория сети электросвязи:", "is_net_category_entry", 1), ttk.Label(net_frame, text="Категория сети электросвязи:").grid(row=1, column=0, sticky=tk.W, pady=2)
("Оператор связи/провайдер хостинга:", "is_net_operator_entry", 2), self.is_net_category_combo = ttk.Combobox(net_frame, width=68)
("Цель взаимодействия с сетью:", "is_net_purpose_entry", 3), self.is_net_category_combo.grid(row=1, column=1, padx=8, sticky=tk.EW, pady=1)
("Способ взаимодействия/тип доступа:", "is_net_method_entry", 4), try:
("ПО и аппаратные средства:", "is_hw_sw_entry", 5), import json as _json
("Общесистемное ПО (ОС, виртуализация):", "is_os_sw_entry", 6), _nc = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_categories.json')
("Прикладные программы:", "is_app_sw_entry", 7), with open(_nc, encoding='utf-8') as _f:
("Программное обеспечение:", "is_software_entry", 8), self.is_net_category_combo['values'] = _json.load(_f)
] except Exception:
for label, attr, row in net_fields: pass
ttk.Label(net_frame, text=label).grid(row=row, column=0, sticky=tk.W, pady=2)
entry = ttk.Entry(net_frame, width=70) # Провайдер
entry.grid(row=row, column=1, padx=8, sticky=tk.EW, pady=1) ttk.Label(net_frame, text="Наименование провайдера:").grid(row=2, column=0, sticky=tk.W, pady=2)
setattr(self, attr, entry) self.is_net_operator_entry = ttk.Entry(net_frame, width=70)
self.is_net_operator_entry.grid(row=2, column=1, padx=8, sticky=tk.EW, pady=1)
# Цель взаимодействия — словарик
ttk.Label(net_frame, text="Цель взаимодействия с сетью электросвязи:").grid(row=3, column=0, sticky=tk.W, pady=2)
self.is_net_purpose_combo = ttk.Combobox(net_frame, width=68)
self.is_net_purpose_combo.grid(row=3, column=1, padx=8, sticky=tk.EW, pady=1)
try:
_np = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_purposes.json')
with open(_np, encoding='utf-8') as _f:
self.is_net_purpose_combo['values'] = _json.load(_f)
except Exception:
pass
# Способ взаимодействия — словарик
ttk.Label(net_frame, text="Способ взаимодействия (тип доступа):").grid(row=4, column=0, sticky=tk.W, pady=2)
self.is_net_method_combo = ttk.Combobox(net_frame, width=68)
self.is_net_method_combo.grid(row=4, column=1, padx=8, sticky=tk.EW, pady=1)
try:
_nm = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_methods.json')
with open(_nm, encoding='utf-8') as _f:
self.is_net_method_combo['values'] = _json.load(_f)
except Exception:
pass
net_frame.columnconfigure(1, weight=1) net_frame.columnconfigure(1, weight=1)
# ===== Вкладка «ПО» =====
sw_tab = ttk.Frame(nb2)
nb2.add(sw_tab, text="ПО")
sw_frame = ttk.Frame(sw_tab, padding=8)
sw_frame.pack(fill=tk.BOTH, expand=True)
sw_fields = [
("ПО и аппаратные средства (модели, производители, количество):", "is_hw_sw_entry"),
("Операционные системы:", "is_os_sw_entry"),
("Прикладные программы (MS Office, OpenOffice и пр.):", "is_app_sw_entry"),
]
for i, (label, attr) in enumerate(sw_fields):
ttk.Label(sw_frame, text=label).grid(row=i, column=0, sticky=tk.W, pady=2)
entry = ttk.Entry(sw_frame, width=70)
entry.grid(row=i, column=1, padx=8, sticky=tk.EW, pady=1)
setattr(self, attr, entry)
sw_frame.columnconfigure(1, weight=1)
# ===== Вкладка «Безопасность (236)» ===== # ===== Вкладка «Безопасность (236)» =====
sec_tab = ttk.Frame(nb2) sec_tab = ttk.Frame(nb2)
nb2.add(sec_tab, text="Безопасность (236)") nb2.add(sec_tab, text="Безопасность")
sec_frame = ttk.Frame(sec_tab, padding=8) sec_frame = ttk.Frame(sec_tab, padding=8)
sec_frame.pack(fill=tk.BOTH, expand=True) sec_frame.pack(fill=tk.BOTH, expand=True)
sec_fields = [ sec_fields = [
@@ -1172,10 +1214,10 @@ class DokoGenApp:
('is_subject_element_entry', 'subject_element'), ('is_subject_element_entry', 'subject_element'),
('is_subject_inn_entry', 'subject_inn'), ('is_subject_inn_entry', 'subject_inn'),
('is_subject_kpp_entry', 'subject_kpp'), ('is_subject_kpp_entry', 'subject_kpp'),
('is_net_category_entry', 'net_category'), ('is_net_category_combo', 'net_category'),
('is_net_operator_entry', 'net_operator'), ('is_net_operator_entry', 'net_operator'),
('is_net_purpose_entry', 'net_purpose'), ('is_net_purpose_combo', 'net_purpose'),
('is_net_method_entry', 'net_method'), ('is_net_method_combo', 'net_method'),
('is_hw_sw_entry', 'hw_sw'), ('is_hw_sw_entry', 'hw_sw'),
('is_os_sw_entry', 'os_sw'), ('is_os_sw_entry', 'os_sw'),
('is_app_sw_entry', 'app_sw'), ('is_app_sw_entry', 'app_sw'),
@@ -1405,10 +1447,10 @@ class DokoGenApp:
('is_subject_element_entry', 'subject_element'), ('is_subject_element_entry', 'subject_element'),
('is_subject_inn_entry', 'subject_inn'), ('is_subject_inn_entry', 'subject_inn'),
('is_subject_kpp_entry', 'subject_kpp'), ('is_subject_kpp_entry', 'subject_kpp'),
('is_net_category_entry', 'net_category'), ('is_net_category_combo', 'net_category'),
('is_net_operator_entry', 'net_operator'), ('is_net_operator_entry', 'net_operator'),
('is_net_purpose_entry', 'net_purpose'), ('is_net_purpose_combo', 'net_purpose'),
('is_net_method_entry', 'net_method'), ('is_net_method_combo', 'net_method'),
('is_hw_sw_entry', 'hw_sw'), ('is_hw_sw_entry', 'hw_sw'),
('is_os_sw_entry', 'os_sw'), ('is_os_sw_entry', 'os_sw'),
('is_app_sw_entry', 'app_sw'), ('is_app_sw_entry', 'app_sw'),