from sqlalchemy import Column, String, Boolean, Enum, Text, DateTime, func, Integer, ForeignKey from sqlalchemy.orm import relationship from Utils.SqlAlchemyUtils import Base from Schemas.DailySchemas import DailyTypeEnum from Mods.Comment.Models import Comment class Daily(Base): __tablename__ = "daily" id = Column(Integer, primary_key=True, comment="日报ID") type = Column(Enum(DailyTypeEnum, values_callable=lambda x: [e.value for e in x]), nullable=False) # fill_user = Column(String(128), comment="填报人openid") fill_user = Column(String(128), ForeignKey('user.email'), comment="填报人email") user_info = relationship('User', uselist=False, backref='user') title = Column(String(128), comment="标题") department = Column(Integer, comment="填报部门") post = Column(Integer, comment="填报部门") content = Column(Text, comment="填报内容") file_md = Column(String(255), comment="附加文件") required_auth = Column(Text, comment="日报权限") sign_name = Column(String(128), comment="签发人") sub_type = Column(String(255), comment="二级类别") comments = relationship("Comment", cascade='all', back_populates='daily', uselist=True) daily_time = Column(DateTime, server_default=func.now(), comment='日报时间') create_time = Column(DateTime, server_default=func.now(), comment='创建时间') update_time = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment='修改时间') def to_dict(self): data = {c.name: getattr(self, c.name) for c in self.__table__.columns} user = getattr(self, 'user_info') data['user'] = user.to_dict() return data