From e4ed5409efe7e58a3287b2d9e4524b1f710aebf7 Mon Sep 17 00:00:00 2001 From: Jaehun You Date: Thu, 21 Nov 2024 18:13:26 +0900 Subject: [PATCH] Call `notify()` when operation status is changed See also: #17 --- wlm_server/operation/views.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/wlm_server/operation/views.py b/wlm_server/operation/views.py index 8e1be88..4d617ce 100644 --- a/wlm_server/operation/views.py +++ b/wlm_server/operation/views.py @@ -1,7 +1,11 @@ +import json + from django.http import HttpResponse from django.contrib.auth.decorators import login_required from django.conf import settings from rest_framework.decorators import api_view +from channels.layers import get_channel_layer +from asgiref.sync import async_to_sync from operation.models import Operation from channel.models import Channel @@ -27,6 +31,11 @@ def handle_info(request, ch: int): if not util.is_wlm_running(): task_handler = TaskHandler() task_handler.start() + notif = {'on': True} + channel_layer = get_channel_layer() + async_to_sync(channel_layer.group_send)( + f'channel_{ch}', {'type': 'notify', 'message': json.dumps(notif)} + ) if not util.is_channel_running(ch): message = MessageInfo(ActionType.OPERATE, ch, {'on': True}) message_queue.push(message) @@ -39,4 +48,9 @@ def handle_info(request, ch: int): if not util.is_wlm_running(): message = MessageInfo(ActionType.CLOSE, None, None) message_queue.push(message) + notif = {'on': False} + channel_layer = get_channel_layer() + async_to_sync(channel_layer.group_send)( + f'channel_{ch}', {'type': 'notify', 'message': json.dumps(notif)} + ) return HttpResponse(status=200)