Beispiel #1
0
class UserAlarmRecord(db.Model):
    __tablename__ = 'user_alarm_record'

    id = db.Column(db.String(24), default=objectid, primary_key=True)
    type = db.Column(db.Integer,
                     default=0,
                     comment='参考创建信息类型 (0,119 1,疏散,2,传感器,3,求救)')
    content = db.Column(db.String(255), comment='报警内容')
    if_confirm = db.Column(db.Boolean, default=False, comment='是否关闭')
    home_id = db.Column(db.String(24),
                        db.ForeignKey('home.id'),
                        comment='报警关联家庭id')
    home = db.relationship('Home')
    ins_id = db.Column(db.String(24), db.ForeignKey('ins.id'), comment='机构id')
    reference_alarm_id = db.Column(db.String(24), comment='参考创建信息id')
    user_id = db.Column(db.String(24),
                        db.ForeignKey('user.id'),
                        comment='发布人id')
    user = db.relationship('User')
    note = db.Column(db.String(255), comment='备注')
    origin = db.Column(db.String(255), comment='创建来源')
    mark = db.Column(db.String(255), comment='来源备注')
    time = db.Column(db.DateTime,
                     default=datetime.datetime.now(),
                     comment='创建时间')
Beispiel #2
0
class Admin(db.Model):
    __tablename__ = "admin"
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 管理员账号
    pwd = db.Column(db.String(100))  # 管理员密码
    is_super = db.Column(db.SmallInteger)  # 是否为超级管理员,0为超级管理员
    role_id = db.Column(db.Integer, db.ForeignKey('role.id'))  # 所属角色
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
    adminlogs = db.relationship("Adminlog", backref='admin')  # 管理员登录日志外键关系关联
    oplogs = db.relationship("Oplog", backref='admin')  # 管理员操作日志外键关系关联

    def __repr__(self):
        return "<Admin %r>" % self.name

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

    # 使用user.password='******'设置时存入生成的散列密码
    @password.setter
    def password(self, new_password):
        self.pwd = generate_password_hash(new_password)

    def check_pwd(self, try_password):
        return check_password_hash(self.pwd, try_password)
Beispiel #3
0
class BankCard(db.Model):
    __tablename__ = "bankcard"

    def __init__(self, name, card, user_id):
        self.name = name
        self.card = card
        self.user_id = user_id

    @classmethod
    def card_exist(cls, card, cardid=None):
        """验证卡号是否存在"""
        if cardid is None:
            return BankCard.query.filter_by(card=card).first()
        else:
            return BankCard.query.filter(BankCard.id != cardid,
                                         BankCard.card == card).first()

    @classmethod
    def id_exist(cls, id):
        """验证ID是否存在"""
        return BankCard.query.filter_by(id=id).first()

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32))  #开户行
    card = db.Column(db.String(25), unique=True)  #银行卡号
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
    billflows = db.relationship('BillFlow', backref='bankcard')
    userp2ps = db.relationship('UserP2P', backref='bankcard')
Beispiel #4
0
class Ins(db.Model):
    __tablename__ = 'ins'
    id = db.Column(db.String(24), default=objectid, primary_key=True)
    type = db.Column(db.String(255), comment='机构类型')
    name = db.Column(db.String(50), comment='机构名称')
    ins_picture = db.Column(db.String(255), comment='机构图片')
    location_id = db.Column(db.String(50),
                            db.ForeignKey('location.id'),
                            comment='位置')
    ins_address = db.Column(db.String(255), comment='机构地址')
    note = db.Column(db.Text, comment='备注')
    latitude = db.Column(db.Float(asdecimal=True), comment='纬度')
    longitude = db.Column(db.Float(asdecimal=True), comment='经度')
    admin_user_id = db.Column(db.String(24),
                              db.ForeignKey('user.id'),
                              comment='管理员id')
    community = db.relationship('Community',
                                secondary=t_community_ins,
                                backref=db.backref('f1_community',
                                                   lazy='dynamic'),
                                lazy='dynamic')
    user = db.relationship('User',
                           secondary=t_user_ins,
                           backref=db.backref('f_user', lazy='dynamic'),
                           lazy='dynamic')
    disabled = db.Column(db.Boolean,
                         nullable=False,
                         default=False,
                         comment='是否可用')
