fix: импортёр отбрасывает текст-подсказки из примечаний; выпадающие списки только для выбора
- importer: фильтр HINT_MARKERS — значения вида «Формулировка должна строиться...», «Например...», «Выберите из...» и т.п. не импортируются в поля объекта - ui: все Combobox (сфера, тип, архитектура, типовой объект, категория/цель/способ сети) — state='readonly', нельзя редактировать вручную
This commit is contained in:
+17
-2
@@ -308,9 +308,24 @@ def _import_187_is_list(wb, data, settings, log_fn):
|
||||
'гарантирован': 'Доверенная загрузка',
|
||||
}
|
||||
|
||||
HINT_MARKERS = [
|
||||
'формулировка должна', 'например', 'пример:', 'формат:', 'выберите из',
|
||||
'если не используются', 'при необходимости можно', 'указать', 'вписать',
|
||||
'если адресов несколько', 'по логике', 'произвольное описание',
|
||||
]
|
||||
|
||||
def _is_hint(text):
|
||||
"""True, если значение похоже на подсказку/образец из примечания."""
|
||||
low = (text or '').lower()
|
||||
for m in HINT_MARKERS:
|
||||
if m in low:
|
||||
return True
|
||||
return False
|
||||
|
||||
def _set(field_lower, key, val):
|
||||
"""Записать значение, если ключевое слово найдено в вопросе."""
|
||||
if val and 'выбрать' not in field_lower:
|
||||
"""Записать значение, если ключевое слово найдено в вопросе
|
||||
и значение не является подсказкой из примечания."""
|
||||
if val and 'выбрать' not in field_lower and not _is_hint(val):
|
||||
is_obj[key] = val
|
||||
return True
|
||||
return False
|
||||
|
||||
+7
-7
@@ -795,7 +795,7 @@ class DokoGenApp:
|
||||
|
||||
# Сфера деятельности — словарик + выпадающий список
|
||||
ttk.Label(main_frame, text="Сфера деятельности:").grid(row=1, column=0, sticky=tk.W, pady=2)
|
||||
self.is_sphere_combo = ttk.Combobox(main_frame, width=68)
|
||||
self.is_sphere_combo = ttk.Combobox(main_frame, width=68, state='readonly')
|
||||
self.is_sphere_combo.grid(row=1, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||
try:
|
||||
import json as _json
|
||||
@@ -807,7 +807,7 @@ class DokoGenApp:
|
||||
|
||||
# Тип объекта — словарик + выпадающий список
|
||||
ttk.Label(main_frame, text="Тип объекта:").grid(row=2, column=0, sticky=tk.W, pady=2)
|
||||
self.is_object_type_combo = ttk.Combobox(main_frame, width=68)
|
||||
self.is_object_type_combo = ttk.Combobox(main_frame, width=68, state='readonly')
|
||||
self.is_object_type_combo.grid(row=2, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||
try:
|
||||
_ot = os.path.join(os.path.dirname(__file__), 'dictionaries', 'object_types.json')
|
||||
@@ -818,7 +818,7 @@ class DokoGenApp:
|
||||
|
||||
# Архитектура объекта — словарик + выпадающий список
|
||||
ttk.Label(main_frame, text="Архитектура объекта:").grid(row=3, column=0, sticky=tk.W, pady=2)
|
||||
self.is_architecture_combo = ttk.Combobox(main_frame, width=68)
|
||||
self.is_architecture_combo = ttk.Combobox(main_frame, width=68, state='readonly')
|
||||
self.is_architecture_combo.grid(row=3, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||
try:
|
||||
_ar = os.path.join(os.path.dirname(__file__), 'dictionaries', 'architectures.json')
|
||||
@@ -829,7 +829,7 @@ class DokoGenApp:
|
||||
|
||||
# Типовой отраслевой объект КИИ — словарик + выпадающий список
|
||||
ttk.Label(main_frame, text="Типовой отраслевой объект КИИ:").grid(row=4, column=0, sticky=tk.W, pady=2)
|
||||
self.is_typical_object_combo = ttk.Combobox(main_frame, width=68)
|
||||
self.is_typical_object_combo = ttk.Combobox(main_frame, width=68, state='readonly')
|
||||
self.is_typical_object_combo.grid(row=4, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||
try:
|
||||
_to = os.path.join(os.path.dirname(__file__), 'dictionaries', 'typical_objects.json')
|
||||
@@ -875,7 +875,7 @@ class DokoGenApp:
|
||||
|
||||
# Категория сети — словарик
|
||||
ttk.Label(net_frame, text="Категория сети электросвязи:").grid(row=1, column=0, sticky=tk.W, pady=2)
|
||||
self.is_net_category_combo = ttk.Combobox(net_frame, width=68)
|
||||
self.is_net_category_combo = ttk.Combobox(net_frame, width=68, state='readonly')
|
||||
self.is_net_category_combo.grid(row=1, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||
try:
|
||||
import json as _json
|
||||
@@ -892,7 +892,7 @@ class DokoGenApp:
|
||||
|
||||
# Цель взаимодействия — словарик
|
||||
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 = ttk.Combobox(net_frame, width=68, state='readonly')
|
||||
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')
|
||||
@@ -903,7 +903,7 @@ class DokoGenApp:
|
||||
|
||||
# Способ взаимодействия — словарик
|
||||
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 = ttk.Combobox(net_frame, width=68, state='readonly')
|
||||
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')
|
||||
|
||||
Reference in New Issue
Block a user