Source code for orghandbookapi.database.models.activity
from typing import Optional
from sqlalchemy import ForeignKey, Integer, String
from sqlalchemy.orm import Mapped, mapped_column, relationship
from .base import Base
[docs]
class Activity(Base): # noqa: D101
__tablename__ = "activities"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(String, nullable=False)
parent_id: Mapped[int | None] = mapped_column(
ForeignKey("activities.id"), nullable=True
)
level: Mapped[int] = mapped_column(Integer, default=0)
parent: Mapped[Optional["Activity"]] = relationship(
remote_side=[id], back_populates="children"
)
children: Mapped[list["Activity"]] = relationship(back_populates="parent")
organizations: Mapped[list["Organization"]] = relationship( # noqa: F821
back_populates="activities", secondary="organization_activity"
)
def __str__(self): # noqa: D105
return f"Activity(id={self.id}, name={self.name!r}, level={self.level})"
def __repr__(self): # noqa: D105
return str(self)