Beispiel #5
0
class Admin(db.Model):
    '''
    管理员表
    '''
    __tablename__ = 'admin'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), unique=True)  # 昵称
    pwd = db.Column(db.String(100))
    is_super = db.Column(db.SmallInteger)  #是否为超级管理员
    role_id = db.Column(db.Integer, db.ForeignKey('role.id'))  #所属角色
    add_time = db.Column(db.DateTime, index=True, default=datetime.now)
    adminlogs = db.relationship('Adminlog', backref='admin')
    oplogs = db.relationship('Oplog', backref='admin')

    def __repr__(self):
        return "<Model Admin {}>".format(self.name)

    @staticmethod
    def insert_init_admin():
        from werkzeug.security import generate_password_hash
        admin = Admin(name='admin',
                      pwd=generate_password_hash('admin'),
                      is_super=0,
                      role_id=1)
        db.session.add(admin)
        db.session.commit()
Beispiel #6
0
class Cate(db.Model):
    cid = db.Column(db.Integer, primary_key=True)
    cname = db.Column(db.String(64), index=True, unique=True, nullable=True)
    # 建立关联关系的对象 懒加载
    """
    参数一 argument 关联的对象的类名
    参数二  lazy  不能用于多对一 或者一对一上
            可选项:
            1> select 默认值 一条sql一句把所有的相关的数据全部查出来
            2> dynamic 只查询主表的数据,生成查询子表的sql 当我们需要使用子表的数据的时候在去查询
            3> immediate  等主表数据查询完成之后再去查询子表数据

    back_populates  方向引用(当两个对象需要双向引用的时候使用)
                    值对应双向引用对象的字段
    # backref  backref='cate' 例如可以使用 shop.cate
    uselist=None, 如果想建立一对一的关系 直接在 uselist=false
    order_by=False,指定查询子表的排序字段
    """
    # 解决开发中有些时候查询主表相关联的子表的数据过大时
    # 默认是 select 立即加载
    # dynamic 懒加载  只会加载主表的数据,不会把子表的数据也加载进内存(只会生成sql语句,
    # 当我们需要用到数据的时候,去执行查询吧数据加载进内存)
    shops = db.relationship('Shop', back_populates='cate', order_by=Shop.sid, lazy='dynamic')
    # 只能用于一对多 还多对多  能通过一的一方的查询吧多的一方也查询出来
    shops = db.relationship('Shop', back_populates='cate', lazy='dynamic')
Beispiel #7
0
class User(db.Model):

    __tablename__ = 'user'
    id = db.Column(db.String(24), default=objectid, primary_key=True)
    disabled = db.Column(db.Boolean,
                         nullable=False,
                         default=False,
                         comment='是否停用   (1、禁用 0、正常)')
    contract_tel = db.Column(db.String(20), comment='用户电话')
    username = db.Column(db.String(20), index=True, comment='用户名)')
    password = db.Column(db.String(32), comment='密码')
    email = db.Column(db.String(60), comment='email')
    #salt = db.Column(db.String(50), comment='加密盐')
    createTime = db.Column(db.DateTime,
                           default=datetime.datetime.now,
                           comment='创建时间')
    #lastTime = db.Column(db.DateTime, comment='最后登陆时间')
    user_role = db.relationship('UserRole',
                                foreign_keys=[UserRole.user_id],
                                backref=db.backref('f_user_role',
                                                   lazy='joined'),
                                lazy='dynamic')
    #real_name = db.Column(db.String(50), comment='姓名')
    sensor_visable = db.Column(db.Boolean, default=True, comment='传感器是否可见')
    ins = db.relationship('Ins',
                          secondary=t_user_ins,
                          backref=db.backref('f_ins', lazy='dynamic'),
                          lazy='dynamic')
