class Photo(db.Model): __tablename__ = 'photo' id = db.Column(db.INTEGER, primary_key=True, nullable=False, comment='photo id', autoincrement=True) title = db.Column(db.String(40), nullable=False, comment='photo title', default='""') description = db.Column(db.String(300), nullable=False, comment='photo description', default='""') save_path = db.Column(db.String(200), nullable=False, comment='photo save path') save_path_s = db.Column(db.String(200), nullable=False, comment='small size') create_time = db.Column(db.DateTime, default=datetime.now) level = db.Column(db.INTEGER, default=0) tags = db.relationship('Tag', secondary=tagging, back_populates='photos') comments = db.relationship('PhotoComment', back_populates='photo', cascade='all') likes = db.relationship('LikePhoto', back_populates='photo', cascade='all')
class BlogType(db.Model): __tablename__ = 'blog_type' id = db.Column(db.INTEGER, primary_key=True, nullable=False, comment='blog type id', autoincrement=True) name = db.Column(db.String(20), unique=True, nullable=False, comment='blog type name') counts = db.Column(db.INTEGER, nullable=False, default=0, comment='this type blog counts') description = db.Column(db.String(300), nullable=False) create_time = db.Column(db.DateTime, default=datetime.now) blogs = db.relationship('Blog', back_populates='blog_types') def __init__(self, name, description): self.name = name self.description = description def __repr__(self): return '<name> %s <description> %s' % (self.name, self.description)
class Notification(db.Model): __tablename__ = 'notification' id = db.Column(db.INTEGER, primary_key=True, autoincrement=True) type = db.Column(db.INTEGER, default=0, comment='notification type 0 blog 1 photo') target_id = db.Column(db.INTEGER) target_name = db.Column(db.String(200)) send_user = db.Column(db.String(40)) receive_id = db.Column(db.INTEGER, db.ForeignKey('user.id')) msg = db.Column(db.String(400)) read = db.Column(db.INTEGER, default=0, comment='is readed? 0 no 1 yes') timestamp = db.Column(db.DateTime, default=datetime.now) receive_user = db.relationship('User', back_populates='receive_notify')
class Role(db.Model): __tablename__ = 'role' id = db.Column(db.INTEGER, primary_key=True, nullable=False, comment='role id', autoincrement=True) name = db.Column(db.String(50), nullable=False, unique=True, comment='role name') permission = db.Column(db.String(50), nullable=False, unique=True) users = db.relationship('User', back_populates='roles') @staticmethod def init_role(): admin = Role(name='ADMIN', permission='ANY') db.session.add(admin) usr = Role(name='USER', permission='SOME') db.session.add(usr) db.session.commit()
class Blog(db.Model): __tablename__ = 'blog' id = db.Column(db.INTEGER, primary_key=True, nullable=False, comment='blog id', autoincrement=True) title = db.Column(db.String(200), nullable=False, comment='blog title', index=True) type_id = db.Column(db.INTEGER, db.ForeignKey('blog_type.id')) pre_img = db.Column(db.String(200), nullable=False, comment='blog preview image') introduce = db.Column(db.String(255), nullable=False, comment='blog introduce text', index=True) content = db.Column(db.TEXT, nullable=False, comment='blog content') is_private = db.Column(db.INTEGER, nullable=False, default=0, comment='is private? 0:no 1:yes') create_time = db.Column(db.DateTime, nullable=False, default=datetime.now) update_time = db.Column(db.DateTime, nullable=False, default=datetime.now) read_times = db.Column(db.INTEGER, default=0) delete_flag = db.Column(db.INTEGER, db.ForeignKey('states.id')) is_top = db.Column(db.INTEGER, default=0, comment='is it set top?') blog_types = db.relationship('BlogType', back_populates='blogs') comments = db.relationship('BlogComment', back_populates='blog', cascade='all') state = db.relationship('States', back_populates='blog') blog_history = db.relationship('BlogHistory', back_populates='blog', cascade='all') def __repr__(self): return '<title> %s <introduce> %s' % (self.title, self.introduce)
class States(db.Model): __tablename__ = 'states' id = db.Column(db.INTEGER, primary_key=True, autoincrement=True) name = db.Column(db.String(40)) timestamp = db.Column(db.DateTime, default=datetime.now) blog = db.relationship('Blog', back_populates='state') user = db.relationship('User', back_populates='statuses') flink = db.relationship('FriendLink', back_populates='status') @staticmethod def init_states(): s1 = States(name='正常') s2 = States(name='禁用') db.session.add(s1) db.session.add(s2) db.session.commit()