First commit

This commit is contained in:
2026-07-20 11:05:07 +02:00
commit b592ab669f
159 changed files with 10294 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
import json
from typing import Any
from channels.generic.websocket import AsyncWebsocketConsumer
GROUP_NAME = 'banevents'
class BanEventConsumer(AsyncWebsocketConsumer):
"""Pousse chaque nouveau BanEvent aux clients connectés au tableau de bord."""
async def connect(self) -> None:
await self.channel_layer.group_add(GROUP_NAME, self.channel_name)
await self.accept()
async def disconnect(self, close_code: int) -> None:
await self.channel_layer.group_discard(GROUP_NAME, self.channel_name)
async def ban_event(self, event: dict[str, Any]) -> None:
await self.send(text_data=json.dumps({'kind': 'ban', **event['payload']}))
async def command_notification(self, event: dict[str, Any]) -> None:
"""Issue d'une commande reçue du master (banevents.management.
commands.master_client) succès/échec d'un SYNC_BAN, ou commande
non gérée. Même group_send que ban_event, discriminé par `kind`."""
await self.send(text_data=json.dumps({'kind': 'command', **event['payload']}))