Beispiel #8
0
class User(db.Model):
    __tablename__ = "user"
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 昵称
    pwd = db.Column(db.String(100))  # 密码,使用哈希密码
    email = db.Column(db.String(100), unique=True)  # 邮箱
    phone = db.Column(db.String(11), unique=True)  # 手机号码
    info = db.Column(db.Text)  # 个性简介
    face = db.Column(db.String(255), unique=True)  # 头像
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 注册时间
    uuid = db.Column(db.String(255), unique=True)  # 唯一标志符
    userlogs = db.relationship('Userlog', backref='user')  # 会员日志外键关系关联
    comments = db.relationship('Comment', backref='user')  # 评论外键关系关联
    moviecols = db.relationship('Moviecol', backref='user')  # 收藏外键关系关联

    def __repr__(self):
        return "<User %r>" % self.name

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

    # 使用user.password='******'设置时存入生成的散列密码
    @password.setter
    def password(self, new_password):
        self.pwd = generate_password_hash(new_password)

    def check_pwd(self, try_password):
        return check_password_hash(self.pwd, try_password)
Beispiel #9
0
class Comment(Base):
    __tablename__ = 'comments'
    id = Column(Integer, primary_key=True)
    content = Column(Text)
    created = Column(DateTime, default=datetime.now)
    commenter_name = Column(String(64))
    commenter_email = Column(String(64))
    # 头像相关
    avatar_hash = Column(String(32))

    article_id = Column(Integer, ForeignKey('articles.id'))
    disabled = Column(Boolean, default=False)
    comment_type = Column(db.String(64), default='comment')
    reply_to = Column(String(128), default='notReply')

    followed = db.relationship('Follow',
                               foreign_keys=[Follow.follower_id],
                               backref=db.backref('follower', lazy='joined'),
                               lazy='dynamic',
                               cascade='all, delete-orphan')
    followers = db.relationship('Follow',
                                foreign_keys=[Follow.followed_id],
                                backref=db.backref('followed', lazy='joined'),
                                lazy='dynamic',
                                cascade='all, delete-orphan')

    @property
    def replys(self):
        return [i.follower for i in self.followers]

    # 根据email 生成图像
    def __init__(self, **kwargs):
        super(Comment, self).__init__(**kwargs)
        if self.commenter_email is not None and self.avatar_hash is None:
            self.avatar_hash = hashlib.md5(
                self.commenter_email.encode('utf-8')).hexdigest()

    def gravatar(self, size=40, default='identicon', rating='g'):
        if request.is_secure:
            url = 'https://secure.gravatar.com/avatar'
        else:
            url = 'http://www.gravatar.com/avatar'
        hash = self.avatar_hash or hashlib.md5(
            self.commenter_email.encode('utf-8')).hexdigest()
        return '{url}/{hash}?s={size}&d={default}&r={rating}'.format(
            url=url, hash=hash, size=size, default=default, rating=rating)

    def followed_name(self):
        if self.is_reply():
            return self.followed.first().followed.commenter_name

    def __repr__(self):
        return '<Comment %r>' % self.id

    def __str__(self):
        return self.id
Beispiel #10
0
class Shop(db.Model):
    sid = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True, unique=True, nullable=True)
    #     建立外键关联字段 可以使用表名.字段  也可以使用类名.属性
    # cid = db.Column(db.Integer, db.ForeignKey(Cate.cid))
    # 只是单纯建立外键关系
    cid = db.Column(db.Integer, db.ForeignKey('cate.cid'))
    # 如果想建立关系 也就是说想通过子表查询出
    cate = db.relationship('Cate', back_populates='shops')
    detail = db.relationship('Detail', backref='shop', uselist=False)
