示例#1
0
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())
示例#2
0
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())