def response(cls, data, request): if isinstance(request, XMLRequest): if isinstance(data, TrytonException): data = client.Fault(data.code, str(data)) elif isinstance(data, Exception): data = client.Fault(255, str(data)) else: data = (data,) return Response(client.dumps( data, methodresponse=True, allow_none=True), content_type='text/xml') else: if isinstance(data, UserWarning): return Conflict(data) elif isinstance(data, LoginException): return Forbidden(data) elif isinstance(data, ConcurrencyException): return Locked(data) elif isinstance(data, RateLimitException): return TooManyRequests(data) elif isinstance(data, MissingDependenciesException): return InternalServerError(data) elif isinstance(data, TrytonException): return BadRequest(data) elif isinstance(data, Exception): return InternalServerError(data) return Response(data)
def response(cls, data, request): try: parsed_data = request.parsed_data except BadRequest: parsed_data = {} if (isinstance(request, JSONRequest) and set(parsed_data.keys()) == {'id', 'method', 'params'}): response = {'id': parsed_data.get('id', 0)} if isinstance(data, TrytonException): response['error'] = data.args elif isinstance(data, Exception): # report exception back to server response['error'] = (str(data), data.__format_traceback__) else: response['result'] = data else: if isinstance(data, UserWarning): return Conflict(data) elif isinstance(data, LoginException): return Forbidden(data) elif isinstance(data, ConcurrencyException): return Locked(data) elif isinstance(data, RateLimitException): return TooManyRequests(data) elif isinstance(data, MissingDependenciesException): return InternalServerError(data) elif isinstance(data, TrytonException): return BadRequest(data) elif isinstance(data, Exception): return InternalServerError(data) response = data return Response(json.dumps(response, cls=JSONEncoder, separators=(',', ':')), content_type='application/json')