def _wrapped_view(request, *args, **kwargs):
     # Check request method
     if methods and request.method not in methods:
         data = dict(error='%s (405)' % _('Invalid request method'))
         response = HttpResponse(json.dumps(data), content_type='application/json', status=405)
         response['Allow'] = methods
         return response
     # Process view
     try:
         # Check login
         if login_required and not request.user.is_authenticated:
             return failure_response(code=401, error='%s (401)' % _('Authentication required'))
         return fct(request, *args, **kwargs)
     except PermissionDenied:
         return failure_response(code=403, error='%s (403)' % _('Access denied'))
     except Http404:
         return failure_response(code=404, error='%s (404)' % _('Page not found'))
     except Exception:
         logger = logging.getLogger('django.request')
         logger.error('Internal server error: %s', request.get_full_path(), exc_info=traceback.extract_stack(), extra={'status_code': 500, 'request': request})
         response = failure_response(code=500, error='%s (500)' % _('Internal server error'))
         response._has_been_logged = True
         return response