Example #1
0
def save_house_image(house_id):
    """
    上传房屋图片
    1/获取参数,image_data = request.files属性
    2/判断获取结果
    3/根据house_id查询数据库,House模型类,
    4/判断查询结果,确认房屋的存在
    5/读取图片数据
    6/调用七牛云接口,上传图片
    7/保存图片名称
    8/构造HouseImage模型类对象,准备存储房屋图片数据
    house_image = HouseImage()
    house_image.house_id = house.id
    house_image.url = image_name
    db.session.add(house_image)
    9/判断房屋默认图片是否设置,如未设置,默认添加当前图片为主图片;
    10/保存房屋对象数据,db.session.add(house)
    11/提交数据到数据库中
    db.session.commit()
    12/拼接图片的绝对路径
    13/返回结果
    :param house_id:
    :return:
    """
    # 获取图片文件
    house_image = request.files.get("house_image")
    # 检验参数的存在
    if not house_image:
        return jsonify(errno=RET.PARAMERR, errmsg="未上传房屋图片")
    # 连接数据库,判断房屋的存在
    try:
        house = House.query.filter_by(id=house_id).first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="查询房屋数据失败")
    # 判断查询结果
    if not house:
        return jsonify(errno=RET.NODATA, errmsg="房屋不存在")
    # 读取图片数据
    house_image_data = house_image.read()
    # 调用七牛云接口,上传房屋图片
    try:
        image_name = storage(house_image_data)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败")
    # 保存房屋图片数据,构建模型类对象
    house_image = HouseImage()
    house_image.house_id = house_id
    house_image.url = image_name
    # 添加数据到数据库会话对象
    db.session.add(house_image)

    # 判断房屋朱图片是否设置,如未设置,添加当前图片为主图片
    if not house.index_image_url:
        house.index_image_url = image_name
        db.session.add(house)

    # 提交数据到mysql数据库
    try:
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存房屋图片数据失败")
    # 拼接图片的绝对路径
    image_url = constants.QINIU_DOMIN_PREFIX + image_name
    # 返回数据
    return jsonify(errno=RET.OK, errmsg="OK", data={"url": image_url})
Example #2
0
def save_house_image(house_id):
    """
    保存房屋图片
    1/获取参数,request.files.get('house_image')
    2/校验图片参数存在
    3/根据house_id查询数据库,确认房屋的存在
    4/校验查询结果
    5/读取图片数据
    6/调用七牛云接口,上传房屋图片
    7/构造模型类对象,
    house_image = HouseImage()
    db.session.add(house_image)
    8/判断房屋主图片是否设置,如未设置,默认添加用户上传的第一张房屋图片为主图片
        if not house.index_image_url:
            house.index_image_url = image_name
            db.session.add(house)
    9/提交数据到数据库中
    10/拼接图片路径,七牛云的外链域名和图片名称
    11/返回结果
    :param house_id:
    :return:
    """
    # 获取图片参数
    image = request.files.get('house_image')
    # 校验参数的存在
    if not image:
        return jsonify(errno=RET.PARAMERR, errmsg='图片未上传')
    # 根据house_id查询数据库,确认房屋的存在
    try:
        house = House.query.get(house_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='查询房屋数据失败')
    # 校验查询结果
    if not house:
        return jsonify(errno=RET.NODATA, errmsg='无房屋数据')
    # 读取图片数据
    image_data = image.read()
    # 调用七牛云接口,上传房屋图片
    try:
        image_name = storage(image_data)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg='上传房屋图片失败')
    # 构造HouseImage模型类对象,保存房屋图片
    house_image = HouseImage()
    house_image.house_id = house_id
    house_image.url = image_name
    # 把房屋图片数据存入数据库会话对象中
    db.session.add(house_image)
    # 判断房屋主图片是否设置
    if not house.index_image_url:
        house.index_image_url = image_name
        # 把房屋图片数据存入数据库会话对象中
        db.session.add(house)
    # 提交数据到数据库中
    try:
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='保存房屋图片失败')
    # 拼接图片绝对路径
    image_url = constants.QINIU_DOMIN_PREFIX + image_name
    # 返回结果
    return jsonify(errno=RET.OK, errmsg='OK', data={'url': image_url})
Example #3
0
def upload_house_images(house_id):
    """
	1.获取参数
	2.验证
	3.通过house_id查询房屋对象
	4.通过七牛云上传图片获取返回的url
	5.设置房屋的默认图像图像
    6.创建房屋图片对象
    7.设置图片对象的房屋编号
    8.更新数据库
    9.返回,携带图片的url
	:param house_id:
	:return:
	"""
    # 1.获取参数
    image_data = request.files.get("house_image").read()

    # 2.验证
    if not image_data:
        return jsonify(errno=RET.PARAMERR, errmsg="请选择图片")

    # 3.通过house_id查询房屋对象
    try:
        house = House.query.filter(House.id == house_id).first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="查询房屋失败")

    if not house:
        return jsonify(errno=RET.DATAERR, errmsg="该房屋不存在")

    # 4.通过七牛云上传图片获取返回的url
    try:
        image_url = image_storage(image_data)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errnp=RET.THIRDERR, errmsg="七牛云上传图片失败")

    # 5.设置房屋的默认图像图像
    if not house.index_image_url:
        house.index_image_url = image_url

    # 6.创建房屋图片对象
    house_image = HouseImage()
    house_image.url = image_url

    # 7.设置图片对象的房屋编号
    house_image.house_id = house_id

    # 8.更新数据库
    try:
        db.session.add(house_image)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="房屋图片保存失败")

    # 9.返回, 携带图片的url
    house_image_url = constants.QINIU_DOMIN_PREFIX + image_url
    return jsonify(errno=RET.OK,
                   errmsg="房屋图片保存失败",
                   data={"url": house_image_url})
