Пример #1
0
class Student(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    s_name = db.Column(db.String(20))
    s_score = db.Column(db.Integer)
    s_age = db.Column(db.Integer)
    # 声明关系 【对应的班级】
    s_grade = db.Column(db.Integer, db.ForeignKey(Grade.id))
Пример #2
0
class MeetingAttendance(db.Model, DictMixin):

    __tablename__ = 'meeting_attendance'

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    meeting_id = db.Column(db.Integer, db.ForeignKey('meeting.id'))
Пример #3
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)
Пример #4
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')
Пример #5
0
class CinemaUser(BaseModel):
    username = db.Column(db.String(32), unique=True)
    _password = db.Column(db.String(256))
    phone = db.Column(db.String(32), unique=True)
    is_delete = db.Column(db.Boolean, default=False)
    is_verify = db.Column(db.Boolean, default=False)

    @property
    def password(self):
        raise Exception("can't access")

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

    def check_password(self, password_value):
        return check_password_hash(self._password, password_value)

    def check_permission(self, permission):

        if not self.is_verify:
            return False

        permissions = CinemaUserPermission.query.filter_by(c_user_id=self.id)
        for user_permission in permissions:
            if permission == Permissions.query.get(
                    user_permission.c_permission_id).p_name:
                return True
        return False
Пример #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')
Пример #7
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)
Пример #8
0
class Hall(db.Model):
    hid = db.Column(db.Integer, primary_key=True)
    # 设置外键 向关联影院
    mid = db.Column(db.Integer, db.ForeignKey('cinemas.mid'))
    name = db.Column(db.String(64), index=True, unique=True, nullable=False)
    seats = db.Column(db.Integer, default=0)  # 座位数
    is_delete = db.Column(db.Boolean, default=False)
Пример #9
0
class ManagerFund(DictMixin, db.Model):

    __tablename__ = 'manager_fund'

    id = db.Column(db.Integer, primary_key=True)
    manager_id = db.Column(db.Integer)
    fund_id = db.Column(db.Integer)
Пример #10
0
class Link(Base):
    """
    友情链接表
    """
    __tablename__ = "links"

    site_name = db.Column(db.String(20), nullable=False, comment="网站名称", unique=True)
    site_url = db.Column(db.String(100), default="", comment="网址")
    label = db.Column(db.String(255), default="", comment="网站说明")
    logo = db.Column(db.String(100), default="", comment="网站logo")
    site_admin = db.Column(db.String(20), default="", comment="网站管理员")
    site_admin_email = db.Column(db.String(100), default="", comment="网站管理员邮箱")
    site_admin_qq = db.Column(db.String(20), default="", comment="网站管理员QQ")
    site_admin_phone = db.Column(db.String(20), default="", comment="网站管理员电话")
    home_show = db.Column(db.Boolean(), default=0, comment="首页显示")
    level = db.Column(db.Integer(), default=0, comment="排序")

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(or_(cls.site_name.like(keyword), cls.site_admin.like(keyword),
                                    cls.site_admin_email.like(keyword), cls.site_admin_qq.like(keyword),
                                    cls.site_admin_phone.like(keyword), cls.label.like(keyword), ))
        return query
Пример #11
0
class Column(Base):
    """
    栏目表
    """
    __tablename__ = "columns"

    title = db.Column(db.String(20),
                      nullable=False,
                      comment="栏目名称",
                      unique=True)
    keyword = db.Column(db.String(255), default="", comment="META关键字")
    description = db.Column(db.String(255), default="", comment="META描述")
    column_type = db.Column(db.String(20), default="", comment="栏目类型")
    thumb_image = db.Column(db.String(100), default="", comment="栏目缩略图")
    label = db.Column(db.String(255), default="", comment="栏目说明")
    external_link = db.Column(db.String(100), default="", comment="外部链接")
    level = db.Column(db.Integer(), default=0, comment="排序")
    pid = db.Column(db.Integer(), default=0, comment="父级节点id")
    target = db.Column(db.Boolean(), default=0, comment="新窗口打开")

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(
                or_(
                    cls.title.like(keyword),
                    cls.keyword.like(keyword),
                    cls.description.like(keyword),
                    cls.label.like(keyword),
                ))
        return query
Пример #12
0
class Task(db.Model):  # pylint: disable=too-few-public-methods
    """Task models"""
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    userId = db.Column(db.String(256), nullable=False)
    taskListId = db.Column(db.Integer)
    name = db.Column(db.String(256), nullable=False)
    status = db.Column(db.Integer)  # null = incomplete (0, 1)

    def toDict(self):
        """Transfer the model to dictionary"""
        task = {
            "id": self.id,
            "userId": self.userId,
            "taskListId": self.taskListId,
            "name": self.name,
            "status": self.status
        }
        return task

    def update(self, data):
        """Update tasks"""
        for key, value in data.items():
            if key == "userId":
                self.userId = value
            elif key == "taskListId":
                self.taskListId = value
            elif key == "name":
                self.name = value
            elif key == "status":
                self.status = value
Пример #13
0
class TaskToTimer(db.Model):  # pylint: disable=too-few-public-methods
    """This model manages relations between tasks and timers"""
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    taskId = db.Column(db.Integer, nullable=False)
    timerId = db.Column(db.Integer, nullable=False)
    userId = db.Column(db.String(256), nullable=False)

    def update(self, data):
        """this function is for the server to update the relation class"""
        for key, value in data.items():
            if key == "timerId":
                self.timerId = value
            elif key == "taskId":
                self.taskId = value
            elif key == "id":
                self.id = value

    def toDict(self):
        """Change the object to dictionary"""
        taskToTimer = {
            "id": self.id,
            "taskId": self.taskId,
            "timerId": self.timerId,
            "userId": self.userId
        }
        return taskToTimer
