示例#1
0
class Thread(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80))
    description = db.Column(db.String(255))
    created_by = db.Column(db.String(80))
    date_created = db.Column(db.DateTime(), default=datetime.utcnow)
    replies = db.relationship("Reply", backref='thread', lazy='dynamic')
示例#2
0
class Flink(db.Model):
    """友情链接表"""
    __tablename__ = 'flinks'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

    name = db.Column(db.String(20), nullable=False)
    url = db.Column(db.String(100), nullable=False)
示例#3
0
class Files(db.Model):
    """ 文件模型类
    """
    __tablename__ = 'files'
    uuid = db.Column(db.String(100), unique=True, nullable=False)
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    filename = db.Column(db.String(50), nullable=False)
    create_time = db.Column(db.DateTime, default=datetime.now)
    update_time = db.Column(db.DateTime)
    view_num = db.Column(db.Integer, default=0)
    content_length = db.Column(db.Integer)
    content_type = db.Column(db.String(50))
    yun_url = db.Column(db.String(200))
    _file_hash = db.Column(db.String(50), nullable=False, unique=True)
    _locked = db.Column(db.Boolean, default=False, nullable=False)

    @property
    def file_hash(self):
        return self._file_hash

    @file_hash.setter
    def file_hash(self, datas):
        self._file_hash = hash_data(datas)

    @classmethod
    def file_is_existed(cls, other_dates):
        other_dates_hash = hash_data(other_dates)
        return cls.by_hash(other_dates_hash)

    @classmethod
    def by_hash(cls, other_dates_hash):
        return cls.query.filter_by(_file_hash=other_dates_hash).first()

    @classmethod
    def all(cls):
        return cls.query.all()

    @classmethod
    def by_id(cls, files_id):
        return cls.query.filter_by(id=id).first()

    @classmethod
    def by_uuid(cls, uuid):
        return cls.query.filter_by(uuid=uuid).first()

    @classmethod
    def by_name(cls, name):
        return cls.query.filter_by(filename=name).first()

    @property
    def locked(self):
        return self._locked

    @locked.setter
    def locked(self, value):
        assert isinstance(value, bool)
        self._locked = value
示例#4
0
class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), unique=True)
    price = db.Column(db.Integer)
    stock = db.Column(db.Integer)
    description = db.Column(db.String(500))
    image = db.Column(db.String(100))
    type = db.Column(db.String(25))
    live = db.Column(db.Boolean)
    orders = db.relationship('Order', backref='product', lazy=True)
示例#5
0
class Permission(db.Model):
    """权限表"""
    __tablename__ = 'permission_permission'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(50), nullable=False)
    strcode = db.Column(db.String(50), nullable=False)

    roles = db.relationship("Role", secondary=PermissionToRole.__table__)

    menu = db.relationship("Menu", uselist=False)

    handler = db.relationship("Handler", uselist=False)
示例#6
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))
示例#7
0
class Tag(db.Model):
    """标签表"""
    __tablename__ = 'article_tag'
    id = db.Column(db.Integer, primary_key=True)
    uuid = db.Column(db.String(36), unique=True, default=lambda: str(uuid4()))
    name = db.Column(
        db.String(50),
        unique=True,
    )
    create_time = db.Column(db.DateTime, index=True, default=datetime.now)

    # 建立orm查询关系,标签表与文章表的多对多关系
    articles = db.relationship('Article', secondary=ArticleToTag.__table__)
示例#8
0
class Category(db.Model):
    """分类表"""
    __tablename__ = 'article_category'
    id = db.Column(db.Integer, primary_key=True)
    uuid = db.Column(db.String(36), unique=True, default=lambda: str(uuid4()))
    name = db.Column(
        db.String(50),
        unique=True,
    )
    create_time = db.Column(db.DateTime, index=True, default=datetime.now)

    # 建立orm查询关系,分类表与文章表的一对多关系
    articles = db.relationship('Article', backref='category')
