示例#1
0
class House(BaseModel, db.Model):
    '''房屋信息'''
    __tablename__ = "ih_house_info"

    id = db.Column(db.Integer, primary_key=True)  #房屋编号
    user_id = db.Column(db.Integer,
                        db.ForeignKey("ih_user_profile.id"),
                        nullable=False)  #房屋主人的用户编号
    area_id = db.Column(db.Integer,
                        db.ForeignKey("ih_area_info.id"),
                        nullable=False)  #归属地的区域编号
    title = db.Column(db.String(64), nullable=False)  #标题
    price = db.Column(db.Integer, default=0)  # 单价,单位:分
    address = db.Column(db.String(512), default='')  #地址
    room_count = db.Column(db.Integer, default=1)  #房间数目
    acreage = db.Column(db.Integer, default=0)  #房屋面积
    unit = db.Column(db.String(32), default='')  #房屋单元,如几室几厅
    capacity = db.Column(db.Integer, default=1)  #房屋容纳的人数
    beds = db.Column(db.String(64), default='')  #房屋床铺的配置
    deposit = db.Column(db.Integer, default=0)  #房屋押金
    min_days = db.Column(db.Integer, default=1)  #最少入住天数
    max_days = db.Column(db.Integer, default=0)  #最多入住天数,0表示不限制
    order_count = db.Column(db.Integer, default=0)  #预订完成的该房屋的订单数
    index_image_url = db.Column(db.String(256), default="")  #房屋主图片的路径

    # secondary相当于找中间表
    # 所有的relationship都表中都是没有的,ForeignKey到时会在表中建一个字段
    facilities = db.relationship("Facility", secondary=house_facilyty)  #房屋的设施
    images = db.relationship("HouseImage")  #房屋的图片
    orders = db.relationship("Order", backref='house')  #房屋的订单
class House(BaseModel):

    __tablename__ = 'ihome_python_house_info'

    id = db.Column(db.Integer, primary_key=True)
    # 在多表中建立外键
    user_id = db.Column(db.Integer, db.ForeignKey('ihome_python_user_profile.id'), nullable=False)
    area_id = db.Column(db.Integer, db.ForeignKey('ihome_python_area_info.id'), nullable=False)

    title = db.Column(db.String(64), nullable=False)  # 标题
    price = db.Column(db.Integer, default=0)  # 单价,单位:分
    address = db.Column(db.String(512), default="")  # 地址
    room_count = db.Column(db.Integer, default=1)  # 房间数目
    acreage = db.Column(db.Integer, default=0)  # 房屋面积
    unit = db.Column(db.String(32), default="")  # 房屋单元, 如几室几厅
    capacity = db.Column(db.Integer, default=1)  # 房屋容纳的人数
    beds = db.Column(db.String(64), default="")  # 房屋床铺的配置
    deposit = db.Column(db.Integer, default=0)  # 房屋押金
    min_days = db.Column(db.Integer, default=1)  # 最少入住天数
    max_days = db.Column(db.Integer, default=0)  # 最多入住天数,0表示不限制
    order_count = db.Column(db.Integer, default=0)  # 预订完成的该房屋的订单数
    index_image_url = db.Column(db.String(256), default="")  # 房屋主图片的路径

    facilities = db.relationship('Facility', secondary=house_facility)
    images = db.relationship('HouseImage')
    orders = db.relationship('Order', backref='house')
示例#3
0
class HouseImage(BaseModel,db.Model):
    """房屋图片"""
    __tablename__ = "i_house_image"

    id = db.Column(db.Integer,primary_key=True)
    house_id = db.Column(db.Integer,db.ForeignKey("i_house.id"),nullable=False) # 房屋编码
    url = db.Column(db.String(256),nullable=False) # 图片的路径
