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):
|
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
|
is_obj[key] = val
|
||||||
return True
|
return True
|
||||||
return False
|
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)
|
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)
|
self.is_sphere_combo.grid(row=1, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||||
try:
|
try:
|
||||||
import json as _json
|
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)
|
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)
|
self.is_object_type_combo.grid(row=2, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||||
try:
|
try:
|
||||||
_ot = os.path.join(os.path.dirname(__file__), 'dictionaries', 'object_types.json')
|
_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)
|
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)
|
self.is_architecture_combo.grid(row=3, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||||
try:
|
try:
|
||||||
_ar = os.path.join(os.path.dirname(__file__), 'dictionaries', 'architectures.json')
|
_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)
|
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)
|
self.is_typical_object_combo.grid(row=4, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||||
try:
|
try:
|
||||||
_to = os.path.join(os.path.dirname(__file__), 'dictionaries', 'typical_objects.json')
|
_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)
|
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)
|
self.is_net_category_combo.grid(row=1, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||||
try:
|
try:
|
||||||
import json as _json
|
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)
|
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)
|
self.is_net_purpose_combo.grid(row=3, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||||
try:
|
try:
|
||||||
_np = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_purposes.json')
|
_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)
|
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)
|
self.is_net_method_combo.grid(row=4, column=1, padx=8, sticky=tk.EW, pady=1)
|
||||||
try:
|
try:
|
||||||
_nm = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_methods.json')
|
_nm = os.path.join(os.path.dirname(__file__), 'dictionaries', 'net_methods.json')
|
||||||
|
|||||||
Reference in New Issue
Block a user