Mostly-complete middleware version

This commit is contained in:
Andrew Godwin 2016-10-05 11:42:46 -07:00
parent dcfaf4122b
commit 0fcb93acc2
2 changed files with 10 additions and 7 deletions

View File

@ -38,7 +38,6 @@ class Channel(object):
raise TypeError("You can only send dicts as content on channels.") raise TypeError("You can only send dicts as content on channels.")
self.channel_layer.send(self.name, content) self.channel_layer.send(self.name, content)
message_sent.send(sender=self.__class__, channel=self.name, keys=list(content.keys())) message_sent.send(sender=self.__class__, channel=self.name, keys=list(content.keys()))
print("didsig", self.name)
def __str__(self): def __str__(self):
return self.name return self.name

View File

@ -2,6 +2,7 @@ from __future__ import unicode_literals
import importlib import importlib
import threading import threading
import warnings
from django.conf import settings from django.conf import settings
from .exceptions import DenyConnection from .exceptions import DenyConnection
@ -48,14 +49,18 @@ class ConvenienceMiddleware(object):
self.consumer = consumer self.consumer = consumer
def __call__(self, message): def __call__(self, message):
print("conven", message.channel)
if message.channel.name == "websocket.connect": if message.channel.name == "websocket.connect":
# Websocket connect acceptance helper # Websocket connect acceptance helper
try: try:
self.consumer(message) self.consumer(message)
print ("messages sent", self.get_messages())
except DenyConnection: except DenyConnection:
message.reply_channel.send({"accept": False}) message.reply_channel.send({"accept": False})
else:
replies_sent = [msg for chan, msg in self.get_messages() if chan == message.reply_channel.name]
# If they sent no replies, send implicit acceptance
if not replies_sent:
warnings.warn("AAAAAAAAAAA", RuntimeWarning)
message.reply_channel.send({"accept": True})
else: else:
# General path # General path
return self.consumer(message) return self.consumer(message)
@ -67,8 +72,8 @@ class ConvenienceMiddleware(object):
""" """
cls.runtime_data.sent_messages = [] cls.runtime_data.sent_messages = []
consumer_started.connect(lambda **kwargs: reset_messages()) consumer_started.connect(lambda **kwargs: ConvenienceMiddleware.reset_messages(), weak=False)
consumer_finished.connect(lambda **kwargs: reset_messages()) consumer_finished.connect(lambda **kwargs: ConvenienceMiddleware.reset_messages(), weak=False)
@classmethod @classmethod
def sent_message(cls, channel, keys, **kwargs): def sent_message(cls, channel, keys, **kwargs):
@ -78,9 +83,8 @@ class ConvenienceMiddleware(object):
all messages. all messages.
""" """
cls.runtime_data.sent_messages = getattr(cls.runtime_data, "sent_messages", []) + [(channel, keys)] cls.runtime_data.sent_messages = getattr(cls.runtime_data, "sent_messages", []) + [(channel, keys)]
print ("saved now", cls.runtime_data.sent_messages)
message_sent.connect(lambda channel, keys, **kwargs: sent_message(channel, keys)) message_sent.connect(lambda channel, keys, **kwargs: ConvenienceMiddleware.sent_message(channel, keys), weak=False)
@classmethod @classmethod
def get_messages(cls): def get_messages(cls):