signals.py (735B)
1 import json 2 3 from django.contrib.admin.models import LogEntry 4 from django.db.models.signals import post_save 5 from django.dispatch import receiver 6 7 from django_redis import get_redis_connection 8 9 10 @receiver(post_save, sender=LogEntry) 11 def publish_event(instance, **kwargs): 12 event = { 13 "model": instance.content_type.name, 14 "object": instance.object_repr, 15 "message": instance.get_change_message(), 16 "timestamp": instance.action_time.isoformat(), 17 "user": str(instance.user), 18 "content_type_id": instance.content_type_id, 19 "object_id": instance.object_id, 20 } 21 connection = get_redis_connection("default") 22 payload = json.dumps(event) 23 connection.publish("events", payload)