Remove hybrid property from model

This commit is contained in:
John Davis
2025-03-10 11:13:13 -04:00
parent 43a696e353
commit 3d2eb9fd8e
2 changed files with 2 additions and 20 deletions
+1 -5
View File
@@ -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}]")
+1 -15
View File
@@ -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