コード例 #1
0
ファイル: create.py プロジェクト: orther/Bunk
    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)