From 287f22399bcc8f700f61d2135725eae36f50992c Mon Sep 17 00:00:00 2001 From: dmitriy Date: Mon, 29 Jan 2018 15:30:11 +0200 Subject: [PATCH] Implemented inject_dto decorator --- api_commons/decorator.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 api_commons/decorator.py diff --git a/api_commons/decorator.py b/api_commons/decorator.py new file mode 100644 index 0000000..8452a94 --- /dev/null +++ b/api_commons/decorator.py @@ -0,0 +1,16 @@ +from api_commons.common import ApiResponse + + +def inject_dto(dto_class, dto_object_name: str = 'dto'): + def dto_decorator(func): + def wrapped(*args, **kwargs): + request = args[1] + dto_object = dto_class.from_dict(request.data) + if not dto_object.is_valid(): + return ApiResponse.bad_request(dto_object) + kwargs[dto_object_name] = dto_object + return func(*args, **kwargs) + + return wrapped + + return dto_decorator