from sqlalchemy.orm import DeclarativeBase, Mapped, declared_attr, mapped_column class Base(DeclarativeBase): """Base from DeclarativeBase""" pass class CommonMixin: """ CommonMixin for all common fields in projetc """ @declared_attr.directive def __tablename__(cls) -> str: """__tablename__. :rtype: str """ return cls.__name__.lower() # type: ignore id: Mapped[int] = mapped_column(primary_key=True) class PasswordMixin: """ PasswordMixin for entities with password """ hashed_password: Mapped[str] def set_password(self, password) -> None: """set_password. :param password: :rtype: None """ from ..auth import password_helper self.hashed_password = password_helper.hash(password)