feat: add [title] prefix for session title field

This commit is contained in:
Javier
2026-02-13 11:51:05 -06:00
parent 90f30db915
commit 3d6421e0ed
2 changed files with 46 additions and 13 deletions

View File

@@ -619,6 +619,16 @@ def register_routes(bp):
LIMIT 1 LIMIT 1
''', [process_id], one=True) ''', [process_id], one=True)
def strip_title_prefix(label):
"""Strip [title] prefix from field label for display"""
if label and label.startswith('[title]'):
return label[7:]
return label
def is_title_field(label):
"""Check if field label has [title] prefix"""
return label and label.startswith('[title]')
@bp.route('/') @bp.route('/')
@login_required @login_required
@@ -689,7 +699,7 @@ def register_routes(bp):
except: except:
sess_dict['scan_count'] = 0 sess_dict['scan_count'] = 0
# Get first 5 required header fields with their values # Get header fields with their values
header_fields = query_db(''' header_fields = query_db('''
SELECT cpf.field_label, cshv.field_value SELECT cpf.field_label, cshv.field_value
FROM cons_process_fields cpf FROM cons_process_fields cpf
@@ -697,13 +707,26 @@ def register_routes(bp):
ON cpf.id = cshv.field_id AND cshv.session_id = ? ON cpf.id = cshv.field_id AND cshv.session_id = ?
WHERE cpf.process_id = ? WHERE cpf.process_id = ?
AND cpf.table_type = 'header' AND cpf.table_type = 'header'
AND cpf.is_required = 1
AND cpf.is_active = 1 AND cpf.is_active = 1
ORDER BY cpf.sort_order, cpf.id ORDER BY cpf.sort_order, cpf.id
LIMIT 5
''', [sess['id'], sess['process_id']]) ''', [sess['id'], sess['process_id']])
sess_dict['header_preview'] = header_fields # Build title from [title] fields, strip prefix for display
title_parts = []
preview_fields = []
for hf in header_fields:
hf_dict = dict(hf)
if is_title_field(hf_dict['field_label']):
clean_label = strip_title_prefix(hf_dict['field_label'])
hf_dict['field_label'] = clean_label
if hf_dict['field_value']:
title_parts.append(f"{clean_label} {hf_dict['field_value']}")
preview_fields.append(hf_dict)
else:
preview_fields.append(hf_dict)
sess_dict['header_preview'] = preview_fields[:5]
sess_dict['session_title'] = f"{sess['process_name']}{', '.join(title_parts)}" if title_parts else sess['process_name']
sessions_with_counts.append(sess_dict) sessions_with_counts.append(sess_dict)
# Get available process types for creating new sessions # Get available process types for creating new sessions
@@ -879,14 +902,24 @@ def register_routes(bp):
flash('This session has been archived', 'warning') flash('This session has been archived', 'warning')
return redirect(url_for('conssheets.index')) return redirect(url_for('conssheets.index'))
# Get header values for display # Get header values for display, stripping [title] prefix
header_values = query_db(''' header_values_raw = query_db('''
SELECT cpf.field_label, cpf.field_name, cshv.field_value SELECT cpf.id as field_id, cpf.field_label, cpf.field_name,
FROM cons_session_header_values cshv cpf.field_type, cpf.is_required, cpf.max_length,
JOIN cons_process_fields cpf ON cshv.field_id = cpf.id cshv.field_value
WHERE cshv.session_id = ? FROM cons_process_fields cpf
LEFT JOIN cons_session_header_values cshv
ON cpf.id = cshv.field_id AND cshv.session_id = ?
WHERE cpf.process_id = ? AND cpf.table_type = 'header' AND cpf.is_active = 1
ORDER BY cpf.sort_order, cpf.id ORDER BY cpf.sort_order, cpf.id
''', [session_id]) ''', [session_id, sess['process_id']])
# Strip [title] prefix for display
header_values = []
for hv in header_values_raw:
hv_dict = dict(hv)
hv_dict['field_label'] = strip_title_prefix(hv_dict['field_label'])
header_values.append(hv_dict)
# Get detail fields for this process (convert to dicts for JSON serialization) # Get detail fields for this process (convert to dicts for JSON serialization)
detail_fields_rows = query_db(''' detail_fields_rows = query_db('''

View File

@@ -42,7 +42,7 @@
<div class="session-list-item-container session-status-{{ s.status }}"> <div class="session-list-item-container session-status-{{ s.status }}">
<a href="{{ url_for('conssheets.scan_session', session_id=s.id) }}" class="session-list-item"> <a href="{{ url_for('conssheets.scan_session', session_id=s.id) }}" class="session-list-item">
<div class="session-list-info"> <div class="session-list-info">
<h3 class="session-list-name">{{ s.process_name }}</h3> <h3 class="session-list-name">{{ s.session_title }}</h3>
<div class="session-list-meta"> <div class="session-list-meta">
<span>Started: {{ s.created_at[:16] }}</span> <span>Started: {{ s.created_at[:16] }}</span>
<span></span> <span></span>