from django.http import JsonResponse from django.shortcuts import render from .models import PortfolioEntry, Region def home(request): return render(request, "showcase/home.html") def _serialize_entry(entry): return { "id": entry.id, "type": entry.entry_type, "title": entry.title, "organization": entry.organization, "startDate": entry.start_date.isoformat() if entry.start_date else None, "endDate": entry.end_date.isoformat() if entry.end_date else None, "summary": entry.summary, "url": entry.url, } def map_regions(request): entries = PortfolioEntry.objects.filter(is_published=True).prefetch_related("regions") entries_by_region = {} for entry in entries: payload = _serialize_entry(entry) for region in entry.regions.all(): entries_by_region.setdefault(region.code, {})[entry.id] = payload regions = list(Region.objects.select_related("parent").prefetch_related("subdivisions")) payload = [] for region in regions: related = dict(entries_by_region.get(region.code, {})) if region.level == Region.Level.COUNTRY: for subdivision in region.subdivisions.all(): related.update(entries_by_region.get(subdivision.code, {})) payload.append( { "code": region.code, "name": region.name, "level": region.level, "parentCode": region.parent_id, "entries": list(related.values()), } ) return JsonResponse({"regions": payload})