feat(websocket): submissions backend

This commit is contained in:
2026-05-25 02:45:17 +02:00
parent c02a0aa985
commit b64161b371
6 changed files with 128 additions and 4 deletions
@@ -0,0 +1,35 @@
import json
from channels.generic.websocket import AsyncWebsocketConsumer
from channels.db import database_sync_to_async
from django.contrib.auth.models import AnonymousUser
from submissions.models import Submission, SubmissionFile, ImageCrop
from submissions.schemas import SubmissionOut, SubmissionFileOut, ImageCropOut
class SubmissionsConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.user = self.scope["user"]
if isinstance(self.user, AnonymousUser):
await self.close()
return
self.user_group_name = f"submissions_user_{self.user.id}"
await self.channel_layer.group_add(self.user_group_name, self.channel_name)
await self.accept()
async def disconnect(self, close_code):
await self.channel_layer.group_discard(self.user_group_name, self.channel_name)
async def submission_updated(self, event):
submission_data = event["submission"]
await self.send(text_data=json.dumps(submission_data))
async def submission_file_updated(self, event):
file_data = event["file"]
await self.send(text_data=json.dumps(file_data))
async def submission_crop_updated(self, event):
crop_data = event["crop"]
await self.send(text_data=json.dumps(crop_data))