From 3d2eb9fd8e6281d665ead0e18eb2f3ebde866196 Mon Sep 17 00:00:00 2001 From: John Davis Date: Fri, 7 Mar 2025 10:11:38 -0500 Subject: [PATCH] Remove hybrid property from model --- lib/galaxy/managers/roles.py | 6 +----- lib/galaxy/model/__init__.py | 16 +--------------- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/lib/galaxy/managers/roles.py b/lib/galaxy/managers/roles.py index 02448c1a4fb..8864f8900e1 100644 --- a/lib/galaxy/managers/roles.py +++ b/lib/galaxy/managers/roles.py @@ -84,11 +84,7 @@ class RoleManager(base.ModelManager[model.Role]): user_ids = role_definition_model.user_ids or [] group_ids = role_definition_model.group_ids or [] - stmt = ( - select(Role) - .where(Role.name == name) # type:ignore[arg-type,comparison-overlap] # Role.name is a SA hybrid property - .limit(1) - ) + stmt = select(Role).where(Role.name == name).limit(1) if trans.sa_session.scalars(stmt).first(): raise Conflict(f"A role with that name already exists [{name}]") diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py index 9f4f27a9e1d..1bcf8f637f7 100644 --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -112,7 +112,6 @@ from sqlalchemy.ext.associationproxy import ( association_proxy, AssociationProxy, ) -from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.ext.orderinglist import ordering_list from sqlalchemy.orm import ( aliased, @@ -3836,7 +3835,7 @@ class Role(Base, Dictifiable, RepresentById): id: Mapped[int] = mapped_column(primary_key=True) create_time: Mapped[datetime] = mapped_column(default=now, nullable=True) update_time: Mapped[datetime] = mapped_column(default=now, onupdate=now, nullable=True) - _name: Mapped[str] = mapped_column("name", String(255), index=True) + name: Mapped[str] = mapped_column(String(255), index=True) description: Mapped[Optional[str]] = mapped_column(TEXT) type: Mapped[Optional[str]] = mapped_column(String(40), index=True) deleted: Mapped[Optional[bool]] = mapped_column(index=True, default=False) @@ -3859,19 +3858,6 @@ class Role(Base, Dictifiable, RepresentById): def default_name(role_type): return f"{role_type.value} role" - @hybrid_property - def name(self): - if self.type == Role.types.PRIVATE: - user_assocs = self.users - assert len(user_assocs) == 1, f"Did not find exactly one user for private role {self}" - return user_assocs[0].user.email - else: - return self._name - - @name.setter # type:ignore[no-redef] # property setter - def name(self, name): - self._name = name - def __init__(self, name=None, description=None, type=types.SYSTEM, deleted=False): self.name = name or Role.default_name(type) self.description = description