Update web/core/views.py

adding endpoint so that illustration 20 words will show in recent
This commit is contained in:
Joshua Laymon 2025-08-16 22:22:09 +00:00
parent 04e4bde118
commit cc7451b1aa

View File

@ -15,6 +15,7 @@ from .utils import terms, has_wildcards, wildcard_to_regex, import_csv_bytes
from .scripture_normalizer import normalize_scripture_field # <-- NEW from .scripture_normalizer import normalize_scripture_field # <-- NEW
from .source_normalizer import normalize_source_field # NEW from .source_normalizer import normalize_source_field # NEW
from .subject_normalizer import normalize_subject_field # NEW from .subject_normalizer import normalize_subject_field # NEW
from django.http import JsonResponse
# Order + labels used in the Search UI # Order + labels used in the Search UI
FIELD_ORDER = [ FIELD_ORDER = [
@ -710,4 +711,33 @@ def normalize_subjects(request):
"preview": preview, "preview": preview,
"limit": limit, "limit": limit,
}, },
) )
from django.http import JsonResponse
# If not already imported above:
# from django.contrib.auth.decorators import login_required
# from django.utils import timezone # only if you need now()
# import re # already in your file
@login_required
def api_get_recent_views(request):
"""
Return the current user's recently viewed entries (up to 50),
including the illustration text so the UI can show a 20-word snippet.
"""
# Model: RecentView with fields: user (FK), entry (FK Entry), viewed_at (DateTime)
from .models import RecentView # inline to avoid breaking if you split files
recents = (RecentView.objects
.filter(user=request.user)
.select_related('entry')
.order_by('-viewed_at')[:50])
items = []
for rv in recents:
items.append({
"entry_id": rv.entry_id,
"viewed_at": rv.viewed_at.isoformat(),
"illustration": rv.entry.illustration or "",
})
return JsonResponse({"ok": True, "items": items})