diff options
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.py | 23 |
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) |