def SignUp(self, request, context): """Creates a new db user object""" log = get_logger() result = TokenReply() try: log = log.bind(password=request.password, email=request.email) if len(request.password) < 6: raise ValueError(f"Password too short. Received length {request.password}") token = User.create(email=request.email.lower(), password=request.password, phone=request.phone, name=request.name) if token: result = TokenReply(token=token) except IntegrityError as err: context.set_code(grpc.StatusCode.INVALID_ARGUMENT) context.set_details(f"Duplicate email {request.email}") except ValueError as err: context.set_code(grpc.StatusCode.INVALID_ARGUMENT) context.set_details(str(err)) except Exception as err: context.set_code(grpc.StatusCode.INTERNAL) context.set_details(str(err)) finally: handle_resp('signup', context, log) return result
async def register(*_, create: dict = None) -> User: create_user = CreateUser(**create) create_user.password = Password.encode(create_user.password) return User.create(**create_user.dict())