Example #4
0
def save_house_image(house_id):
    """
    保存房屋图片:
    1/获取参数,图片house_image
    2/校验参数的存在
    3/根据house_id查询数据库,确认房屋的存在
    house = House.query.get(house_id)
    4/读取图片数据
    5/调用七牛云上传图片,保存返回的图片名称(相对路径)
    6/构造模型类对象,HouseImage对象,存储图片关联的房屋,以及图片的名称
    7/临时提交数据到HouseImage对象,db.session.add(house_image)
    8/判断房屋主图片是否设置,如未设置默认添加当前的图片为房屋主图片
    9/临时提交数据到House对象,db.session.add(house)
    10/提交数据到数据库中,如果发生异常需要进行回滚
    11/拼接图片的绝对路径
    12/返回结果
    :param house_id:
    :return:
    """
    # 获取参数,post请求的图片参数
    image = request.files.get('house_image')
    # 检查参数的存在
    if not image:
        return jsonify(errno=RET.PARAMERR, errmsg='图片未上传')
    # 确认房屋的存在
    try:
        house = House.query.get(house_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='查询房屋信息异常')
    # 校验查询结果
    if not house:
        return jsonify(errno=RET.NODATA, errmsg='无房屋数据')
    # 读取图片数据
    image_data = image.read()
    # 调用七牛云接口,实现图片上传
    try:
        image_name = storage(image_data)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg='上传图片到七牛失败')
    # 构造模型类对象,准备存储房屋图片数据
    house_image = HouseImage()
    house_image.house_id = house_id
    house_image.url = image_name
    # 临时提交图片数据到数据库会话对象中
    db.session.add(house_image)
    # 判断房屋主图片是否设置,如未设置默认添加当前图片为主图片
    if not house.index_image_url:
        house.index_image_url = image_name
        # 临时提交图片数据到数据库会话对象中
        db.session.add(house)
    # 提交数据到数据库中
    try:
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='保存图片失败')
    # 拼接图片的url
    image_url = constants.QINIU_DOMIN_PREFIX + image_name
    # 返回结果
    return jsonify(errno=RET.OK, errmsg='OK', data={'url': image_url})
Example #5
0
def save_house_image():
    """
    保存房屋的图片
    参数 图片,房屋的id
    """
    resp = BaseResponse()
    image_file = request.files.get("house_image")
    house_id = request.form.get("house_id")

    if not all([image_file, house_id]):
        resp.errno = RET.PARAMERR
        resp.errmsg = "参数错误"
        return jsonify(resp.dict)

    # 判断house_id的正确性
    try:
        house = House.query.get(house_id)
    except Exception as e:
        current_app.logger.error(e)
        resp.errno = RET.DBERR
        resp.errmsg = "数据库异常"
        return jsonify(resp.dict)

    if house is None:
        resp.errno = RET.NODATA
        resp.errmsg = "房屋不存在"
        return jsonify(resp.dict)
    image_data = image_file.read()

    # 保存图片到七牛中
    try:
        file_name = storage(image_data)
    except Exception as e:
        current_app.logger.error(e)
        resp.errno = RET.THIRDERR
        resp.errmsg = "保存图片失败"
        return jsonify(resp.dict)

    # print(house_id,file_name)
    # 保存图片信息到数据库中
    house_image = HouseImage(house_id=house_id, url=file_name)

    db.session.add(house_image)

    if not house.index_image_url:
        house.index_image_url = file_name
        db.session.add(house)

    try:
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        current_app.logger.error(e)
        resp.errno = RET.DBERR
        resp.errmsg = "保存图片数据异常"
        return jsonify(resp.dict)

    image_url = constants.QINIU_URL_DOMAIN + file_name

    resp.errno = RET.OK
    resp.errmsg = "OK"
    resp.data = {"image_url": image_url}

    return jsonify(resp.dict)
Example #6
0
def save_house_image(house_id):
    """
    上传房屋图片信息
    1.获取参数,用户上传的图片数据
    2.校验参数的存在
    3.根据house_id查询数据库,校验房屋的存在
    4.读取图片数据
    5.调用七牛云接口上传图片,保存返回的图片名字
    6.构造模型类对象HouseImage,存储图片关联的房屋
    7.临时提交图片数据到数据库
    8.查询用户房屋主图片是否设置
    9.如果没有设置,添加当期图片为主图片
    10.提交图片数据到数据库中commit
    11.拼接图片的url
    12.返回结果
    :param house_id:
    :return:
    """
    # 获取用户上传的图片
    image = request.files.get('house_image')
    # 检查参数是否存在
    if not image:
        return jsonify(errno=RET.PARAMERR, errmsg="图片未上传")
    # 查询房屋信息是否存在
    try:
        house = House.query.get(house_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="查询房屋信息异常")
    # 判断查询结果
    if not house:
        return jsonify(errno=RET.NODATA, errmsg="无房屋数据")
    # 读取图片数据
    image_data = image.read()
    # 调用七牛云接口,上传图片
    try:
        image_name = storage(image_data)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg="图片上传失败")
    # 构造模型类HouseImage对象
    house_image = HouseImage()
    house_image.house_id = house_id
    house_image.url = image_name
    # 临时提交数据到house_image中
    db.session.add(house_image)
    # 判断房屋主图片是否设置,如未设置,进行设置
    if not house.index_image_url:
        house.index_image_url = image_name
        # 临时提交数据到会话对象当中
        db.session.add(house)
    # 提交数据到数据库中
    try:
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存图片数据失败")
    # 拼接图片的url(绝对路径)
    image_url = constants.QINIU_DOMIN_PREFIX + image_name
    # 返回结果
    return jsonify(errno=RET.OK, errmsg="OK", data={'url': image_url})