Exemple #1
0
class Order(BaseModel, db.Model):

    __tablename__ = 'ihome_order'

    id = db.Column(db.Integer, primary_key=True)
    # 外键关联用户, 一个用户对应多个订单
    user_id = db.Column(db.Integer,
                        db.ForeignKey('ihome_user.id'),
                        nullable=False)
    # 一个房子对应多个订单
    house_id = db.Column(db.Integer,
                         db.ForeignKey('ihome_house.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)
    # 订单的状态,使用了枚举法, index 等于 true 意思是 默认开启了下标索引, WAIT_ACCEPT相当于0, 可以使用时可以用0代替
    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)

    # 把订单对象初始化如下的字典形式
    def to_dict(self):
        return {
            'order_id': self.id,
            'house_title': self.house.title,
            'image':
            self.house.index_image_url if self.house.index_image_url else '',
            'create_date': self.create_time.strftime('%Y-%m-%d'),
            'begin_date': self.begin_date.strftime('%Y-%m-%d'),
            'end_date': self.end_date.strftime('%Y-%m-%d'),
            'amount': self.amount,
            'days': self.days,
            'status': self.status,
            'comment': self.comment
        }
Exemple #2
0
class House(BaseModel,db.Model):
    # 房屋信息
    __tablename__ = "ihome_house"

    id = db.Column(db.Integer,primary_key=True) # 房屋编号
    # 房屋主人的用户编号
    user_id = db.Column(db.Integer,db.ForeignKey("ihome_user.id"),nullable=False)
    # 归属地的区域编号
    area_id = db.Column(db.Integer,db.ForeignKey("ihome_area.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=ihome_house_facility)
    images = db.relationship("HouseImage") # 房屋的图片
    orders = db.relationship('Order',backref="house")

    def to_dict(self):
        return {
            'id':self.id,
            'title':self.title,
            'image':self.index_image_url if self.index_image_url else '',
            'area':self.area.name,
            'price':self.price,
            'create_time':self.create_time.strftime('%Y-%m-%d %H:%M:%S'),
            'room':self.room_count,
            'order_count':self.order_count,
            'address':self.address
        }
    def to_full_dict(self):
        return {
            'id': self.id,
            'user_avatar':self.user.avatar if self.user.avatar else '',
            'user_name':self.user.name,
            'title': self.title,
            'price': self.price,
            'address': self.area.name + self.address,
            'room_count': self.room_count,
            'acreage':self.acreage,
            'unit':self.unit,
            'capacity':self.capacity,
            'beds':self.beds,
            'deposit':self.deposit,
            'min_days':self.min_days,
            'max_days':self.max_days,
            'order_count': self.order_count,
            'image': [image.url for image in self.images],
            'facilities':[facility.to_dict() for facility in self.facilities]
        }
Exemple #3
0
class CustomerShippingAddress(BaseModel, db.Model):

    __tablename__ = 'customer_shipping_address'
    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey("customer.id"),
                        nullable=False)  # 客户编号
    area_id = db.Column(db.Integer, db.ForeignKey("citys.id"))  # 归属地编号
    name = db.Column(db.String(50))  # 收件人姓名
    tel = db.Column(db.String(50))  # 联系电话
    about_address = db.Column(db.String(255))  # 地址详情
    disabled = db.Column(db.Boolean, default=False)  # 是否默认地址
Exemple #4
0
class Publish(db.Model):
    __tablename__ = 'publish'
    id = db.Column(db.Integer,
                   nullable=False,
                   primary_key=True,
                   autoincrement=True)
    database_name = db.Column(db.VARCHAR(length=255))  # 数据库名 (单例发布,数据库名必须填写)
    id_types = db.Column(
        db.VARCHAR(length=100),
        nullable=False)  # 栏目id id_types (栏目id,允许多个id,每个id用英文逗号分隔)
    data_file_path = db.Column(
        db.VARCHAR(length=255))  # 栏目发布文件数据目录 data_file_path (火车头采集的txt地址)
    data_url_path = db.Column(db.VARCHAR())  # 栏目发布url地址 data_url_path (数据接口地址)
    arc_number_min = db.Column(db.Integer)  # 栏目文章发布最少多少篇
    arc_number_max = db.Column(db.Integer)  # 栏目文章发布最多多少篇
    is_keywords = db.Column(db.Integer)  # 是否启用关键词替换
    is_filter = db.Column(db.Integer)  # 是否启用过滤功能(需过滤的词从过滤表中拉取)
    is_resolve = db.Column(db.Integer)  # 是否启用分词功能
    is_type_top = db.Column(db.Integer)  # 是否发布顶级栏目
    is_index_page = db.Column(db.Integer)  # 是否生存静态首页
    is_type_page = db.Column(db.Integer)  # 是否生成栏目页
    is_page_all = db.Column(db.Integer)  # 是否生存所有文章静态页
    is_page_curent = db.Column(db.Integer)  # 是否生成本次发布的文章的静态页
    server_id = db.Column(db.Integer, db.ForeignKey('servers.id'))

    def __repr__(self):
        return '<Publish id: %s>' % self.id
Exemple #5
0
class GoodsImage(BaseModel, db.Model):
    """商品图片"""
    __tablename__ = "goods_image"
    id = db.Column(db.Integer, primary_key=True)
    goods_id = db.Column(db.Integer, db.ForeignKey("goods.id"),
                         nullable=False)  # 商品id
    url = db.Column(db.String(255), nullable=False)  # 图片的路径
Exemple #6
0
class HouseImage(BaseModel,db.Model):
    # 房屋图片
    __tablename__ = "ihome_house_image"
    id = db.Column(db.Integer,primary_key=True)
    # 房屋编号
    house_id = db.Column(db.Integer,db.ForeignKey('ihome_house.id'),nullable=True)
    url = db.Column(db.String(256),nullable=False) # 图片的路径
Exemple #7
0
class Order(BaseModel, db.Model):
    '''

    '''
    __tablename__ = 'ihome_order'

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('ihome_user.id'),
                        nullable=False)
    house_id = db.Column(db.Integer,
                         db.ForeignKey('ihome_house.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)

    def to_dict(self):
        return {
            'order_id': self.id,
            'house_title': self.house.title,
            'image':
            self.house.index_image_url if self.house.index_image_url else '',
            'create_date': self.create_time.strftime('%Y-%m-%d'),
            'begin_date': self.begin_date.strftime('%Y-%m-%d'),
            'end_date': self.end_date.strftime('%Y-%m-%d'),
            'amount': self.amount,
            'days': self.days,
            'status': self.status,
            'comment': self.comment
        }
Exemple #8
0
class Order(BaseModel, db.Model):

    __tablename__ = "ihome_order"

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey("ihome_user.id"),
                        nullable=False)
    house_id = db.Column(db.Integer,
                         db.ForeignKey('ihome_house.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)

    def to_dict(self):
        return {
            'order_id': self.id,
            'house_title': self.house.title,
            'image':
            self.house.index_image_url if self.house.index_image_url else "",
            'create_date': self.create_time.strftime('%Y-%m-%d'),
            'begin_date': self.begin_date.strftime('%Y-%m-%d'),
            'end_date': self.end_date.strftime('%Y-%m-%d'),
            'amount': self.amount,
            'days': self.days,
            'status': self.status,
            'comment': self.comment
        }
Exemple #9
0
class HouseImage(BaseModel, db.Model):
    """房屋图片"""

    __tablename__ = 'ihome_house_image'

    id = db.Column(db.Integer, primary_key=True)  # 房屋编号
    house_id = db.Column(db.Integer,
                         db.ForeignKey("ihome_house.id"),
                         nullable=False)
    url = db.Column(db.String(256), nullable=False)
Exemple #10
0
class HouseImage(BaseModel, db.Model):

    __tablename__ = 'ihome_house_image'

    id = db.Column(db.Integer, primary_key=True)
    # 外键关联房间的id
    house_id = db.Column(db.Integer,
                         db.ForeignKey('ihome_house.id'),
                         nullable=False)
    # 图片
    url = db.Column(db.String(256), nullable=False)
Exemple #11
0
class GoodsComments(BaseModel, db.Model):
    '''商品评价表'''
    __tablename__ = "goods_comments"
    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer, db.ForeignKey("customer.id"))  # 客户id
    # order_status = db.Column(db.String(255), db.ForeignKey("order.status"))  # 订单状态
    evaluate = db.Column(db.String(255))  # 评价
    reply_id = db.Column(db.Integer, nullable=True)  # 回复id

    Order = db.relationship("Order", secondary=goodscomments_goods_order)
    Goods = db.relationship("Goods", secondary=goodscomments_goods_order)
Exemple #12
0
class Order(BaseModel, db.Model):
    # 订单
    __tablename__ = "order"
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey("customer.id"),
                        nullable=False)  # 客户id
    goods_id = db.Column(db.Integer, db.ForeignKey("goods.id"),
                         nullable=False)  # 商品id
    goods_price = db.Column(db.Integer, nullable=False)  # 商品价格
    amount = db.Column(db.Integer, nullable=False)  # 总价格
    note = db.Column(db.String(200), nullable=True)  # 备注
    status = db.Column(db.Enum(*ORDER_ENUM.keys()),
                       default="WAIT_ACCEPT",
                       index=True)
    comment = db.Column(db.Text)  # 评论

    Goods = db.relationship("Goods", secondary=goodscomments_goods_order)
    GoodsComments = db.relationship("GoodsComments",
                                    secondary=goodscomments_goods_order)
Exemple #13
0
class PublishLog(db.Model):
    __tablename__ = 'publish_log'
    id = db.Column(db.Integer,
                   nullable=False,
                   primary_key=True,
                   autoincrement=True)
    logger_date = db.Column(db.DateTime, nullable=False)
    logger_success = db.Column(db.Text)
    logger_error = db.Column(db.Text)
    server_id = db.Column(db.Integer, db.ForeignKey('servers.id'))

    def __repr__(self):
        return '<Logger id: %s date: %s>' % (self.id, self.logger_date)
Exemple #14
0
class HouseImage(BaseModel, db.Model):
    """房屋图片"""

    __tablename__ = 'ihome_house_image'

    id = db.Column(db.INTEGER, primary_key=True)
    # 房屋编号
    house_id = db.Column(db.INTEGER,
                         db.ForeignKey('ihome_house.id'),
                         nullable=False)
    url = db.Column(db.String(256), nullable=False)  # 图片路径

    def to_dict(self):

        return {'house_': self.house_id, 'url': self.url}
Exemple #15
0
class Student(db.Model):  # 学生模型
    s_id = db.Column(db.INTEGER, primary_key=True,
                     autoincrement=True)  # id 整型  主键  自增
    s_name = db.Column(db.String(20), unique=True)  # 姓名  字符串  不重复
    s_age = db.Column(db.INTEGER, default=10)  # 年龄 整型 默认10
    # 外键虽然不能像Django中的那样直接使用,但是不可或缺,否则会出现如下错误
    # NoForeignKeysError: Could not determine join condition between parent/child tables on relationship Grade.students
    # - there are no foreign keys linking these tables. Ensure that referencing columns are associated with a ForeignKey
    # or ForeignKeyConstraint, or specify a 'primaryjoin' expression.
    # 加unique=True 即为OneToOne
    s_g = db.Column(db.Integer, db.ForeignKey("grade.g_id"), nullable=True)
    __tablename__ = "student"

    def __init__(self, name, age):  # 初始化函数
        self.s_name = name
        self.s_age = age
Exemple #16
0
class Domain(db.Model):
    __tablename__ = 'domain'
    id = db.Column(db.Integer,
                   nullable=False,
                   primary_key=True,
                   autoincrement=True)
    domain_name = db.Column(db.VARCHAR(length=255))
    update_counter = db.Column(db.Integer, nullable=False, default=5)
    category_id = db.Column(db.Integer, nullable=False)
    category_path = db.Column(db.VARCHAR(length=255), nullable=False)
    update_type = db.Column(db.Integer, default=0)  # 0 服务器更新 1 单个站点更新
    server_id = db.Column(db.Integer, db.ForeignKey('servers.id'))

    def __repr__(self):
        return '<Domain %s cid:%s cpath:%s>' % (
            self.domain_name, self.category_id, self.category_path)
Exemple #17
0
    # 校验密码
    def check_pwd(self,pwd):
        return check_password_hash(self.pwd_hash,pwd)

    def to_basic_dict(self):  # 将当前的self对象序列化
        return {
            'id':self.id,
            'avatar':self.avatar if self.avatar else '',
            'name':self.name,
            'phone':self.phone,
        }

ihome_house_facility = db.Table(
    "ihome_house_facility",
    db.Column("house_id",db.Integer,db.ForeignKey("ihome_house.id"),primary_key=True), # 关联房源
    db.Column("facility_id",db.Integer,db.ForeignKey("ihome_facility.id"),primary_key=True) # 关联设施
)

class House(BaseModel,db.Model):
    # 房屋信息
    __tablename__ = "ihome_house"

    id = db.Column(db.Integer,primary_key=True) # 房屋编号
    # 房屋主人的用户编号
    user_id = db.Column(db.Integer,db.ForeignKey("ihome_user.id"),nullable=False)
    # 归属地的区域编号
    area_id = db.Column(db.Integer,db.ForeignKey("ihome_area.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="") # 地址
Exemple #18
0
        return check_password_hash(self.pwd_hash, pwd)

    def to_basic_dict(self):
        return {
            'id': self.id,
            'avatar': self.avatar,
            'name': self.name,
            'phone': self.phone
        }


ihome_house_facility = db.Table(
    'ihome_houst_facility',
    db.Column('house_id',
              db.INTEGER,
              db.ForeignKey('ihome_house.id'),
              primary_key=True),
    db.Column('facility_id',
              db.INTEGER,
              db.ForeignKey('ihome_facility.id'),
              primary_key=True))


class House(BaseModel, db.Model):
    """房屋信息"""

    __tablename__ = 'ihome_house'

    id = db.Column(db.INTEGER, primary_key=True)  # 房屋编号牌
    # 房屋主人的用户编号
    user_id = db.Column(db.INTEGER,
Exemple #19
0
    def to_basic_dict(self):

        return {
            'id': self.id,
            'avatar': self.avatar if self.avatar else '',
            'name': self.name,
            'phone': self.phone
        }


ihome_house_facility = db.Table(
    "ihome_house_facility",
    db.Column("house_id",
              db.Integer,
              db.ForeignKey("ihome_house.id"),
              primary_key=True),
    db.Column("facility_id",
              db.Integer,
              db.ForeignKey("ihome_facility.id"),
              primary_key=True))


class House(BaseModel, db.Model):
    """房屋信息"""

    __tablename__ = "ihome_house"

    id = db.Column(db.Integer, primary_key=True)  # 房屋编号
    # 房屋主人的用户编号
    user_id = db.Column(db.Integer,
Exemple #20
0
class House(BaseModel, db.Model):
    """房屋信息"""
    __tablename__ = 'ihome_house'

    id = db.Column(db.Integer, primary_key=True)  # 房屋编号
    # 房主用户id
    user_id = db.Column(db.Integer,
                        db.ForeignKey('ihome_user.id'),
                        nullable=False)
    # 归属地的区域编号
    area_id = db.Column(db.Integer,
                        db.ForeignKey('ihome_area.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=ihome_house_facility)
    images = db.relationship('HouseImage')  # 房屋的图片
    orders = db.relationship('Order', backref='house')

    def to_dict(self):
        return {
            'id': self.id,
            'title': self.title,
            'image': self.index_image_url if self.index_image_url else '',
            'area': self.area.name,
            'price': self.price,
            'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S'),
            'room': self.room_count,
            'order_count': self.order_count,
            'address': self.address
        }

    def to_full_dict(self):
        return {
            'id': self.id,
            'user_avatar': self.user.avatar if self.user.avatar else '',
            'user_name': self.user.name,
            'title': self.title,
            'image': self.index_image_url if self.index_image_url else '',
            'price': self.price,
            'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S'),
            'room_count': self.room_count,
            'order_count': self.order_count,
            'address': self.area.name + self.address,
            'acreage': self.acreage,
            'unit': self.unit,
            'capacity': self.capacity,
            'beds': self.beds,
            'deposit': self.deposit,
            'min_days': self.min_days,
            'max_days': self.max_days,
            'images': [image.url for image in self.images],
            'facilities': [facility.to_dict() for facility in self.facilities],
        }
Exemple #21
0
    def __init__(self, name, age):  # 初始化函数
        self.s_name = name
        self.s_age = age


sc = db.Table(  # 定义中间表
    'sc',
    # 外键中的内容一定是“关联表名.主键”,如果不是关联表名,则会出现如下错误
    # NoForeignKeysError: Could not determine join condition between parent/child tables on relationship Course.students
    # - there are no foreign keys linking these tables via secondary table 'sc'.
    # Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint,
    # or specify 'primaryjoin' and 'secondaryjoin' expressions.
    db.Column('s_id',
              db.Integer,
              db.ForeignKey("student.s_id"),
              primary_key=True),
    db.Column('c_id',
              db.Integer,
              db.ForeignKey('course.c_id'),
              primary_key=True))


class Course(db.Model):
    c_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    c_name = db.Column(db.String(10), unique=True)
    students = db.relationship(
        'Student',  # 关联模块
        secondary=sc,  # 中间表名称
        backref='cou'  # 反向身份引用,学生实例.cou --> 对应的课程信息
    )
Exemple #22
0
ORDER_CODE = {
    'WAIT_ACCEPT': '1',
    'WAIT_PAYMENT': '2',
    'PAID': '3',
    'WAIT_COMMENT': '4',
    'COMPLETE': '5',
    'CANCELED': '6',
    'REJECTED': '0'
}

goodscomments_goods_order = db.Table(
    "goodscomments_goods_order",
    db.Column('goods_id',
              db.Integer,
              db.ForeignKey("goods.id"),
              primary_key=True),  # 商品id
    db.Column('order_id',
              db.Integer,
              db.ForeignKey("order.id"),
              primary_key=True),  # 订单id
    # db.Column('comments_id', db.Integer, db.ForeignKey("GoodsComments.id"), primary_key=True),  # 订单id
)

# inventory_goods_order = db.Table(
#     "inventory_goods_order",
#     db.Column('goods_id', db.Integer, db.ForeignKey("goods.id"), primary_key=True),  # 商品id
#     db.Column('order_id', db.Integer, db.ForeignKey("order.id"), primary_key=True),  # 订单id
#     db.Column('inventory_id', db.Integer, db.ForeignKey("Inventory.id"), primary_key=True),  # 订单id
# )
goods_goodsclassification = db.Table(
Exemple #23
0
class House(BaseModel, db.Model):

    __tablename__ = 'ihome_house'
    # 房间的id
    id = db.Column(db.Integer, primary_key=True)
    # 该房间用户的id,外键关联用户的 id
    user_id = db.Column(db.Integer,
                        db.ForeignKey('ihome_user.id'),
                        nullable=False)
    # 该房间所在区域的id, 外键关联房间所在区域的 id
    area_id = db.Column(db.Integer,
                        db.ForeignKey('ihome_area.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=0)
    # 最多入住的天数
    max_days = db.Column(db.Integer, default=0)

    order_count = db.Column(db.Integer, default=0)

    index_image_url = db.Column(db.String(256), default="")
    # 房间的设施,与设施是多对多关系
    facilities = db.relationship('Facility', secondary=ihome_house_facility)
    # 房间的图片, 与房间是一对多关系
    images = db.relationship('HouseImage')
    # 订单
    orders = db.relationship('Order', backref='house')

    def to_dict(self):
        return {
            'id': self.id,
            'title': self.title,
            'image': self.index_image_url if self.index_image_url else '',
            'area': self.area.name,
            'price': self.price,
            'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S'),
            'room': self.room_count,
            'order_count': self.order_count,
            'address': self.address
        }

    def to_full_dict(self):
        return {
            'id': self.id,
            'user_avatar': self.user.avatar if self.user.avatar else '',
            'user_name': self.user.name,
            'title': self.title,
            'price': self.price,
            'address': self.area.name + self.address,
            'room_count': self.room_count,
            'acreage': self.acreage,
            'unit': self.unit,
            'capacity': self.capacity,
            'beds': self.beds,
            'deposit': self.deposit,
            'min_days': self.min_days,
            'max_days': self.max_days,
            'order_count': self.order_count,
            'images': [image.url for image in self.images],
            'facilities': [facility.to_dict() for facility in self.facilities],
        }
Exemple #24
0
class House(BaseModel, db.Model):

    __tablename__ = 'ihome_house'

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('ihome_user.id'),
                        nullable=False)
    area_id = db.Column(db.Integer,
                        db.ForeignKey('ihome_area.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=ihome_house_facility)
    images = db.relationship('HouseImage')
    orders = db.relationship('Order', backref='house')

    def to_dict(self):
        return {
            'id': self.id,
            'title': self.title,
            'image': self.index_image_url if self.index_image_url else '',
            'area': self.area.name,
            'price': self.price,
            'create_time': self.create_time,
            'room': self.room_count,
            'order_count': self.order_count,
            'address': self.address
        }

    def to_fill_dict(self):
        return {
            'id': self.id,
            'user_avatar': self.user.avatar if self.user.avatar else '',
            'user_name': self.user.name,
            'title': self.title,
            'price': self.price,
            'address': self.area.name + self.address,
            'room_count': self.room_count,
            'acreage': self.acreage,
            'unit': self.unit,
            'capacity': self.capacity,
            'beds': self.beds,
            'deposit': self.deposit,
            'min_days': self.min_days,
            'max_days': self.max_days,
            'order_count': self.order_count,
            'images': [image.url for image in self.images],
            'facilities': [facility.to_dict() for facility in self.facilities],
        }