Skip to content
Snippets Groups Projects
Select Git revision
  • 29176b425f225891d1141778f568cc43cdea2fa8
  • master default protected
  • develop protected
  • develop-0.7.x
  • develop-0.8.0
  • dev_czuk
  • loader
  • kgr10_roberta
  • 14-BiLSTM-CRF-RoBERTa
  • 12-handle-long-sequences
  • 13-flair-embeddings
  • BiLSTM
  • v0.7.0
  • v0.6.1
  • v0.5
  • v0.4.1
  • v0.3
17 results

sample_polem.py

Blame
  • decorators.py 2.05 KiB
    from django.http import HttpResponseBadRequest
    
    from functools import wraps
    from inspect import getargspec
    from django.http import HttpResponse
    from simplejson import loads as json_decode, dumps as json_encode
    from common.util import stringify_keys
    from django.db import transaction
    
    #https://djangosnippets.org/snippets/771/
    def ajax_required(f):
        def wrap(request, *args, **kwargs):
            if not request.is_ajax():
                return HttpResponseBadRequest()
            return f(request, *args, **kwargs)
        wrap.__doc__=f.__doc__
        wrap.__name__=f.__name__
        return wrap
    
    class AjaxError(Exception):
        pass
    
    def json_decode_fallback(value):
        try:
            return json_decode(value)
        except ValueError:
            return value
    
    def ajax(login_required=False, method=None, encode_result=True):
        def decorator(fun):
            @wraps(fun)
            def ajax_view(request, *args, **kwargs):
                request_params = None
                if method == 'post':
                    request_params = request.POST
                elif method == 'get':
                    request_params = request.GET
                fun_params, xx, fun_kwargs, xxxx = getargspec(fun)
                if request_params:
                    request_params = dict((key, json_decode_fallback(value))
                                          for key, value in request_params.items()
                                          if fun_kwargs or key in fun_params)
                    kwargs.update(stringify_keys(request_params))
                res = None
                if login_required and not request.user.is_authenticated:
                    res = {'result': 'logout'}
                if not res:
                    try:
                        res = fun(request, *args, **kwargs)
                    except AjaxError as e:
                        res = {'result': e.args[0]}
                        transaction.rollback()
                if encode_result:
                    if 'result' not in res:
                        res['result'] = 'ok'
                    return HttpResponse(json_encode(res))
                else:
                    return res
            return ajax_view
        return decorator