goingforstudying-ctrl commented on code in PR #40746:
URL: https://github.com/apache/superset/pull/40746#discussion_r3366975654
##########
superset/mcp_service/user/schemas.py:
##########
@@ -104,6 +104,20 @@ class UserInfo(BaseModel):
"access via get_user_info; not available in list_users because roles "
"is a relationship, not a selectable column)",
)
+
+ @field_validator("roles", mode="before")
+ @classmethod
+ def _extract_role_names(cls, v: Any) -> list[str] | None:
+ """Coerce Role ORM objects to their .name strings."""
+ if v is None:
+ return None
+ result: list[str] = []
+ for item in v:
+ if isinstance(item, str):
+ result.append(item)
+ elif hasattr(item, "name"):
+ result.append(str(item.name))
+ return result if result else None
Review Comment:
Thanks for the review. The validator already rejects bare strings (line
114-116) and handles DetachedInstanceError (line 124-125). The test file also
covers the from_attributes round-trip path. Let me know if there is a specific
scenario you think is still missing.
##########
superset/mcp_service/user/schemas.py:
##########
@@ -104,6 +104,20 @@ class UserInfo(BaseModel):
"access via get_user_info; not available in list_users because roles "
"is a relationship, not a selectable column)",
)
+
+ @field_validator("roles", mode="before")
+ @classmethod
+ def _extract_role_names(cls, v: Any) -> list[str] | None:
Review Comment:
Thanks for the review. The validator already rejects bare strings (line
114-116) and handles DetachedInstanceError (line 124-125). The test file also
covers the from_attributes round-trip path. Let me know if there is a specific
scenario you think is still missing.
--
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]