def format_error_to_json_values(error, kwargs=None, request=None): if request: translate = translate_factory(request) else: translate = lambda tstring, **kw: tstring if isinstance(error, HTTPError): status = error.code key = camelcase(error.title) title = error.title message = error.explanation elif isinstance(error, Invalid): status = 400 key = camelcase(error._keyname()) title = _('Form error') message = error.msg errors = defaultdict(list) for path in error.paths(): for exc in path: key = str(exc.node.name) if exc.positional and exc.pos: # Ignore 0 position key += '.' + str(exc.pos) if key and exc.msg: key = camelcase(key) for message in exc.messages(): errors[key].append(translate(message)) if not kwargs: kwargs = {} kwargs['errors'] = errors else: status = getattr(error, 'code', 400) key = camelcase(getattr(error, 'key', 'undefined')) title = getattr(error, 'title', None) message = getattr(error, 'msg', getattr(error, 'message', 'Undefined')) values = { 'status': status, 'property': key, 'title': title and translate(title) or None, 'message': translate(message)} if kwargs: values.update(kwargs) return values
def format_error_to_json_values(error, kwargs=None, request=None): if request: translate = translate_factory(request) else: translate = lambda tstring, **kw: tstring if isinstance(error, HTTPError): status = error.code key = camelcase(error.title) message = error.explanation elif isinstance(error, Invalid): status = 400 key = camelcase(error._keyname()) message = error.msg errors = MissingList() for path in error.paths(): for exc in path: key = str(exc.node.name) if exc.positional and exc.pos: # Ignore 0 position key += '.' + str(exc.pos) if key and exc.msg: key = camelcase(key) for message in exc.messages(): errors[key].append(translate(message)) if not kwargs: kwargs = {} kwargs['errors'] = errors else: status = getattr(error, 'code', 400) key = camelcase(getattr(error, 'key', 'undefined')) message = getattr(error, 'msg', getattr(error, 'message', u'Undefined')) values = { 'status': status, 'property': key, 'message': translate(message)} if kwargs: values.update(kwargs) return values
def get_translator(self, locale_name=None): return translate_factory(self, locale_name)