2020-03-01 03:24:17 -05:00
|
|
|
import django.dispatch
|
|
|
|
from django.dispatch.dispatcher import NO_RECEIVERS
|
|
|
|
|
|
|
|
|
|
|
|
class PluginSignal(django.dispatch.Signal):
|
2020-03-25 16:06:00 -04:00
|
|
|
"""
|
|
|
|
FUTURE USE
|
|
|
|
"""
|
2020-03-01 03:24:17 -05:00
|
|
|
def _sorted_receivers(self, sender):
|
|
|
|
orig_list = self._live_receivers(sender)
|
|
|
|
sorted_list = sorted(
|
|
|
|
orig_list,
|
|
|
|
key=lambda receiver: (
|
|
|
|
receiver.__module__,
|
|
|
|
receiver.__name__,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
return sorted_list
|
|
|
|
|
|
|
|
def send(self, sender, **kwargs):
|
|
|
|
responses = []
|
|
|
|
if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS:
|
|
|
|
return responses
|
|
|
|
|
|
|
|
for receiver in self._sorted_receivers(sender):
|
|
|
|
response = receiver(signal=self, sender=sender, **kwargs)
|
|
|
|
responses.append((receiver, response))
|
|
|
|
return responses
|