def wrapper(f): # документация для swagger doc = { 'responses': { code: (description, [fields]) if as_list else (description, fields) } } f.__apidoc__ = merge(getattr(f, '__apidoc__', {}), doc) @wraps(f) def inner_wrapper(*args, **kwargs): response = ApiResponse(status=code, message='', data=[], errors=[], code=None) resp = f(*args, **kwargs) # для обратной совместимости if isinstance(resp, tuple): resp, response['code'], headers = unpack(resp) # предпочитаемый формат if isinstance(resp, ApiResponse): response.update(resp) # если все значения по умолчанию и передаём только данные else: response['data'] = resp response['data'] = restful.marshal(response['data'], fields) return response return inner_wrapper
def test_merge_simple_dicts_with_precedence(self): a = {'a': 'value', 'ab': 'overwritten'} b = {'b': 'other value', 'ab': 'keep'} self.assertEqual(utils.merge(a, b), { 'a': 'value', 'b': 'other value', 'ab': 'keep' })
def wrapper(func): doc = { 'responses': { code: (description, [fields]) if as_list else (description, fields) }, '__mask__': kwargs.get('mask', True), # Mask values can't be determined outside app context } func.__apidoc__ = merge(getattr(func, '__apidoc__', {}), doc) return func
def test_recursions_with_empty(self): a = {} b = { 'b': 'other value', 'ab': 'keep', 'nested_b': { 'b': 'nested' }, 'nested_a_b': { 'b': 'b only', 'ab': 'keep' } } self.assertEqual(utils.merge(a, b), b)
def test_recursions(self): a = { 'a': 'value', 'ab': 'overwritten', 'nested_a': { 'a': 'nested' }, 'nested_a_b': { 'a': 'a only', 'ab': 'overwritten' } } b = { 'b': 'other value', 'ab': 'keep', 'nested_b': { 'b': 'nested' }, 'nested_a_b': { 'b': 'b only', 'ab': 'keep' } } self.assertEqual( utils.merge(a, b), { 'a': 'value', 'b': 'other value', 'ab': 'keep', 'nested_a': { 'a': 'nested' }, 'nested_b': { 'b': 'nested' }, 'nested_a_b': { 'a': 'a only', 'b': 'b only', 'ab': 'keep' } })
def test_recursions(self): a = { 'a': 'value', 'ab': 'overwritten', 'nested_a': { 'a': 'nested' }, 'nested_a_b': { 'a': 'a only', 'ab': 'overwritten' } } b = { 'b': 'other value', 'ab': 'keep', 'nested_b': { 'b': 'nested' }, 'nested_a_b': { 'b': 'b only', 'ab': 'keep' } } self.assertEqual(utils.merge(a, b), { 'a': 'value', 'b': 'other value', 'ab': 'keep', 'nested_a': { 'a': 'nested' }, 'nested_b': { 'b': 'nested' }, 'nested_a_b': { 'a': 'a only', 'b': 'b only', 'ab': 'keep' } })
def test_merge_simple_dicts_with_precedence(self): a = {'a': 'value', 'ab': 'overwritten'} b = {'b': 'other value', 'ab': 'keep'} self.assertEqual(utils.merge(a, b), {'a': 'value', 'b': 'other value', 'ab': 'keep'})
def test_merge_simple_dicts_without_precedence(self): a = {'a': 'value'} b = {'b': 'other value'} self.assertEqual(utils.merge(a, b), {'a': 'value', 'b': 'other value'})