This repository has been archived on 2025-05-04. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
django-request-provider/request_provider/signals.py
2012-11-30 10:57:26 -05:00

39 lines
1,019 B
Python

# -*- coding: utf-8 -*-
from django.dispatch import Signal
__doc__="""
If you want to get a reference to the current HttpRequest:
from request_provider.signals import get_request
http_request = get_request()
"""
class UnauthorizedSignalReceiver(Exception):
pass
class SingleHandlerSignal(Signal):
allowed_receiver='request_provider.middleware.RequestProvider'
def __init__(self,providing_args = None):
return Signal.__init__(self,providing_args)
def connect(self, receiver, sender=None, weak=True, dispatch_uid=None):
receiver_name = '.'.join([receiver.__class__.__module__,
receiver.__class__.__name__])
if receiver_name != self.allowed_receiver:
raise UnauthorizedSignalReceiver()
Signal.connect(self, receiver, sender, weak, dispatch_uid)
request_accessor = SingleHandlerSignal()
def get_request():
signal_response = request_accessor.send(None)
if not signal_response:
return None
return signal_response[0][1]