Changed user logic to display name and refined requirements page design
This commit is contained in:
@@ -314,6 +314,20 @@ def _require_role(user, allowed_role_ids: List[int], action: str = "perform this
|
||||
)
|
||||
|
||||
|
||||
def _get_display_name(user) -> str:
|
||||
"""
|
||||
Get the best display name for a user.
|
||||
Falls back in order: full_name -> username -> sub.
|
||||
|
||||
Args:
|
||||
user: The database user object
|
||||
|
||||
Returns:
|
||||
The best available display name for the user
|
||||
"""
|
||||
return user.full_name or user.username or user.sub
|
||||
|
||||
|
||||
async def _verify_project_membership(project_id: int, user_id: int, db: AsyncSession):
|
||||
"""Helper to verify user is a member of a project."""
|
||||
project_repo = ProjectRepository(db)
|
||||
@@ -570,7 +584,7 @@ async def get_project_members(
|
||||
return [
|
||||
ProjectMemberResponse(
|
||||
id=member.id,
|
||||
sub=member.sub,
|
||||
sub=_get_display_name(member),
|
||||
role_id=member.role_id,
|
||||
role_name=member.role.role_name if member.role else "unknown",
|
||||
role_display_name=ROLE_DISPLAY_NAMES.get(member.role.role_name, member.role.role_name.title()) if member.role else "Unknown",
|
||||
@@ -647,7 +661,7 @@ async def update_member_role(
|
||||
|
||||
return ProjectMemberResponse(
|
||||
id=updated_user.id,
|
||||
sub=updated_user.sub,
|
||||
sub=_get_display_name(updated_user),
|
||||
role_id=updated_user.role_id,
|
||||
role_name=role.role_name,
|
||||
role_display_name=ROLE_DISPLAY_NAMES.get(role.role_name, role.role_name.title()),
|
||||
@@ -772,9 +786,9 @@ def _build_requirement_response(req) -> RequirementResponse:
|
||||
# Get the latest validation
|
||||
latest_validation = max(req.validations, key=lambda v: v.created_at or req.created_at)
|
||||
validation_status = latest_validation.status.status_name if latest_validation.status else "Not Validated"
|
||||
# Try to get username from user relationship
|
||||
# Try to get display name from user relationship
|
||||
if latest_validation.user:
|
||||
validated_by = latest_validation.user.sub
|
||||
validated_by = _get_display_name(latest_validation.user)
|
||||
validated_at = latest_validation.created_at
|
||||
validation_version = latest_validation.req_version_snapshot
|
||||
|
||||
@@ -1112,7 +1126,7 @@ async def create_validation(
|
||||
req_version_snapshot=validation.req_version_snapshot,
|
||||
comment=validation.comment,
|
||||
created_at=validation.created_at,
|
||||
validator_username=user.sub,
|
||||
validator_username=_get_display_name(user),
|
||||
validator_id=user.id
|
||||
)
|
||||
|
||||
@@ -1159,7 +1173,7 @@ async def get_validation_history(
|
||||
req_version_snapshot=v.req_version_snapshot,
|
||||
comment=v.comment,
|
||||
created_at=v.created_at,
|
||||
validator_username=v.user.sub,
|
||||
validator_username=_get_display_name(v.user),
|
||||
validator_id=v.user_id
|
||||
)
|
||||
for v in validations
|
||||
@@ -1416,7 +1430,7 @@ async def create_requirement_link(
|
||||
"req_name": target_req.req_name,
|
||||
"tag_code": target_req.tag.tag_code
|
||||
},
|
||||
created_by_username=user.sub,
|
||||
created_by_username=_get_display_name(user),
|
||||
created_by_id=user.id,
|
||||
created_at=link.created_at
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user