Beispiel #11
0
class FacilityIns(db.Model):

    __tablename__ = 'facility_ins'
    id = db.Column(db.String(24), default=objectid, primary_key=True)
    facility_id = db.Column(db.String(24),
                            db.ForeignKey('facility.id'),
                            comment='设施id')
    facility = db.relationship('Facility')
    ins_id = db.Column(db.String(24), db.ForeignKey('ins.id'), comment='机构id')
    ins = db.relationship('Ins')
    note = db.Column(db.String(200), comment='备注')
    count = db.Column(db.Integer, comment='设施数量')
    expire_time = db.Column(db.DateTime, comment='过期时间')
Beispiel #12
0
class UserRole(db.Model):
    __tablename__ = 'user_role'

    id = db.Column(db.String(24), default=objectid, primary_key=True)
    user_id = db.Column(db.String(24), db.ForeignKey('user.id'), index=True)
    role_id = db.Column(db.String(24), db.ForeignKey('role.id'), index=True)
    disable = db.Column(db.Boolean, nullable=False, default=False)
    role = db.relationship('Role',
                           backref=db.backref('f1_role', lazy='dynamic'),
                           lazy='joined')
    user = db.relationship('User',
                           backref=db.backref('f1_user', lazy='dynamic'),
                           lazy='joined')
Beispiel #13
0
class Category(Base):
    __tablename__ = 'categories'
    id = Column(Integer, primary_key=True)
    order = Column(Integer)
    name = Column(String(128), unique=True)
    parent_id = Column(Integer(), ForeignKey('categories.id'))
    # parent = db.relationship('Category',
    #                          primaryjoin='Category.parent_id == Category.id',
    #                          remote_side=id, backref=db.backref("children"))
    introduction = Column(Text, default=None)
    articles = db.relationship('Article', backref='category', lazy='dynamic')

    # 设置默认排序使用
    __mapper_args__ = {'order_by': [name]}
    # 用于在主页面点击类别 定位到那个类别

    @property
    def link(self):
        return url_for('web.category', id=self.id, _external=True)

    @property
    def count(self):
        ls = db.session.query(Category.id).all()
        cate_ids = [cate_id for cate_id in ls]
        return Article.query.public().filter(
            Article.category_id.in_(cate_ids)).count()

    def __repr__(self):
        return '<Category %r>' % self.name

    def __str__(self):
        return self.name
Beispiel #14
0
class User(db.Model, UserMixin):
    __tablename__ = 'users'

    id = db.Column(db.Integer(), autoincrement=True, primary_key=True)
    name = db.Column(db.String(64))
    login = db.Column(db.String(64), unique=True)
    password = db.Column(db.String(255))

    is_active = db.Column(db.Boolean(), server_default=expression.text('True'), nullable=False)  # 这里使用 expression.true() 似乎不起作用

    roles = db.relationship(
        'Role',
        secondary=users_roles,
        backref=db.backref('users', lazy='dynamic')
    )

    def set_password(self, password):
        return pbkdf2_sha256.hash(password)

    def check_password(self, password):
        return pbkdf2_sha256.verify(password, self.password)

    def is_authenticated(self):
        return not isinstance(self, AnonymousUserMixin)

    def is_anonymous(self):
        return isinstance(self, AnonymousUserMixin)

    def get_id(self):
        return self.id

    def __repr__(self):
        return '<Model User {}>'.format(self.name)
