daily/Models/DailyModel.py

33 lines
1.7 KiB
Python

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