Пример #1
0
class UserToRole(db.Model):
    """用户-角色多对多关系表"""
    __tablename__ = "permission_user_to_role"
    u_id = db.Column(db.Integer, db.ForeignKey("users.id"), primary_key=True)
    r_id = db.Column(db.Integer,
                     db.ForeignKey("permission_role.id"),
                     primary_key=True)
Пример #2
0
class PermissionToRole(db.Model):
    """权限-角色多对多关系表"""
    __tablename__ = 'permission_to_role'
    p_id = db.Column(db.Integer,
                     db.ForeignKey("permission_permission.id"),
                     primary_key=True)
    r_id = db.Column(db.Integer,
                     db.ForeignKey("permission_role.id"),
                     primary_key=True)
Пример #3
0
class ArticleToTag(db.Model):
    """标签与文章关系表"""
    __tablename__ = 'article_to_tag'
    article_id = db.Column(db.Integer,
                           db.ForeignKey('article_article.id'),
                           primary_key=True)
    tag_id = db.Column(db.Integer,
                       db.ForeignKey('article_tag.id'),
                       primary_key=True)
Пример #4
0
class Article(SearchableMixin, db.Model):
    """文章表"""
    __tablename__ = 'article_article'
    # __searchable__ = ['title', 'content']
    # __analyzer__ = ChineseAnalyzer()

    id = db.Column(db.Integer, primary_key=True)
    uuid = db.Column(db.String(36),
                     unique=True,
                     nullable=False,
                     default=lambda: str(uuid4()))
    title = db.Column(db.String(50))
    describe = db.Column(db.Text)
    read_num = db.Column(db.Integer, default=0)
    content = db.Column(db.Text)
    content_html = db.Column(db.Text)
    create_time = db.Column(db.DateTime, index=True, default=datetime.now)

    image_path = db.Column(db.String(100), )

    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))

    # 与分类建立外键关系
    category_id = db.Column(db.Integer, db.ForeignKey('article_category.id'))

    # 建立orm查询关系,文章表与评论表的一对多关系
    comments = db.relationship('Comment',
                               backref='article',
                               passive_deletes=True,
                               order_by=-Comment.create_time)

    # 建立orm查询关系,标签表与文章表的多对多关系
    tags = db.relationship('Tag', secondary=ArticleToTag.__table__)

    ips = db.relationship('Record', secondary=UserLikeArticle.__table__)

    @staticmethod
    def on_changed_body(target, value, oldvalue, initiator):
        allowed_tags = [
            'a', 'abbr', 'acronym', 'b', 'blockquote', 'code', 'em', 'i', 'li',
            'ol', 'pre', 'strong', 'ul', 'h1', 'h2', 'h3', 'p', 'img', 'video',
            'div', 'iframe', 'p', 'br', 'span', 'hr', 'src', 'class'
        ]
        allowed_attrs = {
            '*': ['class'],
            'a': ['href', 'rel'],
            'img': ['src', 'alt']
        }
        target.body_html = bleach.linkify(
            bleach.clean(markdown(value, output_format='html'),
                         tags=allowed_tags,
                         strip=True,
                         attributes=allowed_attrs))
Пример #5
0
class UserLikeArticle(db.Model):
    """点赞表"""
    __tablename__ = 'article_user_like'

    ip_id = db.Column(db.Integer,
                      db.ForeignKey('records.id'),
                      nullable=False,
                      primary_key=True)
    article_id = db.Column(db.Integer,
                           db.ForeignKey('article_article.id'),
                           nullable=False,
                           primary_key=True)
Пример #6
0
class Comment(db.Model):
    """一级评论表"""
    __tablename__ = 'article_comment'
    id = db.Column(db.Integer, primary_key=True)
    uuid = db.Column(db.String(36),
                     unique=True,
                     nullable=False,
                     default=lambda: str(uuid4()))
    content = db.Column(db.Text)
    create_time = db.Column(db.DateTime, index=True, default=datetime.now)
    # 与文章表建立外键关系
    article_id = db.Column(
        db.Integer, db.ForeignKey('article_article.id', ondelete="CASCADE"))
    # 与用户表建立外键关系
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
Пример #7
0
class ServiceItem(BaseModel):
    __tablename__ = "serviceitem"
    icon = db.Column(db.TEXT, nullable=True)
    title = db.Column(db.TEXT, nullable=True)
    text = db.Column(db.TEXT, nullable=True)
    service_id = db.Column(db.INT, db.ForeignKey('services.id'))
    service = db.relationship('Service', backref='services', lazy=True)
Пример #8
0
class Menu(db.Model):
    """
    页面中元素菜单显示对应的权限
    """
    __tablename__ = 'permission_menu'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(50), nullable=False)
    p_id = db.Column(db.Integer,
                     db.ForeignKey("permission_permission.id"),
                     unique=True,
                     nullable=False)

    permission = db.relationship("Permission", uselist=False)

    @classmethod
    def by_name(cls, name):
        return cls.query.filter_by(name=name).first()
Пример #9
0
class Reply(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    thread_id = db.Column(db.Integer, db.ForeignKey('thread.id'))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    message = db.Column(db.String(200))
    date_created = db.Column(db.DateTime(), default=datetime.utcnow)
Пример #10
0
from create_app import db
from tweets.models import Tweets

followers = db.Table('followers',
                     db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
                     db.Column('followee_id', db.Integer, db.ForeignKey('user.id')))


class User(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    username = db.Column(db.String(80), unique=True)
    password = db.Column(db.String(255))
    image = db.Column(db.String(255))
    joined_date = db.Column(db.String(255))
    tweets = db.relationship("Tweets", backref='user', lazy='dynamic')
    following = db.relationship('User', secondary=followers, primaryjoin=(followers.c.follower_id == id),
                                secondaryjoin=(followers.c.followee_id == id),backref=db.backref('followers', lazy='dynamic'),
                                lazy='dynamic')
    my_followers = db.relationship('User', secondary=followers, primaryjoin=(followers.c.followee_id == id),
                                secondaryjoin=(followers.c.follower_id == id),
                                backref=db.backref('followees', lazy='dynamic'), lazy='dynamic')


Пример #11
0
from datetime import datetime
from flask_security import RoleMixin, UserMixin

from create_app import db

roles_users = db.Table(
    'roles_user', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))


class Role(db.Model, RoleMixin):

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(250))


class User(db.Model, UserMixin):
    """The user model database"""
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255))
    username = db.Column(db.String(255), unique=True)
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    active = db.Column(db.Boolean())
    confirmed_at = db.Column(db.DateTime(), default=datetime.utcnow)
    roles = db.relationship("Role",
                            secondary=roles_users,
                            backref=db.backref('users', lazy='dynamic'))
    replies = db.relationship("Reply", backref="user", lazy="dynamic")
Пример #12
0
class Tweets(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    tweet = db.Column(db.String(140))
    live = db.Column(db.Boolean)
    date_created = db.Column(db.DateTime)
Пример #13
0
class Order(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    product_id = db.Column(db.Integer, db.ForeignKey('product.id'))
    quantity = db.Column(db.Integer)
    total_order = db.Column(Float)