Beispiel #15
0
class SensorAlarm(db.Model):
    __tablename__ = 'sensor_alarm'

    id = db.Column(db.String(24),
                   default=objectid,
                   primary_key=True,
                   comment='')
    sensor_id = db.Column(db.String(24),
                          db.ForeignKey('sensor.id'),
                          comment='网关id')
    sensor = db.relationship('Sensor')
    gateway_id = db.Column(db.String(24),
                           db.ForeignKey('gateway.id'),
                           comment='关联网关id')
    note = db.Column(db.String(255), comment='报警内容')
    sensor_type = db.Column(db.Integer,
                            comment='传感器类型   (0.烟雾 1.温度 2.燃气 3.电流,4)')
    var_type = db.Column(db.String(24), comment='变量类型')
    unit = db.Column(db.String(24), comment='变量单位')
    alarm_value = db.Column(db.String(24), comment='报警数值')
    alarm_time = db.Column(db.DateTime,
                           default=datetime.datetime.now(),
                           comment='报警时间')
    #confirm_time = db.Column(db.DateTime, comment='确认时间')
    is_timeout = db.Column(db.Boolean, default=False, comment='是否超时')
    # user_id = db.Column(db.String(24), db.ForeignKey('user.id'), comment='确认人id')
    # user = db.relationship('User')
    is_confirm = db.Column(db.Boolean, default=False, comment='是否确认')
class Stream(db.Model):
    id = db.Column(db.Integer, auto_increment=True, primary_key=True)
    name = db.Column(db.String(255), nullable=False)
    stream_url = db.Column(db.String(255), nullable=True)
    stream_type = db.Column(db.String(255), nullable=False)
    stream_file = db.Column(db.LargeBinary, nullable=True)
    plates = db.relationship("Plate", backref="stream", lazy='dynamic')

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False, index=True)

    def __init__(self, name, stream_url, stream_type, stream_file, user_id):
        self.name = name
        self.stream_url = stream_url
        self.stream_type = stream_type
        self.stream_file = stream_file
        self.user_id = user_id
    
    def get_decoded_file(self):
        return cv2.imdecode(np.frombuffer(self.stream_file, np.uint8), -1)

    def to_json(self):
        # decoded_file = self.stream_file.decode("utf-8", "ignore") if self.stream_file != None else self.stream_file
        return {"id": self.id, "name": self.name, "stream_url": self.stream_url, "stream_type": self.stream_type, "owner": self.user_id}

    def __repr__(self):
        return '<Stream %r>' % self.id
Beispiel #17
0
class Home(db.Model):
    __tablename__ = 'home'

    id = db.Column(db.String(24), default=objectid, primary_key=True)
    name = db.Column(db.String(255), comment='家庭名称')
    community_id = db.Column(db.String(24),
                             db.ForeignKey('community.id'),
                             comment='社区id')
    community = db.relationship('Community')
    admin_user_id = db.Column(db.String(24),
                              db.ForeignKey('user.id'),
                              comment='创建者id')
    detail_address = db.Column(db.String(255), comment='家庭地址')
    link_name = db.Column(db.String(50), comment='主人姓名')
    telephone = db.Column(db.String(50), comment='电话号码')
    longitude = db.Column(db.Float(asdecimal=True), comment='经度')
    latitude = db.Column(db.Float(asdecimal=True), comment='纬度')
    alternate_phone = db.Column(db.String(50), comment='备用电话')
    gateway_id = db.Column(db.String(50),
                           db.ForeignKey('gateway.id'),
                           comment='网关id')
    disabled = db.Column(db.Boolean,
                         nullable=False,
                         default=False,
                         comment='是否可用')
Beispiel #18
0
class Note(Base):
    """
   公告表
    """
    __tablename__ = "notes"

    content = db.Column(db.String(255), nullable=False, comment="公告内容")
    level = db.Column(db.Integer(), default=0, comment="排序")
    start_date = db.Column(db.Date(), default="", comment="起始时间")
    end_date = db.Column(db.Date(), default="", comment="结束时间")

    admin_id = db.Column(db.Integer(), db.ForeignKey('admins.id'))

    admin = db.relationship('Admin', backref=db.backref('notes', lazy="dynamic"))

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(or_(cls.content.like(keyword), ))
        return query

    def create(self, data):
        with db.auto_commit():
            self.set_attrs(data)
            self.active = 1
            self.admin = current_user
            self.created_at = time_now()
            self.updated_at = time_now()
            db.session.add(self)
