def signals(request): """Generate a HttpResponse to register Python signals from the JS side """ import_signals() interval = settings.WS4REDIS_EMULATION_INTERVAL if isinstance(interval, int) and request.user.is_anonymous(): interval = 0 elif isinstance(interval, string_types): interval = import_string(interval) if callable(interval): interval = interval(request) return render_to_response('djangofloor/signals.html', {'signals': REGISTERED_SIGNALS, 'use_ws4redis': settings.FLOOR_USE_WS4REDIS, 'WS4REDIS_EMULATION_INTERVAL': interval}, RequestContext(request), content_type=__get_js_mimetype())
def signal_call(request, signal): """ Called by JS code when websockets are not available. Allow to call Python signals from JS. Arguments are passed in the request body, serialized as JSON. :param signal: name of the called signal :type signal: :class:`str` """ import_signals() if request.body: kwargs = json.loads(request.body.decode('utf-8'), cls=get_signal_decoder()) else: kwargs = {} try: result = df_call(signal, request, sharing=RETURN, from_client=True, kwargs=kwargs) except InvalidRequest: result = [] return JsonResponse(result, safe=False, encoder=get_signal_encoder())