You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.2 KiB
66 lines
2.2 KiB
# -*- coding: utf-8 -*-
|
|
"""
|
|
flask.signals
|
|
~~~~~~~~~~~~~
|
|
|
|
Implements signals based on blinker if available, otherwise
|
|
falls silently back to a noop.
|
|
|
|
:copyright: 2010 Pallets
|
|
:license: BSD-3-Clause
|
|
"""
|
|
try:
|
|
from blinker import Namespace
|
|
|
|
signals_available = True
|
|
except ImportError:
|
|
signals_available = False
|
|
|
|
class Namespace(object):
|
|
def signal(self, name, doc=None):
|
|
return _FakeSignal(name, doc)
|
|
|
|
class _FakeSignal(object):
|
|
"""If blinker is unavailable, create a fake class with the same
|
|
interface that allows sending of signals but will fail with an
|
|
error on anything else. Instead of doing anything on send, it
|
|
will just ignore the arguments and do nothing instead.
|
|
"""
|
|
|
|
def __init__(self, name, doc=None):
|
|
self.name = name
|
|
self.__doc__ = doc
|
|
|
|
def send(self, *args, **kwargs):
|
|
pass
|
|
|
|
def _fail(self, *args, **kwargs):
|
|
raise RuntimeError(
|
|
"Signalling support is unavailable because the blinker"
|
|
" library is not installed."
|
|
)
|
|
|
|
connect = connect_via = connected_to = temporarily_connected_to = _fail
|
|
disconnect = _fail
|
|
has_receivers_for = receivers_for = _fail
|
|
del _fail
|
|
|
|
|
|
# The namespace for code signals. If you are not Flask code, do
|
|
# not put signals in here. Create your own namespace instead.
|
|
_signals = Namespace()
|
|
|
|
|
|
# Core signals. For usage examples grep the source code or consult
|
|
# the API documentation in docs/api.rst as well as docs/signals.rst
|
|
template_rendered = _signals.signal("template-rendered")
|
|
before_render_template = _signals.signal("before-render-template")
|
|
request_started = _signals.signal("request-started")
|
|
request_finished = _signals.signal("request-finished")
|
|
request_tearing_down = _signals.signal("request-tearing-down")
|
|
got_request_exception = _signals.signal("got-request-exception")
|
|
appcontext_tearing_down = _signals.signal("appcontext-tearing-down")
|
|
appcontext_pushed = _signals.signal("appcontext-pushed")
|
|
appcontext_popped = _signals.signal("appcontext-popped")
|
|
message_flashed = _signals.signal("message-flashed")
|