Beispiel #19
0
class Sensor(db.Model):
    __tablename__ = 'sensor'

    id = db.Column(db.String(24), default=objectid, primary_key=True)
    gateway_id = db.Column(db.String(24),
                           db.ForeignKey('gateway.id'),
                           comment='网关id')
    gateway = db.relationship('Gateway')
    set_type = db.Column(db.String(24),
                         default='0',
                         comment='0:不设定,1:自设定,2:智能设定')
    online = db.Column(db.Boolean, comment='是否在线')
    sensor_place = db.Column(db.String(255), comment='位置')
    sensor_type = db.Column(db.Integer,
                            comment='传感器类型   (0.烟雾,1.温度 2.燃气 3.智能插座,4.电磁阀)')
    max_value = db.Column(db.Float, comment='阈值')
    alarms_history = db.relationship('SensorAlarm', lazy='dynamic')
Beispiel #20
0
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    users = db.relationship('User', backref='role')  #反向引用查询管联,一对一时 uselist=False

    def __repr__(self):
        return '<Role %r>' % self.name
Beispiel #21
0
class P2P(db.Model):
    __tablename__ = "p2p"

    def __init__(self, name, url, funds_deposit, risk_deposit):
        self.name = name
        self.url = url
        self.funds_deposit = funds_deposit
        self.risk_deposit = risk_deposit

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), unique=True)  #平台名称
    url = db.Column(db.String(255), unique=True)  #平台URL
    funds_deposit = db.Column(db.Boolean, default=False)  #资金存管
    risk_deposit = db.Column(db.Boolean, default=False)  #风险金存管
    invests = db.relationship('Invest', backref="p2p")  #投资记录外键关联关系
    userp2ps = db.relationship('UserP2P', backref="p2p")  #用户平台外键关联关系
    billflows = db.relationship("BillFlow", backref="p2p")  #资金流水外键关联关系
Beispiel #22
0
class Grade(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(40))

    # 对应的学生(不会生成字段,只是为了声明)
    # db.relationship('关系模型类', backref='当前模型表名')
    # db.relationship('关系模型类', backref='当前模型表名', lazy=True)
    students = db.relationship('Student', backref='grade', lazy=True)
Beispiel #23
0
class Admin(db.Model):
    __tablename__ = "admin"
    __table_args__ = {"useexisting": True}
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 管理员账号
    pwd = db.Column(db.String(100))  # 管理员密码
    is_super = db.Column(db.SmallInteger)  # 是否为超级管理员,0为超级管理员
    role_id = db.Column(db.Integer, db.ForeignKey('role.id'))  # 所属角色
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
    adminlogs = db.relationship("Adminlog", backref='admin')  # 管理员登录日志外键关系关联
    oplogs = db.relationship("Oplog", backref='admin')  # 管理员操作日志外键关系关联

    def __repr__(self):
        return "<Admin %r>" % self.name

    def check_pwd(self, pwd):
        from werkzeug.security import check_password_hash
        return check_password_hash(self.pwd, pwd)
Beispiel #24
0
class Tag(db.Model):
    __tablename__ = "tag"
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 标题
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
    movies = db.relationship("Movie", backref='tag')  # 电影外键关系关联

    def __repr__(self):
        return "<Tag %r>" % self.name
Beispiel #25
0
class Role(db.Model):
    role_id = db.Column(db.Integer, primary_key=True)
    role_name = db.Column(db.String(64), nullable=False, index=True, unique=True)
    desc = db.Column(db.Text)
    permissions = db.relationship('Permission', secondary=relation)

    def __init__(self, role_name, desc):
        self.role_name = role_name
        self.desc = desc
Beispiel #26
0
class Role(db.Model):
    __tablename__ = "role"
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 名称
    auths = db.Column(db.String(600))  # 角色权限列表
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
    admins = db.relationship("Admin", backref='role')  # 管理员外键关系关联

    def __repr__(self):
        return "<Role %r>" % self.name