示例#9
0
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")
示例#10
0
class User(db.Model):
    """用户表"""
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    uuid = db.Column(db.String(36),
                     unique=True,
                     nullable=False,
                     default=lambda: str(uuid4()))
    username = db.Column(db.String(50), nullable=False)
    email = db.Column(db.String(50))
    _password = db.Column('password', db.String(200))
    last_login_time = db.Column(db.DateTime)
    login_num = db.Column(db.Integer, default=0)
    create_time = db.Column(db.DateTime)
    avatar_hash = db.Column(db.String(32))

    articles = db.relationship('Article', backref='users')

    comments = db.relationship('Comment', backref='users')

    roles = db.relationship("Role", secondary=UserToRole.__table__)

    def _hash_password(self, password):
        return pbkdf2.crypt(password, iterations=0x2537)

    @property
    def password(self):
        return self._password

    @password.setter
    def password(self, password):
        self._password = self._hash_password(password)

    def auth_password(self, other_password):
        if self._password is not None:
            return self.password == pbkdf2.crypt(other_password, self.password)
        else:
            return False

    def gravatar_hash(self):
        return hashlib.md5(self.email.lower().encode('utf-8')).hexdigest()

    def gravatar(self, size=100, default='identicon', rating='g'):
        url = 'https://secure.gravatar.com/avatar'
        hash = self.avatar_hash or self.gravatar_hash()
        return '{url}/{hash}?s={size}&d={default}&r={rating}'.format(
            url=url, hash=hash, size=size, default=default, rating=rating)

    @classmethod
    def by_emial(cls, email):
        return cls.query.filter_by(email=email).first()
示例#11
0
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')
示例#12
0
class Record(db.Model):
    """记录表"""
    __tablename__ = 'records'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    ip = db.Column(db.String(20), nullable=False, unique=True)

    ips = db.relationship('Article', secondary=UserLikeArticle.__table__)
示例#13
0
class Role(db.Model):
    """角色表"""
    __tablename__ = 'permission_role'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(50), nullable=False)

    #角色表和用户表多对多查询关系
    users = db.relationship("User", secondary=UserToRole.__table__)

    #角色表和权限表多对多查询关系
    permissions = db.relationship("Permission",
                                  secondary=PermissionToRole.__table__)
示例#14
0
class Cars(db.Model):
    __tablename__ = "cars"
    car_id = db.Column(db.Integer, primary_key=True)
    model = db.Column(db.String(length=16), nullable=False)
    mileage = db.Column(db.Integer)
    manufacturer = db.Column(db.String(30), nullable=False)
    vin = db.Column(db.String(20), unique=True, nullable=False)
    gearbox = db.Column(db.String(10))
    price = db.Column(db.Integer, nullable=False)
    power = db.Column(db.Integer)
    volume = db.Column(db.Float(4))
    dealer_id = db.Column(db.Integer,
                          ForeignKey("dealers.dealer_id"),
                          nullable=False)
    relationship("Dealers", foreign_keys=[dealer_id])

    def __init__(self, model, mileage, manufacturer, vin, gearbox, price,
                 power, volume, dealer_id):
        self.model = model
        self.mileage = mileage
        self.manufacturer = manufacturer
        self.vin = vin
        self.gearbox = gearbox
        self.price = price
        self.power = power
        self.volume = volume
        self.dealer_id = dealer_id

    def __repr__(self):
        return f"{self.vin}"

    def save_to_db(self) -> None:
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self) -> None:
        db.session.delete(self)
        db.session.commit()
示例#15
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'))
示例#16
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()
示例#17
0
class Dealers(db.Model):
    __tablename__ = "dealers"
    dealer_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(length=40), nullable=False)
    ogrn = db.Column(db.String(18), unique=True, nullable=False)
    address = db.Column(db.String(50))
    segment = db.Column(db.String(10))
    telephone = db.Column(db.String(12))
    url = db.Column(db.String(32))
    loans = db.Column(db.Boolean)
    loan_broker = db.Column(db.String(40))
    used_cars = db.Column(db.Boolean)
    relationship("Cars")

    def __init__(self, name, ogrn, address, segment, telephone, url, loans,
                 loan_broker, used_cars):
        self.name = name
        self.ogrn = ogrn
        self.address = address
        self.segment = segment
        self.telephone = telephone
        self.url = url
        self.loans = loans
        self.loan_broker = loan_broker
        self.used_cars = used_cars

    def __repr__(self):
        return f"{self.name}"

    def save_to_db(self) -> None:
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self) -> None:
        db.session.delete(self)
        db.session.commit()
示例#18
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)
示例#19
0
class User(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(3))
    first_name = db.Column(db.String(25))
    surname = db.Column(db.String(25))
    address = db.Column(db.String(255))
    city = db.Column(db.String(100))
    phone_number = db.Column(db.Integer)
    state = db.Column(db.String(30))
    email = db.Column(db.String(50))
    country = db.Column(db.String(20))
    payment_type = db.Column(db.String(10))
    payment_status = db.Column(db.String(20))
    reference_num = db.Column(db.String(15))
    items = db.relationship("Order", backref="user", lazy=True)

    def __init__(self, reference_num=None):
        self.reference_num = reference_num
示例#20
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)
示例#21
0
class AdminLogin(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user = db.Column(db.String(5))
    password = db.Column(db.String(255))
示例#22
0
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))