Exemple #1
0
class Admin(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(30), index=True)
    password_hash = db.Column(db.String(128))
    blog_title = db.Column(db.String(60))
    blog_sub_title = db.Column(db.String(100))
    name = db.Column(db.String(30))
    about = db.Column(db.Text)

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def validate_password(self, password):
        return check_password_hash(self.password_hash, password)
Exemple #2
0
class Comments(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    author = db.Column(db.String(30))
    email = db.Column(db.String(254))
    site = db.Column(db.String(255))
    body = db.Column(db.Text)
    from_admin = db.Column(db.Boolean, default=False)
    reviewed = db.Column(db.Boolean, default=False)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True)

    posts_id = db.Column(db.Integer, db.ForeignKey('ports.id'))
    posts = db.relationship('Post', back_populates='comments')

    replied_id = db.Column(db.Integer, db.ForeignKey('comments.id'))
    replies = db.relationship('Comments', back_populates='replied', cascade='all, delete-orphan')
    replied = db.relationship('Comments', back_populates='replies', remote_side=[id])
Exemple #3
0
class Admin(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20))  # 用户名(用于登录)
    password_hash = db.Column(db.String(128))
    # 博客设置
    blog_title = db.Column(db.String(60))  # 博客标题
    blog_sub_title = db.Column(db.String(100))  # 子标题
    name = db.Column(db.String(30))  # 用户昵称
    about = db.Column(db.Text)

    # 生成密码函数
    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    # 验证密码函数
    def validate_password(self, password):
        return check_password_hash(self.password_hash, password)
Exemple #4
0
class Admin(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, index=True)
    email = db.Column(db.String(254), unique=True, index=True)
    password_hash = db.Column(db.String(128))
    name = db.Column(db.String(30))
    about = db.Column(db.Text)
    confirmed = db.Column(db.Boolean, default=False)

    posts = db.relationship('Post', back_populates='author', cascade='all')
    comments = db.relationship('Comment',
                               back_populates='author',
                               cascade='all')

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def validate_password(self, password):
        return check_password_hash(self.password_hash, password)
Exemple #5
0
class Ports(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(60))
    body = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True)
    can_comment = db.Column(db.Boolean, default=True)

    category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
    category = db.relationship('Category', back_populates='ports')

    comments = db.relationship('Comments', back_populates='ports', cascade='all, delete-orphan')
Exemple #6
0
class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30), unique=True)
    posts = db.relationship('Post', back_populates='category')

    def delete(self):
        default_category = Category.query.get(1)
        posts = self.posts[:]
        for post in posts:
            post.category = default_category
        db.session.delete(self)
        db.session.commit()
Exemple #7
0
class Admin(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(20))  # 用户名(用于登录)
    password_hash = db.Column(db.String(128))
    # 博客设置
    blog_title = db.Column(db.String(60))  # 博客标题
    blog_sub_title = db.Column(db.String(100))  # 子标题
    name = db.Column(db.String(30))  # 用户昵称(评论中显示)
    about = db.Column(db.Text)
    superword = db.Column(db.String(128))
    is_admin = db.Column(db.Boolean, default=False)
    is_superadmin = db.Column(db.Boolean, default=False)
    posts = db.relationship('Post', back_populates='admin')
    comments = db.relationship('Comment', back_populates='admin')

    # 生成密码函数
    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def set_super(self, password):
        self.superword = generate_password_hash(password)

    def validate_super(self, password):
        return check_password_hash(self.superword, password)

    # 验证密码函数
    def validate_password(self, password):
        return check_password_hash(self.password_hash, password)
Exemple #8
0
class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30), unique=True)  # 分类名不允许重复,unique=True
    # back_populates为SQLAlchemy的关系函数参数,用于定义反向引用,建立双向关系,在关系的另一侧也必须显式定义关系属性
    posts = db.relationship('Post', back_populates='category')

    def delete(self):
        default_category = Category.query.get(1)  # 获取默认分类
        posts = self.posts[:]
        for post in posts:
            post.category = default_category
        db.session.delete(self)
        db.session.commit()
Exemple #9
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(30))
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)  # 时间戳
    body = db.Column(db.Text)
    can_comments = db.Column(db.Boolean, default=True)

    category_id = db.Column(db.Integer,
                            db.ForeignKey('category.id'))  # 将category_id设置为外键
    category = db.relationship('Category', back_populates='posts')

    comments = db.relationship('Comment',
                               back_populates='post',
                               cascade='all, delete-orphan')  # cascade设置级联操作
Exemple #10
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    author_name = db.Column(db.String(30))
    body = db.Column(db.Text)
    reviewed = db.Column(db.Boolean, default=False)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True)

    author_id = db.Column(db.Integer, db.ForeignKey('admin.id'))
    replied_id = db.Column(db.Integer, db.ForeignKey('comment.id'))
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
    post_id_r = db.Column(db.Integer)
    author = db.relationship('Admin', back_populates='comments')
    post = db.relationship('Post', back_populates='comments')
    replies = db.relationship('Comment',
                              back_populates='replied',
                              cascade='all, delete-orphan')
    replied = db.relationship('Comment',
                              back_populates='replies',
                              remote_side=[id])
Exemple #11
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    author = db.Column(db.String(20))
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    body = db.Column(db.Text)
    from_admin = db.Column(db.Boolean, default=False)
    reviewed = db.Column(db.Boolean, default=False)

    post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
    post = db.relationship('Post', back_populates='comments')
    # 建立邻接列表关系(在同一个模型内的一对多关系)
    replied_id = db.Column(db.Integer, db.ForeignKey('comment.id'))
    # replied表示被回复评论的标量关系属性, remote_side=[id]将id字段定义为关系远程侧
    replied = db.relationship('Comment',
                              back_populates='replies',
                              remote_side=[id])
    replies = db.relationship('Comment',
                              back_populates='replied',
                              cascade='all')
Exemple #12
0
class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30), unique=True)

    ports = db.relationship('Ports', back_populates='category')