Beispiel #27
0
class Role(db.Model):
    __tablename__ = 'role'

    id = db.Column(db.String(24), default=objectid, primary_key=True)
    name = db.Column(db.String(30), nullable=False)
    disabled = db.Column(db.Boolean,
                         nullable=False,
                         default=True,
                         comment='是否可用')
    description = db.Column(db.String(60), comment='权限描述')
    user_role = db.relationship('UserRole',
                                foreign_keys=[UserRole.role_id],
                                backref=db.backref('F_user_role',
                                                   lazy='joined'),
                                lazy='dynamic')
    menus = db.relationship('Menu',
                            secondary=t_role_menu,
                            backref=db.backref('role_menus', lazy='dynamic'),
                            lazy='dynamic')
Beispiel #28
0
class Menu(db.Model):
    __tablename__ = 'menu'

    id = db.Column(db.String(24), default=objectid, primary_key=True)
    p_id = db.Column(db.String(24), db.ForeignKey('menu.id'), comment='父id')
    children = db.relationship("Menu")
    parent = db.relationship("Menu", remote_side=[id])
    label = db.Column(db.String(20), nullable=False, comment='标签')
    level = db.Column(db.SmallInteger, comment='层级')
    type = db.Column(db.SmallInteger, comment='类型')
    style = db.Column(db.String(50), comment='样式')
    disabled = db.Column(db.Boolean, default=False, comment='是否可用')
    roles = db.relationship('Role',
                            secondary=t_role_menu,
                            backref=db.backref('menu_roles', lazy='dynamic'),
                            lazy='dynamic')
    path = db.Column(db.String(200), comment='和url什么区别???')
    order = db.Column(db.SmallInteger, comment='?????')
    url = db.Column(db.String(200), comment='和path什么区别???')
Beispiel #29
0
class Shop(db.Model):
    shop_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(512), index=True)
    sub_title = db.Column(db.String(512), index=True)
    original_price = db.Column(db.Integer)
    promote_price = db.Column(db.Integer)
    stock = db.Column(db.Integer)
    cate_id = db.Column(db.Integer, db.ForeignKey('cate.cid'))
    create_date = db.Column(db.DateTime)
    cate = db.relationship('Cate', back_populates='shops')
Beispiel #30
0
class Role(Base):
    """
    角色表
    """
    __tablename__ = "roles"

    name = db.Column(db.String(length=20), nullable=False, comment="角色名", unique=True)
    label = db.Column(db.String(length=50), nullable=False, comment="角色介绍", unique=True)

    permissions = db.relationship('Permission', backref="roles", lazy="dynamic", secondary=role_permission)

    @staticmethod
    def get_menu_for_role():
        return Menu.query.filter_by().filter(Menu.active == 1, Menu.pid > 0).order_by(Menu.level.asc()).all()

    def _get_permissions(self, ids):
        return Permission.query.filter_by().filter(Permission.id.in_(ids),
                                                   Permission.active == 1).all()

    def create(self, data):
        permission_ids = request.form.getlist('permissions[]')
        # 添加时把权限添加进去
        with db.auto_commit():
            self.set_attrs(data)
            self.active = 1
            self.created_at = time_now()
            self.updated_at = time_now()
            if permission_ids:
                self.permissions = self._get_permissions(permission_ids)
            db.session.add(self)

    def update(self, data, edit_one_field=None):
        """
        edit_one_field 是否表内单个编辑 标识
        :param data:
        :param flag:
        :return:
        """
        permission_ids = request.form.getlist('permissions[]')
        # 添加时把权限添加进去

        with db.auto_commit():
            if not edit_one_field:
                self.set_attrs(data)
                self.permissions = self._get_permissions(permission_ids)
            else:
                self.set_attr(data)

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(or_(cls.name.like(keyword), cls.label.like(keyword)))
        return query