def bunk_post (self, client): """ Create a user and return user_id. @request_param username (str) @request_param password (str) @request_param email (str) @response user_id (int) """ user = UserDBModel() user.email = client.params.get("email") user.password = str(client.params.get("password")) user.username = client.params.get("username") if user.validate(): try: # get db connection and cursor db = self.get_db() dbconn = db.get_connection() dbcurs = dbconn.cursor() # check if user exists existing_user = UserDBModel.filter([["username", "=", user.username]])() if existing_user: # user exists err_code = RESP_ERR_CODE_USERNAME_ALREADY_IN_USE err_msg = "Username already in use." field_errs = [('username', 'Username already in use. Please select another one.')] return self.respond_error(err_code, err_msg, response_code.HTTP_409, field_errors=field_errs) # create user user.save(connection=dbconn) # retrieve newely created user_id dbcurs.execute("SELECT CURRVAL('user_user_id_seq') AS value") user.user_id = db.fetch_all(dbcurs)[0]["value"] except Exception, e: # failed to create user for unknown reason err_code = RESP_ERR_CODE_USER_CREATION_FAILED err_msg = "User failed to create for unknown reason." return self.respond_error(err_code, err_msg, response_code.HTTP_500)