Пример #14
0
class EntitySet(db.Model):
    __tablename__ = 'entity_set'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))
    group_id = db.Column(db.Integer, db.ForeignKey('group.id'))
    date_key = db.Column(db.Date)
Пример #15
0
class Collection(db.Model):
    __tablename__ = 'collection'

    id = db.Column(db.Integer, primary_key=True,autoincrement=True)
    name = db.Column(db.String(32), unique=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    # sql orm框架在映射创建User对象的时候并不会执行init初始化方法
    @orm.reconstructor
    def __init__(self):
        self.fields = ['id', 'name']

    def keys(self):
        return self.fields

    # 用于隐藏某些key
    def hide(self, *field):
        for key in field:
            self.fields.remove(key)
        return self

    # 用于添加某些key
    def append(self, *field):
        for key in field:
            self.fields.append(key)
        return self

    def __getitem__(self, item):
        return getattr(self, item)

    # repr()方法显示一个可读字符串
    def __repr__(self):
        return '<collection: %s %s>' % (self.name, self.id)
Пример #16
0
class StructureMetricValue(db.Model):
    __tablename__ = 'structure_metric_value'

    id = db.Column(db.Integer, primary_key=True)
    structure_id = db.Column(db.Integer, db.ForeignKey('structure.id'))
    metric_id = db.Column(db.Integer, db.ForeignKey('metric.id'))
    value = db.Column(db.Float)
    date_key = db.Column(db.Date)
Пример #17
0
class User(db.Model, UserMixin):
    uid = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64),
                         index=True,
                         unique=True,
                         nullable=False)
    password = db.Column(db.String(64), nullable=False)
    email = db.Column(db.String(100), nullable=False)
Пример #18
0
class EntityMetricValue(db.Model):
    __tablename__ = 'entity_metric_value'

    id = db.Column(db.Integer, primary_key=True)
    entity_id = db.Column(db.Integer, db.ForeignKey('entity.id'))
    metric_id = db.Column(db.Integer, db.ForeignKey('metric.id'))
    value = db.Column(db.Float)
    date_key = db.Column(db.Date)
Пример #19
0
class UserEntity(DictMixin, db.Model):
    __tablename__ = 'user_entity'

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer)
    entity_id = db.Column(db.Integer)
    set_id = db.Column(db.Integer)
    created_time = db.Column(db.DateTime, default=datetime.datetime.utcnow())
Пример #20
0
class Bookmark(DictMixin, db.Model):
    __tablename__ = 'bookmark'

    id = db.Column(db.Integer, primary_key=True)
    type = db.Column(db.Integer)
    bookmark_entity_id = db.Column(db.Integer)
    state = db.Column(db.Integer, default=1)  # 1 in use  ; 0 deleted
    created_time = db.Column(db.DateTime, default=datetime.datetime.utcnow())
Пример #21
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
Пример #22
0
class ChartComment(DictMixin, db.Model):
    __tablename__ = 'chart_comment'

    id = db.Column(db.Integer, primary_key=True)
    chart_id = db.Column(db.String(255))
    user_id = db.Column(db.Integer)
    comment = db.Column(db.String(255))
    create_time = db.Column(db.DateTime, default=datetime.datetime.utcnow())
Пример #23
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)
Пример #24
0
class Permission(db.Model):
    per_id = db.Column(db.Integer, primary_key=True)
    per_name = db.Column(db.String(64), nullable=False, index=True, unique=True)
    desc = db.Column(db.Text)

    def __init__(self, per_name, desc):
        self.per_name = per_name
        self.desc = desc
Пример #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
Пример #26
0
class Hall(db.Model):
    hid = db.Column(db.Integer, primary_key=True)
    #影院的外键
    cid = db.Column(db.Integer, db.ForeignKey('cinemas.cid'))
    # 厅名
    name = db.Column(db.String(64), index=True, nullable=False, unique=True)
    # 座位
    seats = db.Column(db.String(256), default=0)
    is_delete = db.Column(db.Boolean, default=False)
Пример #27
0
class UserGoods(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    u_goods = db.Column(
        db.Integer,
        db.ForeignKey(Goods.id, ondelete="CASCADE", onupdate="CASCADE"))
    u_user = db.Column(
        db.Integer,
        db.ForeignKey(User.id, ondelete="CASCADE", onupdate="CASCADE"))
    num = db.Column(db.Integer)
Пример #28
0
class ServiceDetail(db.Model):

    __tablename__ = 'service_detail'

    id = db.Column(db.Integer, primary_key=True)
    ss = db.Column(db.Boolean, default=True)
    third_party = db.Column(db.Boolean, default=True)
    revenue_strategy_id = db.Column(db.Integer,
                                    db.ForeignKey('revenue_strategy.id'))
Пример #29
0
class Student(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(40))
    score = db.Column(db.Integer)

    # 添加关系
    # 但是后续使用的时候,也可以获取关联的对象!!!
    # student.grade.name
    grade_id = db.Column(db.Integer, db.ForeignKey(Grade.id))
Пример #30
0
class Userlog(db.Model):
    __tablename__ = "userlog"
    id = db.Column(db.Integer, primary_key=True)  #编号
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))  #外键关联会员表
    ip = db.Column(db.String(100))
    add_time = db.Column(db.DateTime, index=True, default=datetime.now)

    def __repr__(self):
        return "<Model Userlog {}>".format(self.id)