Loading aai/views.py +2 −7 Original line number Diff line number Diff line Loading @@ -87,16 +87,11 @@ class RegisterView(APIView): """Register a new user.""" registration_data = RegisterUserInput.from_request(request) new_user = UserManager.register_user(registration_data) login(request, new_user) logger.info( log_user_msg(request, request.user) + "successful registration" ) return Response( { "status": "ok", "detail": "User registered successfully", "sessionid": request.session.session_key, "detail": "User registered successfully. " f"Check email '{new_user.username}' for the initial login credentials.", } ) Loading openapi.yml +4 −7 Original line number Diff line number Diff line Loading @@ -388,24 +388,21 @@ paths: properties: username: type: string password: type: string repeat_password: type: string first_name: type: string last_name: type: string required: - username - password - repeat_password - first_name - last_name responses: '200': description: Registration successful $ref: "#/components/responses/AuthResponse" $ref: "#/components/responses/Success" '400': description: Registration failed $ref: "#/components/responses/Error" '500': $ref: "#/components/responses/Error" Loading user/lib/user_manager.py +18 −17 Original line number Diff line number Diff line Loading @@ -21,20 +21,15 @@ from user.models import User, Tag, UserTag class RegisterUserInput: def __init__( self, username: str, password: str, first_name: str, last_name: str ): def __init__(self, username: str, first_name: str, last_name: str): self.username = username self.first_name = first_name self.last_name = last_name self.password = password @classmethod def from_request(cls, request: Request): required_fields = [ "username", "password", "repeat_password", "first_name", "last_name", ] Loading @@ -49,15 +44,18 @@ class RegisterUserInput: ) username = request.data.get("username") password = request.data.get("password") if password != request.data.get("repeat_password"): raise UserOperationException(f"Passwords do not match") first_name = request.data.get("first_name") last_name = request.data.get("last_name") first_name = request.data.get("first_name").strip() if len(first_name) < 2: raise UserOperationException( "First name must be at least 2 characters long" ) last_name = request.data.get("last_name").strip() if len(last_name) < 2: raise UserOperationException( "Last name must be at least 2 characters long" ) return cls(username, password, first_name, last_name) return cls(username, first_name, last_name) class UserManager: Loading Loading @@ -111,19 +109,22 @@ class UserManager: raise UserOperationException( f"Your email domain is not allowed to register" ) cls.check_unique_username(register_input.username) password = User.generate_password() new_user = ( User( first_name=register_input.first_name, last_name=register_input.last_name, ) .set_email_username(register_input.username) .set_password(register_input.password) .set_password(password) .save() ) logger.info(f"new user `{new_user.username}` created") logger.info(f"new user `{new_user.username}` registered") send_credentials([(new_user, password)]) return new_user @classmethod Loading Loading
aai/views.py +2 −7 Original line number Diff line number Diff line Loading @@ -87,16 +87,11 @@ class RegisterView(APIView): """Register a new user.""" registration_data = RegisterUserInput.from_request(request) new_user = UserManager.register_user(registration_data) login(request, new_user) logger.info( log_user_msg(request, request.user) + "successful registration" ) return Response( { "status": "ok", "detail": "User registered successfully", "sessionid": request.session.session_key, "detail": "User registered successfully. " f"Check email '{new_user.username}' for the initial login credentials.", } ) Loading
openapi.yml +4 −7 Original line number Diff line number Diff line Loading @@ -388,24 +388,21 @@ paths: properties: username: type: string password: type: string repeat_password: type: string first_name: type: string last_name: type: string required: - username - password - repeat_password - first_name - last_name responses: '200': description: Registration successful $ref: "#/components/responses/AuthResponse" $ref: "#/components/responses/Success" '400': description: Registration failed $ref: "#/components/responses/Error" '500': $ref: "#/components/responses/Error" Loading
user/lib/user_manager.py +18 −17 Original line number Diff line number Diff line Loading @@ -21,20 +21,15 @@ from user.models import User, Tag, UserTag class RegisterUserInput: def __init__( self, username: str, password: str, first_name: str, last_name: str ): def __init__(self, username: str, first_name: str, last_name: str): self.username = username self.first_name = first_name self.last_name = last_name self.password = password @classmethod def from_request(cls, request: Request): required_fields = [ "username", "password", "repeat_password", "first_name", "last_name", ] Loading @@ -49,15 +44,18 @@ class RegisterUserInput: ) username = request.data.get("username") password = request.data.get("password") if password != request.data.get("repeat_password"): raise UserOperationException(f"Passwords do not match") first_name = request.data.get("first_name") last_name = request.data.get("last_name") first_name = request.data.get("first_name").strip() if len(first_name) < 2: raise UserOperationException( "First name must be at least 2 characters long" ) last_name = request.data.get("last_name").strip() if len(last_name) < 2: raise UserOperationException( "Last name must be at least 2 characters long" ) return cls(username, password, first_name, last_name) return cls(username, first_name, last_name) class UserManager: Loading Loading @@ -111,19 +109,22 @@ class UserManager: raise UserOperationException( f"Your email domain is not allowed to register" ) cls.check_unique_username(register_input.username) password = User.generate_password() new_user = ( User( first_name=register_input.first_name, last_name=register_input.last_name, ) .set_email_username(register_input.username) .set_password(register_input.password) .set_password(password) .save() ) logger.info(f"new user `{new_user.username}` created") logger.info(f"new user `{new_user.username}` registered") send_credentials([(new_user, password)]) return new_user @classmethod Loading