]> git.parisson.com Git - teleforma.git/commitdiff
prepare media read ws
authorGuillaume Pellerin <guillaume.pellerin@parisson.com>
Sun, 22 Jun 2025 12:30:34 +0000 (14:30 +0200)
committerGuillaume Pellerin <guillaume.pellerin@parisson.com>
Sun, 22 Jun 2025 12:30:34 +0000 (14:30 +0200)
setup.py
teleforma/ws/media.py [new file with mode: 0644]
teleforma/ws/notification.py

index f2f21e8a70c5689594f4019a6aeb8b8f5a031eba..9ca8a301b1d372ad1874cbbb33d1ab656105b477 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+²# -*- coding: utf-8 -*-
 
 from setuptools import setup, find_packages
 
diff --git a/teleforma/ws/media.py b/teleforma/ws/media.py
new file mode 100644 (file)
index 0000000..1832ae3
--- /dev/null
@@ -0,0 +1,45 @@
+from teleforma.ws.logger import log_consumer_exceptions
+from teleforma.models.core import Media, MediaRead
+from django.conf import settings
+from channels.generic.websocket import AsyncJsonWebsocketConsumer
+from channels.db import database_sync_to_async
+import json
+
+
+@log_consumer_exceptions
+class MediaReadConsumer(AsyncJsonWebsocketConsumer):
+
+    async def connect(self):
+
+        if self.scope["user"].is_anonymous:
+            self.close()
+
+        await self.accept()
+
+        # send initial messages
+        data = await self.get_duration(self.scope['user'])
+        await self.send_json(content={'type': 'initial', 'messages': data})
+
+
+    async def disconnect(self, close_code):
+        # Leave room group
+        await self.channel_layer.group_discard(
+            self.room_group_name,
+            self.channel_name 
+        )
+
+    @database_sync_to_async
+    def get_duration(self, user, media):
+        # import pdb;pdb.set_trace()
+        if user.is_authenticated:
+            duration, c = MediaRead.objects.get_or_create(
+                user=user)
+        else:
+            duration = 0
+        return duration
+
+    # Receive message from channel
+    async def notify(self, event):
+        message = event['message']
+        # Send message to WebSocket
+        await self.send_json(content={'type': 'new', 'messages': [message]})
index 12596293ca8df86e3594d3bc211f4da81dbea0a3..b347225c3bedaaeece74b8d50152f93586c1e9b1 100644 (file)
@@ -5,6 +5,7 @@ from channels.generic.websocket import AsyncJsonWebsocketConsumer
 from channels.db import database_sync_to_async
 import json
 
+
 @log_consumer_exceptions
 class NotificationConsumer(AsyncJsonWebsocketConsumer):