summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/tools/third_party/websockets/example/django/signals.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/tools/third_party/websockets/example/django/signals.py')
-rw-r--r--testing/web-platform/tests/tools/third_party/websockets/example/django/signals.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/third_party/websockets/example/django/signals.py b/testing/web-platform/tests/tools/third_party/websockets/example/django/signals.py
new file mode 100644
index 0000000000..6dc827f72d
--- /dev/null
+++ b/testing/web-platform/tests/tools/third_party/websockets/example/django/signals.py
@@ -0,0 +1,23 @@
+import json
+
+from django.contrib.admin.models import LogEntry
+from django.db.models.signals import post_save
+from django.dispatch import receiver
+
+from django_redis import get_redis_connection
+
+
+@receiver(post_save, sender=LogEntry)
+def publish_event(instance, **kwargs):
+ event = {
+ "model": instance.content_type.name,
+ "object": instance.object_repr,
+ "message": instance.get_change_message(),
+ "timestamp": instance.action_time.isoformat(),
+ "user": str(instance.user),
+ "content_type_id": instance.content_type_id,
+ "object_id": instance.object_id,
+ }
+ connection = get_redis_connection("default")
+ payload = json.dumps(event)
+ connection.publish("events", payload)