from sqlalchemy import Column, Integer, Boolean, String, ForeignKey from sqlalchemy.orm import relationship, foreign, remote from crudkit.core.base import CRUDMixin from muck.models.dbref import Dbref, ObjectType class Player(Dbref): __tablename__ = "players" id = Column(Integer, ForeignKey("dbref.id"), primary_key=True) pennies = Column(Integer, nullable=False, default=0) insert_mode = Column(Boolean, nullable=False, default=False) block = Column(Integer, nullable=True) password = Column(String, nullable=False) home_id = Column(Integer, ForeignKey("dbref.id"), nullable=True) home = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[home_id], primaryjoin=lambda: foreign(Player.home_id) == remote(Dbref.id)) current_program_id = Column(Integer, ForeignKey("dbref.id"), nullable=True) current_program = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[current_program_id], primaryjoin=lambda: foreign(Player.current_program_id) == remote(Dbref.id)) __mapper_args__ = { "polymorphic_identity": ObjectType.PLAYER, "inherit_condition": id == Dbref.id }