## Feature: Unified History Timeline (HTMX Integrated) ### HTMX Template Pattern ```django {# history/partials/history_timeline.html #}
{% for event in events %}
{{ event.pgh_label|title }}
{% if event.pgh_context.metadata.user %}
... {{ event.pgh_context.metadata.user }}
{% endif %}
{% endfor %}
``` ### View Integration (Class-Based with HTMX) ```python # history/views.py class HistoryTimelineView(View): def get(self, request, content_type_id, object_id): events = ModelHistory.objects.filter( pgh_obj_model=content_type_id, pgh_obj_id=object_id ).order_by('-pgh_created_at')[:25] if request.htmx: return render(request, "history/partials/history_timeline.html", { "events": events }) return JsonResponse({ 'history': [serialize_event(e) for e in events] }) ``` ### Event Trigger Pattern ```python # parks/signals.py from django.dispatch import Signal history_updated = Signal() # In model save/delete handlers: history_updated.send(sender=Model, instance=instance)