Fix article editor

This commit is contained in:
2026-03-26 17:34:10 -04:00
parent 3687003935
commit bc9000aad9
7 changed files with 390 additions and 26 deletions
+42 -5
View File
@@ -261,8 +261,19 @@ def update_ticket(ticket_id):
changes.append(f'priority: {old_priority}{new_priority}')
if new_assigned != old_assigned:
# Resolve user IDs to full names for human-readable history entries.
# None means unassigned.
def _user_label(uid):
if uid is None:
return 'Unassigned'
u = User.query.get(uid)
return u.full_name if u else f'User #{uid}'
ticket.assigned_to_id = new_assigned
log_ticket_history(ticket, 'assigned_to', str(old_assigned), str(new_assigned), current_user.id)
log_ticket_history(ticket, 'assigned_to',
_user_label(old_assigned),
_user_label(new_assigned),
current_user.id)
changes.append(f'assigned_to: {old_assigned}{new_assigned}')
notify_assignment(ticket, current_user)
@@ -339,9 +350,35 @@ def mark_notifications_read():
@tickets_bp.route('/kb')
@login_required
def knowledge_base():
articles = KnowledgeBase.query.filter_by(is_published=True).order_by(
KnowledgeBase.view_count.desc()).all()
return render_template('tickets/knowledge_base.html', articles=articles)
q = request.args.get('q', '').strip()
category = request.args.get('category', '')
sort = request.args.get('sort', 'popular') # 'popular' | 'newest'
query = KnowledgeBase.query.filter_by(is_published=True)
if q:
query = query.filter(
KnowledgeBase.title.ilike(f'%{q}%') |
KnowledgeBase.tags.ilike(f'%{q}%')
)
if category:
query = query.filter_by(category=category)
if sort == 'newest':
query = query.order_by(KnowledgeBase.updated_at.desc())
else:
query = query.order_by(KnowledgeBase.view_count.desc())
articles = query.all()
categories = sorted({a.category for a in KnowledgeBase.query.filter_by(is_published=True).with_entities(KnowledgeBase.category).distinct() if a.category})
return render_template('tickets/knowledge_base.html',
articles = articles,
categories = categories,
q = q,
sel_category = category,
sort = sort,
)
@tickets_bp.route('/kb/<int:article_id>')
@@ -367,4 +404,4 @@ def _categories():
return [TicketCategory.HARDWARE, TicketCategory.SOFTWARE,
TicketCategory.NETWORK, TicketCategory.ACCESS,
TicketCategory.EMAIL, TicketCategory.PRINTER,
TicketCategory.PHONE, TicketCategory.SECURITY, TicketCategory.OTHER]
TicketCategory.PHONE, TicketCategory.SECURITY, TicketCategory.OTHER]