from role.models import PermissionTags, Permissions, Roles def serialize_permission_tag(tag: PermissionTags) -> dict: return { "id": tag.id, "tag_name": tag.tag_name, "module": tag.module, "action": tag.action, "description": tag.description, "is_active": tag.is_active, "is_deleted": tag.is_deleted, "created_at": tag.created_at.isoformat() if tag.created_at else None, "updated_at": tag.updated_at.isoformat() if tag.updated_at else None, } def serialize_permission( permission: Permissions, *, tag_names: list[str] | None = None, ) -> dict: return { "id": permission.id, "name": permission.name, "description": permission.description, "permission_tags": list(permission.permission_tags or []), "tag_names": list(tag_names or []), "is_system": permission.is_system, "is_active": permission.is_active, "is_deleted": permission.is_deleted, "created_at": permission.created_at.isoformat() if permission.created_at else None, "updated_at": permission.updated_at.isoformat() if permission.updated_at else None, } def serialize_role( role: Roles, *, bundles: list[dict] | None = None, permissions: list[str] | None = None, ) -> dict: return { "id": role.id, "role_name": role.role_name, "description": role.description, "permissions": list(role.permissions or []), "bundles": list(bundles or []), "effective_permissions": list(permissions or []), "is_system": role.is_system, "is_active": role.is_active, "is_deleted": role.is_deleted, "created_at": role.created_at.isoformat() if role.created_at else None, "updated_at": role.updated_at.isoformat() if role.updated_at else None, }