28 lines
849 B
Python
28 lines
849 B
Python
from asgiref.sync import sync_to_async
|
|
|
|
from ..decorators import kfet_is_team
|
|
from ..utils import DjangoJsonWebsocketConsumer, PermConsumerMixin
|
|
from .open import kfet_open
|
|
|
|
|
|
class OpenKfetConsumer(PermConsumerMixin, DjangoJsonWebsocketConsumer):
|
|
"""Consumer for K-Fêt Open.
|
|
|
|
WS groups:
|
|
kfet.open.base: Only carries the values visible for all users.
|
|
kfet.open.team: Carries all values (raw status...).
|
|
|
|
"""
|
|
|
|
async def open_status(self, event):
|
|
await self.send_json(event)
|
|
|
|
async def connect(self):
|
|
"""Send current status on connect."""
|
|
await super().connect()
|
|
|
|
group = "team" if await sync_to_async(kfet_is_team)(self.user) else "base"
|
|
|
|
await self.channel_layer.group_add(f"kfet.open.{group}", self.channel_name)
|
|
|
|
await self.send_json(kfet_open.export(self.user))
|