示例#4
0
class Order(BaseModel, db.Model):
    '''订单'''

    __tablename__ = "ih_order_info"
    id = db.Column(db.Integer, primary_key=True)  #订单编号
    user_id = db.Column(db.Integer,
                        db.ForeignKey("ih_user_profile.id"),
                        nullable=False)  #下订单的用户编号
    house_id = db.Column(db.Integer,
                         db.ForeignKey("ih_house_info.id"),
                         nullable=False)  #预订的房间编号
    begin_date = db.Column(db.DateTime, nullable=False)  #预订的起始时间
    end_date = db.Column(db.DateTime, nullable=False)  #预订的结束时间
    days = db.Column(db.Integer, nullable=False)  #预订的总天数
    house_price = db.Column(db.Integer, nullable=False)  #房屋的单价
    amount = db.Column(db.Integer, nullable=False)  #订单的总金额
    status = db.Column(  #订单的状态
        db.Enum(  #枚举, django choice
            "WAIT_ACCEPT",  #待接单
            "WAIT_PAYMENT",  #待支付
            "PAID",  #已支付
            "WAIT_COMMENT",  #待评价
            "COMPLETE",  #已完成
            "CANCELED",  #已取消
            "REJECTED"  #已拒单
        ),
        default="WAIT_ACCEPT",
        index=True  #指明在mysql中这个字段建立索引,加快查询速度
    )
    comment = db.Column(db.Text)  #订单的评论信息或者拒单原因
    trade_no = db.Column(db.String(80))  #交易的流水号,支付宝的
示例#5
0
class Area(BaseModel, db.Model):
    """城区"""
    __tablename__ = 'ih_area_info'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), nullable=False)
    house = db.relationship("House", backref="area")
class Area(BaseModel):

    __tablename = 'ihome_python_area_info'

    id = db.Column(db.Integer, primary_key=True)  # 区域编号
    name = db.Column(db.String(32), nullable=False)  # 区域名字
    houses = db.relationship('House', backref='area')
class HouseImage(BaseModel):

    __tablename__ = "ihome_python_house_image"

    id = db.Column(db.Integer, primary_key=True)
    house_id = db.Column(db.Integer, db.ForeignKey("ihome_python_house_info.id"), nullable=False)  # 房屋编号
    url = db.Column(db.String(256), nullable=False)  # 图片的路径
示例#8
0
class Facility(BaseModel, db.Model):
    """设施信息"""

    __tablename__ = "ih_facility_info"

    id = db.Column(db.Integer, primary_key=True)  # 设施编号
    name = db.Column(db.String(32), nullable=False)  # 设施名字
示例#9
0
class HouseImg(db.Model):
    """房屋类型"""
    __tablename__ = "t_house_image"
    __table_args__ = {"useexisting": True}

    image_id = db.Column(db.Integer, primary_key=True)
    house_id = db.Column(db.Integer)
    url = db.Column(db.String(255))
示例#10
0
class Tag(db.Model):
    """房屋类型"""
    __tablename__ = "t_house_tag"
    __table_args__ = {"useexisting": True}

    tag_id = db.Column(db.Integer, primary_key=True)
    house_id = db.Column(db.Integer)
    content = db.Column(db.String(11))
示例#11
0
class Order(BaseModel, db.Model):
    """订单"""

    __tablename__ = "ih_order_info"

    id = db.Column(db.Integer, primary_key=True)  # 订单编号
    user_id = db.Column(db.Integer,
                        db.ForeignKey("ih_user_profile.id"),
                        nullable=False)  # 下订单的用户编号
    house_id = db.Column(db.Integer,
                         db.ForeignKey("ih_house_info.id"),
                         nullable=False)  # 预订的房间编号
    begin_date = db.Column(db.DateTime, nullable=False)  # 预订的起始时间
    end_date = db.Column(db.DateTime, nullable=False)  # 预订的结束时间
    days = db.Column(db.Integer, nullable=False)  # 预订的总天数
    house_price = db.Column(db.Integer, nullable=False)  # 房屋的单价
    amount = db.Column(db.Integer, nullable=False)  # 订单的总金额
    status = db.Column(  # 订单的状态
        db.Enum(
            "WAIT_ACCEPT",  # 待接单,
            "WAIT_PAYMENT",  # 待支付
            "PAID",  # 已支付
            "WAIT_COMMENT",  # 待评价
            "COMPLETE",  # 已完成
            "CANCELED",  # 已取消
            "REJECTED"  # 已拒单
        ),
        default="WAIT_ACCEPT",
        index=True)
    comment = db.Column(db.Text)  # 订单的评论信息或者拒单原因
    trade_no = db.Column(db.String(128))  # 支付宝的交易编号

    def to_dict(self):
        """将订单信息转换为字典数据"""
        order_dict = {
            "order_id":
            self.id,
            "title":
            self.house.title,
            "img_url":
            constants.QINIU_URL_DOMAIN +
            self.house.index_image_url if self.house.index_image_url else "",
            "start_date":
            self.begin_date.strftime("%Y-%m-%d"),
            "end_date":
            self.end_date.strftime("%Y-%m-%d"),
            "ctime":
            self.create_time.strftime("%Y-%m-%d %H:%M:%S"),
            "days":
            self.days,
            "amount":
            self.amount,
            "status":
            self.status,
            "comment":
            self.comment if self.comment else ""
        }
        return order_dict
