Foro: buscador de temas y nombre de autor legible

- forum_search: busca temas por título y contenido (foros visibles)
- db.get_display_name: nombre visible del autor = parte local del email de la cuenta
  (en vez de <bnetId>#1), usado en el panel de posts y la lista de temas
- buscador en la portada del foro + plantilla search.html
- docs/FORO.md actualizado

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 17:18:34 +00:00
parent 874a0c1ad9
commit fd49d6cd96
8 changed files with 125 additions and 5 deletions
+15
View File
@@ -75,6 +75,8 @@ def view_forum(request, forum_id, page=1):
total = db.count_topics(forum_id)
pag, offset = _paginate(total, page, settings.FORUM_TOPICS_PER_PAGE)
topics = db.get_topics(forum_id, offset, settings.FORUM_TOPICS_PER_PAGE)
for t in topics:
t['display_poster'] = db.get_display_name(t['poster_id']) or t['poster']
return render(request, 'forum/forum.html', _base_context(request, {
'forum': forum,
@@ -83,6 +85,19 @@ def view_forum(request, forum_id, page=1):
}))
def search(request):
query = (request.GET.get('q') or '').strip()
results = []
if len(query) >= 2:
results = db.search_topics(query)
for r in results:
r['display_poster'] = db.get_display_name(r['poster_id']) or r['poster']
return render(request, 'forum/search.html', _base_context(request, {
'query': query,
'results': results,
}))
def view_topic(request, topic_id, page=1):
topic = db.get_topic(topic_id, include_hidden=perm.is_moderator(request))
if not topic: