johannes-ws commented on issue #29934:
URL: https://github.com/apache/superset/issues/29934#issuecomment-3138667332
I got a same message error, but in my case i success get access token, but
error when would post API
import requests
import json
import os
# --- Configuration ---
# For security, use environment variables in production environments.
SUPERSET_URL = "http://127.0.0.1:8088/"
ADMIN_USER = os.getenv("SUPERSET_ADMIN_USER", "admin")
ADMIN_PASSWORD = os.getenv("SUPERSET_ADMIN_PASSWORD", "admin")
# --- New Role & User Details ---
NEW_ROLE_NAME = "Financial Analyst"
NEW_ROLE_PERMISSIONS = ["can read on Dashboard", "can read on Chart"]
NEW_USER_USERNAME = "dina.finance"
NEW_USER_FIRSTNAME = "Dina"
NEW_USER_LASTNAME = "Putri"
NEW_USER_EMAIL = "[email protected]"
NEW_USER_PASSWORD = "SecureStrongPassword456!"
# Error handler function
def handle_error(response):
"""Prints error message from API response and exits."""
try:
error_details = response.json()
print(f"ā Failed: Status {response.status_code} -
{error_details.get('message', response.text)}")
except json.JSONDecodeError:
print(f"ā Failed: Status {response.status_code} -
{response.text}")
exit()
def main():
"""Main function to execute the process."""
access_token = None
# Use a session object for efficient multiple requests
session = requests.Session()
# 1. Login and get access token
print(f"š Attempting to log in as '{ADMIN_USER}'...")
try:
login_payload = {
"username": ADMIN_USER,
"password": ADMIN_PASSWORD,
"provider": "db"
}
response = session.post(f"{SUPERSET_URL}/api/v1/security/login",
json=login_payload, timeout=10)
if response.status_code != 200:
handle_error(response)
access_token = response.json().get("access_token")
if not access_token:
print("ā Access token not found in response.")
exit()
print("ā
Successfully retrieved token.")
# Set Authorization header for subsequent requests
session.headers.update({"Authorization": f"Bearer
{access_token}"})
except requests.exceptions.RequestException as e:
print(f"ā Connection error during login: {e}")
exit()
# 2. Create or get Role
print(f"š ļø Checking for role '{NEW_ROLE_NAME}'...")
role_id = None
role_payload = {"name": NEW_ROLE_NAME, "permissions":
NEW_ROLE_PERMISSIONS}
try:
response =
session.post(f"{SUPERSET_URL}/api/v1/security/roles/", json=role_payload)
if response.status_code == 201:
role_id = response.json()["result"]["id"]
print(f"ā
Role '{NEW_ROLE_NAME}' successfully created with
ID: {role_id}")
elif response.status_code == 409:
print(f"ā¹ļø Role '{NEW_ROLE_NAME}' already exists. Searching
for ID...")
params = {"q": json.dumps({"filters": [{"col": "name",
"opr": "eq", "value": NEW_ROLE_NAME}]})}
response_get =
session.get(f"{SUPERSET_URL}/api/v1/security/roles/", params=params)
if response_get.status_code == 200 and
response_get.json()["count"] > 0:
role_id = response_get.json()["result"][0]["id"]
print(f"ā
Role found with ID: {role_id}")
else:
print("ā Failed to find ID for existing role.")
exit()
else:
handle_error(response)
except requests.exceptions.RequestException as e:
print(f"ā Connection error while creating role: {e}")
exit()
# 3. Create new user
if role_id:
print(f"š¤ Creating user '{NEW_USER_USERNAME}'...")
user_payload = {
"first_name": NEW_USER_FIRSTNAME,
"last_name": NEW_USER_LASTNAME,
"username": NEW_USER_USERNAME,
"email": NEW_USER_EMAIL,
"password": NEW_USER_PASSWORD,
"active": True,
"roles": [role_id]
}
try:
response =
session.post(f"{SUPERSET_URL}/api/v1/security/users/", json=user_payload)
if response.status_code != 201:
handle_error(response)
print(f"ā
User '{NEW_USER_USERNAME}' successfully created.")
except requests.exceptions.RequestException as e:
print(f"ā Connection error while creating user: {e}")
exit()
else:
print("ā Cannot proceed with user creation because role ID was
not found.")
print("\nš Process Completed!")
if __name__ == "__main__":
main()
When i run <code>python setup_superset.py</code> it gave this output
š Attempting to log in as 'admin'...
ā
Successfully retrieved token.
š ļø Checking for role 'Financial Analyst'...
ā Failed: Status 404 - {"errors": [{"message": "404 Not Found: The
requested URL was not found on the server. If you entered the URL manually
please check your spelling and try again.", "error_type":
"GENERIC_BACKEND_ERROR", "level": "error", "extra": {"issue_codes": [{"code":
1011, "message": "Issue 1011 - Superset encountered an unexpected error."}]}}]}
Any solution about that? @rusackas
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]