示例#12
0
class Area(BaseModel, db.Model):
    '''城区'''

    __tablename__ = "ih_area_info"

    id = db.Column(db.Integer, primary_key=True)  #区域编号
    name = db.Column(db.String(32), nullable=False)  #区域名字
    # houses=db.relationship
    """
示例#13
0
class HouseImage(BaseModel, db.Model):
    """房屋图片模型类"""
    __tablename__ = "ih_house_image"

    id = db.Column(db.Integer, primary_key=True)
    house_id = db.Column(db.Integer,
                         db.ForeignKey("ih_house_info.id"),
                         nullable=False)
    url = db.Column(db.String(256), nullable=False)  # 所有图片路径地址
示例#14
0
class Facility(BaseModel, db.Model):
    """设施信息"""

    __tablename__ = "ihome_facility"

    id = db.Column(db.Integer, primary_key=True)  # 设施编号
    name = db.Column(db.String(32), nullable=False)  # 设施名字
    css = db.Column(db.String(30))  # 设施展示的图标

    def to_dict(self):
        return {
            'id': self.id,
            'name': self.name,
            'css': self.css
        }

    def to_house_dict(self):
        return {'id': self.id}
示例#15
0
class Area(BaseModel, db.Model):

    __tablename__ = 'ihome_python_area_info'

    id = db.Column(db.Integer, primary_key=True)  # 区域编号
    name = db.Column(db.String(32), nullable=False)  # 区域名字
    houses = db.relationship('House', backref='area', lazy='dynamic')

    def to_dict(self):
        d = {'aid': self.id, 'aname': self.name}
        return d
示例#16
0
class Area(BaseModel, db.Model):
    """城区"""

    __tablename__ = "ih_area_info"

    id = db.Column(db.Integer, primary_key=True)  # 区域编号
    name = db.Column(db.String(32), nullable=False)  # 区域名字
    houses = db.relationship("House", backref="area")  # 区域的房屋

    def to_dict(self):
        return {"aid": self.id, "aname": self.name}
示例#17
0
class Area(BaseModel, db.Model):
    """城区"""
    __tablename__ = "ih_area_info"
    area_id = db.Column(db.Integer, primary_key=True)  # 区域编号
    area_name = db.Column(db.String(32), nullable=False)  # 区域名字
    houses = db.relationship("House", backref="area")  # 区域的房屋

    # 将对象转换为字典
    def to_dic(self):
        dic = {"id": self.area_id, "name": self.area_name}
        return dic
示例#18
0
class Area(BaseModel, db.Model):
    """城区"""

    __tablename__ = 'ih_area_info'

    id = db.Column(db.Integer, primary_key=True)  # 区域编号
    name = db.Column(db.String(32), nullable=False)  # 城区名字
    hourses = db.relationship('House', backref='area')  # 城区的房屋

    def to_dict(self):
        area_dict = {'aid': self.id, 'aname': self.name}
        return area_dict
示例#19
0
class Area(BaseModel, db.Model):
    """城区模型类"""
    __tablename__ = "ih_area_info"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), nullable=False)
    house = db.relationship("House", backref="area")

    def to_dict(self):
        """将对象转换为字典"""
        d = {"aid": self.id, "aname": self.name}
        return d
示例#20
0
文件: models.py 项目: penn525/ihome
class User(BaseModel, db.Model):
    """用户"""

    __tablename__ = "ih_user_profile"

    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    name = db.Column(db.String(32), unique=True, nullable=False)  # 用户暱称
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    real_name = db.Column(db.String(32))  # 真实姓名
    id_card = db.Column(db.String(20))  # 身份证号
    avatar_url = db.Column(db.String(128))  # 用户头像路径
    houses = db.relationship("House", backref="user")  # 用户发布的房屋
    orders = db.relationship("Order", backref="user")  # 用户下的订单

    @property
    def password(self):
        # return self.password_hash
        raise AttributeError('改属性只能设置,不能读取')

    @password.setter
    def password(self, origin_password):
        self.password_hash = generate_password_hash(origin_password)

    def __repr__(self):
        return f'<User: {self.name}>'
示例#21
0
class User(BaseModel, db.Model):
    """用户"""

    __tablename__ = "ih_user_profile"

    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    name = db.Column(db.String(32), unique=True, nullable=False)  # 用户暱称
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    real_name = db.Column(db.String(32))  # 真实姓名
    id_card = db.Column(db.String(20))  # 身份证号
    avatar_url = db.Column(db.String(128))  # 用户头像路径

    # 在一的一方, 添加relationship, 同时添加反向引用
    houses = db.relationship("House", backref="user")  # 用户发布的房屋
    orders = db.relationship("Order", backref="user")  # 用户下的订单

    # 在User下方增加以下函数
    # 通过property装饰器, 将password函数提升为属性
    @property
    def password(self):
        # 在属性的getter方法中, 禁止访问密码数据
        raise AttributeError('禁止访问用户密码')

    @password.setter
    def password(self, value):
        # 在属性的setter方法中执行加密处理
        # 直接传入value即可, 默认sha256, 并会生成随机的8位盐值
        self.password_hash = generate_password_hash(value)

    # 在User下方增加以下函数
    def check_password(self, value):
        """检查用户密码, value 是用户填写密码"""
        return check_password_hash(self.password_hash, value)

    def to_dict(self):
        """将对象转换为字典数据"""
        user_dict = {
            "user_id":
            self.id,
            "name":
            self.name,
            "mobile":
            self.mobile,
            "avatar":
            constants.QINIU_URL_DOMAIN +
            self.avatar_url if self.avatar_url else '',
            "create_time":
            self.create_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        return user_dict

    def auth_dict(self):
        '''将实名信息转换为字典数据'''
        auth_dict = {
            "user_id": self.id,
            "real_name": self.real_name,
            "id_card": self.id_card
        }
        return auth_dict
示例#22
0
class User(BaseModel, db.Model):
    """用户"""

    __tablename__ = "ih_user_profile"

    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    name = db.Column(db.String(32), unique=True, nullable=False)  # 用户暱称
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    real_name = db.Column(db.String(32))  # 真实姓名
    id_card = db.Column(db.String(20))  # 身份证号
    avatar_url = db.Column(db.String(128))  # 用户头像路径
    houses = db.relationship("House", backref="user")  # 用户发布的房屋
    orders = db.relationship("Order", backref="user")  # 用户下的订单

    @property
    def password(self):
        raise AttributeError("不允许此操作")

    @password.setter
    def password(self, value):
        self.password_hash = generate_password_hash(value)

    def chek_password(self, value):
        return check_password_hash(self.password_hash, value)

    def to_dict(self):
        return {
            "name": self.name,
            "mobile": self.mobile,
            "real_name": self.real_name,
            "id_card": self.id_card
        }
示例#23
0
class User(BaseModel, db.Model):
    """用户"""

    __tablename__ = "ih_user_profile"

    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    name = db.Column(db.String(32), unique=True, nullable=False)  # 用户暱称
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    real_name = db.Column(db.String(32))  # 真实姓名
    id_card = db.Column(db.String(20))  # 身份证号
    avatar_url = db.Column(db.String(128))  # 用户头像路径

    # 在一的一方, 添加relationship, 同时添加反向引用
    houses = db.relationship("House", backref="user")  # 用户发布的房屋
    orders = db.relationship("Order", backref="user")  # 用户下的订单

    # 提升函数为属性 --> 默认是getter方法
    @property
    def password(self):
        """关于密码不需要别人获取"""
        raise AttributeError('不支持读取操作')

    @password.setter
    def password(self, value):
        # 属性的setter方法, 需要传入用户的密码
        self.password_hash = generate_password_hash(value)

    # 检查密码的函数
    def check_password_hash(self, value):
        # 需要传入之前的加密项, 及现在的密码
        return check_password_hash(self.password_hash, value)

    def to_dict(self):
        """将对象转换为字典数据"""
        user_dict = {
            "user_id":
            self.id,
            "name":
            self.name,
            "mobile":
            self.mobile,
            "avatar":
            constants.QINIU_URL_DOMAIN +
            self.avatar_url if self.avatar_url else "",
            "create_time":
            self.create_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        return user_dict

    def auth_to_dict(self):
        """将实名信息转换为字典数据"""
        auth_dict = {
            "user_id": self.id,
            "real_name": self.real_name,
            "id_card": self.id_card
        }
        return auth_dict
示例#24
0
class User(BaseModel, db.Model):
    """用户模型"""

    __tablename__ = 'ih_user_profile'

    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    name = db.Column(db.String(32), unique=True, nullable=False)  # 用户昵称
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    real_name = db.Column(db.String(32))  # 真实姓名
    id_card = db.Column(db.String(20))  # 证件号
    avatar_url = db.Column(db.String(128))  # 头像路径
    houses = db.relationship('House', backref='user')  # 用户发布的房屋
    orders = db.relationship('Order', backref='user')  # 用户下的订单

    @property
    def password(self):
        raise AttributeError('这个属性只能设置不能读取')

    @password.setter
    def password(self, value):
        self.password_hash = generate_password_hash(value)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def to_dict(self):
        """
        将对象转换为字典数据
        :return:
        """
        user_dict = {
            'user_id':
            self.id,
            'name':
            self.name,
            'mobile':
            self.mobile,
            'avatar':
            constants.QINIU_URL_DOMAIN +
            self.avatar_url if self.avatar_url else "",
            'create_time':
            self.create_time.strftime('%Y-%m-%d %H:%M:%S')
        }
        return user_dict

    def auth_to_dict(self):
        """
        将实名信息转为字典数据
        :return:
        """
        auth_dict = {
            'user_id': self.id,
            'real_name': self.real_name,
            'id_card': self.id_card
        }
        return auth_dict
示例#25
0
class HouseType(db.Model):
    """房屋类型"""
    __tablename__ = "t_house_type"
    __table_args__ = {"useexisting": True}

    type_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(10))

    def to_dict(self):
        """将对象转换为字典"""
        d = {
            "aid": self.type_id,
            "aname": self.name
        }
        return d
示例#26
0
class User(BaseModel, db.Model):
    """用户"""

    __tablename__ = "ih_user_profile"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), unique=True, nullable=False)
    password_hash = db.Column(db.String(128), nullable=False)
    mobile = db.Column(db.String(11), unique=True, nullable=False)
    real_name = db.Column(db.String(32))
    id_card = db.Column(db.String(20))
    avatar_url = db.Column(db.String(128))
    houses = db.relationship("House", backref="user")
    orders = db.relationship("Order", backref="user")

    @property
    def password(self):
        raise AttributeError("此属性只能设置,不可读取")

    @password.setter
    def password(self, value):
        self.password_hash = generate_password_hash(value)

    def check_passed(self, passwd):
        """
        检验密码正确性
        :param passwd: 用户登录时填写的原始密码
        :return:如果正确返回True,否则返回False
        """
        return check_password_hash(self.password_hash, passwd)

    def to_dict(self):
        """将对象转换为字典数据"""
        user_dict = {
            "user_id":
            self.id,
            "name":
            self.name,
            "mobile":
            self.mobile,
            "avatar":
            constants.QINIU_URL_DOMAIN +
            self.avatar_url if self.avatar_url else "",
            "create_time":
            self.create_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        return user_dict

    def auth_to_dict(self):
        """将实名信息转换为字典数据"""
        auth_dict = {
            "user_id": self.id,
            "real_name": self.real_name,
            "id_card": self.id_card
        }
        return auth_dict
示例#27
0
class User(BaseModel, db.Model):
    """用户"""

    __tablename__ = "ih_user_profile"

    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    name = db.Column(db.String(32), unique=True, nullable=False)  # 用户暱称
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    real_name = db.Column(db.String(32))  # 真实姓名
    id_card = db.Column(db.String(20))  # 身份证号
    avatar_url = db.Column(db.String(128))  # 用户头像路径
    houses = db.relationship("House", backref="user")  # 用户发布的房屋
    orders = db.relationship("Order", backref="user")  # 用户下的订单

    @property
    def password(self):
        """对应password属性的读取操作"""
        raise AttributeError("不支持读取操作")

    @password.setter
    def password(self, value):
        """对应password属性的设置操作, value用户设置的密码值"""
        self.password_hash = generate_password_hash(value)

    def check_password(self, value):
        """检查用户密码, value 是用户填写密码"""
        return check_password_hash(self.password_hash, value)

    def to_dict(self):
        """将对象转换为字典数据"""
        user_dict = {
            "user_id":
            self.id,
            "name":
            self.name,
            "mobile":
            self.mobile,
            "avatar":
            constants.QINIU_URL_DOMAIN +
            self.avatar_url if self.avatar_url else "",
            "create_time":
            self.create_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        return user_dict

    def auth_to_dict(self):
        """将实名信息转换为字典数据"""
        auth_dict = {
            "user_id": self.id,
            "real_name": self.real_name,
            "id_card": self.id_card
        }
        return auth_dict
示例#28
0
class User(BaseModel, db.Model):

    __tablename__ = 'ihome_python_user_profile'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), unique=True, nullable=False)
    password_hash = db.Column(db.String(128), unique=True, nullable=False)
    mobile = db.Column(db.String(11), unique=True, nullable=False)
    real_name = db.Column(db.String(32))
    id_card = db.Column(db.String(20))
    # 用户头像路径
    avatar_url = db.Column(db.String(128))

    # 在一表中,或者多表中写relationship
    houses = db.relationship('House', backref='user')
    orders = db.relationship('Order', backref='user')

    @property
    def password(self):
        raise AttributeError

    @password.setter
    def password(self, pwd):
        #self.password_hash = generate_password_hash(pwd)
        self.password_hash = pwd

    def check_password(self, pwd):
        #return check_password_hash(self.password_hash, pwd)
        return self.password_hash == pwd

    def to_dict(self):
        user_dict = {
            "user_id":
            self.id,
            "name":
            self.name,
            "mobile":
            self.mobile,
            "avatar":
            constants.QINIU_URL_DOMAIN +
            self.avatar_url if self.avatar_url else "",
            "create_time":
            self.create_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        return user_dict

    def auth_to_dict(self):
        auth_dict = {
            'user_id': self.id,
            'real_name': self.real_name,
            'id_card': self.id_card
        }
        return auth_dict
示例#29
0
class User(BaseModel, db.Model):
    """用户"""

    __tablename__ = "ih_user_profile"

    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    name = db.Column(db.String(32), unique=True, nullable=False)  # 用户暱称
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    real_name = db.Column(db.String(32))  # 真实姓名
    id_card = db.Column(db.String(20))  # 身份证号
    avatar_url = db.Column(db.String(128))  # 用户头像路径

    # 在一的一方, 添加relationship, 同时添加反向引用
    houses = db.relationship("House", backref="user")  # 用户发布的房屋
    orders = db.relationship("Order", backref="user")  # 用户下的订单

    # 希望再提供一个password属性, 能够直接进行密码的设置
    # @property: 将下面的函数提升为属性(getter)
    @property
    def password(self):
        raise AttributeError('不允许访问密码')

    @password.setter
    def password(self, value):
        # 在属性的setter方法中进行密码加密处理
        self.password_hash = generate_password_hash(value)

    # 在User下方增加以下函数
    def check_password(self, value):
        """检查用户密码, value 是用户填写密码"""
        return check_password_hash(self.password_hash, value)

    def to_dict(self):
        """将对象转换为字典数据"""
        # 根据前端的需求, 返回对应字段的信息
        user_dict = {
            "user_id": self.id,
            "name": self.name,
            "mobile": self.mobile,
            "avatar": constants.QINIU_URL_DOMAIN + self.avatar_url if self.avatar_url else "",
            "create_time": self.create_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        return user_dict

    def auth_to_dict(self):
        """将实名信息转换为字典数据"""
        auth_dict = {
            "user_id": self.id,
            "real_name": self.real_name,
            "id_card": self.id_card
        }
        return auth_dict
示例#30
0
class User(db.Model):
    """用户"""

    __tablename__ = "t_user"
    __table_args__ = {"useexisting": True}

    user_id = db.Column(db.Integer, primary_key=True)
    mobile = db.Column(db.String(11), unique=True, nullable=True)
    username = db.Column(db.String(32), unique=True, nullable=True)
    password = db.Column(db.String(32), nullable=True, )
    real_name = db.Column(db.String(32))
    real_id_card = db.Column(db.String(18))
    avatar_url = db.Column(db.String(128))