Commit 3d2eb9fd authored by John Davis's avatar John Davis
Browse files

Remove hybrid property from model

parent 43a696e3
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -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
Original line number Diff line number Diff line
@@ -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