Exemplo n.º 1
0
def pic_info():
    user = g.user
    if not user:
        return redirect(url_for('index.index'))
    if request.method == 'GET':
        context = {'user': user.to_dict()}
        return render_template('news/user_pic_info.html', context=context)
    if request.method == 'POST':
        # 获取参数(图片)
        avatar_file = request.files.get('avatar')
        # 校验参数
        try:
            avatar_data = avatar_file.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg="读取头像数据失败")

        # 调用上传方法,将图片上传到七牛
        try:
            key = upload_file(avatar_data)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg="头像上传失败")
        #保存用户头像的key到数据库
        user.avatar_url = key
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg="保存失败")
        data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key}
        #响应头像上传的结果
        return jsonify(errno=response_code.RET.OK, errmsg='上传头像成功', data=data)
Exemplo n.º 2
0
def pic_info():
    user = g.user
    if not user:
        return redirect(url_for('index.index'))
    if request.method == 'GET':
        context = {'user': user.to_dict()}
        return render_template('news/user_pic_info.html', context=context)
    if request.method == 'POST':
        # 接收参数(文件二进制)
        # 拿到文件对象
        avatar_file = request.files.get('avatar')
        try:
            avatar_data = avatar_file.read()
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='参数错误')
        try:
            key = upload_file(avatar_data)
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.THIRDERR,
                           errmsg='上传文件到七牛云失败')
        user.avatar_url = key
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            logging.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='存储头像失败')
        data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key}
        return jsonify(errno=response_code.RET.OK, errmsg='存储头像成功', data=data)
Exemplo n.º 3
0
def pic_info():
    """头像信息"""
    user = g.user
    if request.method == 'GET':
        context = {
            'user': user.to_dict() if user else None,
        }
        return render_template('news/user_pic_info.html', context=context)
    if request.method == 'POST':
        # 接收参数,校验参数
        avatar_file = request.files.get('avatar')
        try:
            avatar_data = avatar_file.read()
        except Exception as e:
            current_app.logger(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='参数错误')
        try:
            # 上传头像到存储平台
            key = upload_file(avatar_data)
        except Exception as e:
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传失败')
        # 保存头像信息
        user.avatar_url = key
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            return jsonify(errno=response_code.RET.DBERR, errmsg='头像保存失败')
        # 响应上传的结果
        # 构造响应数据
        data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key}
        print(data)
        return jsonify(errno=response_code.RET.OK, errmsg='上传成功', data=data)
Exemplo n.º 4
0
def news_release():
    user = g.user
    if not user:
        return redirect(url_for('index.index'))
    #2.GET请求逻辑
    if request.method == 'GET':
        categories = []
        try:
            categories = Category.query.all()
        except Exception as e:
            current_app.logger.error(e)
        categories.pop(0)
        context = {'categories': categories}
        return render_template('news/user_news_release.html', context=context)
    if request.method == 'POST':
        title = request.form.get("title")
        source = "个人发布"
        digest = request.form.get("digest")
        category_id = request.form.get("category_id")
        index_image = request.files.get("index_image")
        content = request.form.get("content")
    if not all([title, source, digest, content, index_image, category_id]):
        return jsonify(errno=response_code.RET.PARAMERR, errmsg="缺少参数")
    try:
        index_image_data = index_image.read()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=response_code.RET.PARAMERR, errmsg="读取新闻图片失败")

    try:
        key = upload_file(index_image_data)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=response_code.RET.THIRDERR, errmsg="上传新闻图片失败")

    # 3. 初始化新闻模型,并设置相关数据
    news = News()
    news.title = title
    news.digest = digest
    news.source = source
    news.content = content
    news.index_image_url = constants.QINIU_DOMIN_PREFIX + key
    news.category_id = category_id
    news.user_id = g.user.id
    # 1代表待审核状态
    news.status = 1

    try:
        db.session.add(news)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        current_app.logger.error(e)
        return jsonify(errno=response_code.RET.DBERR, errmsg="存储失败")

    return jsonify(errno=response_code.RET.OK, srrmsg="成功")
Exemplo n.º 5
0
def news_edit_detail(news_id):
    if request.method == 'GET':
        news = None
        categories = []
        try:
            news = News.query.get(news_id)
            categories = Category.query.all()
            categories.pop(0)
        except Exception as e:
            logging.error(e)
            abort(404)
        if not news:
            abort(404)

        context = {'news': news.to_dict(), 'categories': categories}
        return render_template('admin/news_edit_detail.html', context=context)
    if request.method == 'POST':
        title = request.form.get("title")
        digest = request.form.get("digest")
        content = request.form.get("content")
        index_image = request.files.get("index_image")
        category_id = request.form.get("category_id")
        if not all([title, digest, content, category_id]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')
        try:
            news = News.query.get(news_id)
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='查询数据库失败')
        if not news:
            return jsonify(errno=response_code.RET.NODATA, errmsg='新闻不存在')
        if index_image:
            try:
                index_image_data = index_image.read()
            except Exception as e:
                logging.error(e)
                return jsonify(errno=response_code.RET.PARAMERR,
                               errmsg='图片参数错误')
            try:
                key = upload_file(index_image_data)
            except Exception as e:
                logging.error(e)
                return jsonify(errno=response_code.RET.THIRDERR,
                               errmsg='上传图片到七牛云失败')
            news.index_image_url = constants.QINIU_DOMIN_PREFIX + key
        news.title = title
        news.digest = digest
        news.content = content
        news.category_id = category_id
        try:
            db.session.commit()
        except Exception as e:
            logging.error(e)
            db.session.rollback()
            return jsonify(errno=response_code.RET.DBERR, errmsg='同步到数据库失败')
        return jsonify(errno=response_code.RET.OK, errmsg='ok')
Exemplo n.º 6
0
def release_news():
    """发布新闻"""
    user = g.user
    if not user:
        return render_template(url_for('index.index'))
    if request.method == 'GET':

        categories = []
        try:
            # 查找新闻分类
            categories = Category.query.filter(Category.id != 1).all()
        except Exception as e:
            current_app.logger.error(e)
        context = {'categories': categories}
        return render_template('news/user_news_release.html', context=context)
    if request.method == 'POST':
        # 接收参数, 校验参数
        title = request.form.get("title")
        category_id = request.form.get("category_id")
        source = "个人发布"
        digest = request.form.get("digest")
        content = request.form.get("content")
        index_image = request.files.get("index_image")
        if not all([title, source, digest, content, index_image, category_id]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')
        try:
            # 读取图片
            index_image = index_image.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='参数错误')
        # 上传图片
        image_key = upload_file(index_image)
        # 同步数据库
        news = News()
        news.user_id = user.id
        news.title = title
        news.source = source
        news.digest = digest
        news.content = content
        news.index_image_url = constants.QINIU_DOMIN_PREFIX + image_key
        news.category_id = category_id
        # 审核状态
        news.status = 1
        try:
            db.session.add(news)
            db.session.commit()
        except Exception as e:
            current_app.logger.error(e)
            db.session.rollback()
            return jsonify(errno=response_code.RET.DBERR, errmsg='同步数据失败')
        # 返回结果
        return jsonify(errno=response_code.RET.OK, errmsg='发布成功!')
Exemplo n.º 7
0
def pic_info():
    '''设置头像'''

    # 1.获取登录用户信息
    user = g.user
    if not user:
        return redirect(url_for('index.index'))

    # 2.实现GET请求逻辑
    if request.method == 'GET':
        # 构造渲染数据的上下文
        context = {
            'user': user.to_dict()
        }
        # 渲染界面
        return render_template('news/user_pic_info.html', context=context)

    # 3.POST请求逻辑:修改用户基本信息
    if request.method == "POST":
        # 3.1获取参数(图片)
        avatar_file = request.files.get('avatar')

        # 3.2校验参数
        try:
            avatar_data = avatar_file.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR,errmsg='读取头像失败')

        # 3.3调用上传的方法,将图片上传到七牛
        try:
            key = upload_file(avatar_data)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传失败')


        # 3.4保存用户头像的key到数据库
        user.avatar_url = key
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR,errmsg='保存用户头像失败')

        data = {
            'avatar_url':constants.QINIU_DOMIN_PREFIX + key
        }

        # 3.5响应头像上传的结果
        return jsonify(errno=response_code.RET.OK,errmsg='上传头像成功',data=data)
Exemplo n.º 8
0
def pic_info():
    """设置头像
    """
    # 1.获取登录用户信息
    user = g.user
    if not user:
        return redirect(url_for('index.index'))

    # 2.GET请求逻辑
    if request.method == 'GET':
        # 2.1 构造渲染界面的数据
        context = {'user': user.to_dict()}

        # 2.2 渲染界面
        return render_template('news/user_pic_info.html', context=context)

    # 3.POST请求逻辑
    if request.method == 'POST':
        # 上传用户头像
        # 3.1 接受上传的图片文件
        avatar_file = request.files.get('avatar')

        # 3.2 校验图片文件是否收到
        try:
            avatar_data = avatar_file.read()
        except Exception as e:
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取头像失败')

        # 3.3 将图片文件上传的七牛
        try:
            key = upload_file(avatar_data)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传失败')

        # 3.4 上传成功将key存储到数据库
        user.avatar_url = key
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='存储头像信息失败')

        # 构造响应数据:因为要实现上传图像结束后直接刷新出该头像
        data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key}

        # 3.5 响应上传头像结果
        return jsonify(errno=response_code.RET.OK, errmsg='上传头像成功', data=data)
Exemplo n.º 9
0
def pic_info():
    # 1.查询登录用户基本信息
    user = g.user
    if not user:
        return redirect(url_for('index.index'))
    #2.展示用户头像
    if request.method=='GET':
        context = {
            'user': user.to_dict()
        }
        return render_template('news/user_pic_info.html', context=context)

    #3.修改用户头像
    if request.method == 'POST':
        #3.1接受图片二进制信息
        image_data=request.files.get('avatar')
        print(type(image_data))
        #3.2判断二进制文件传送成功
        try:
            avatar_data=image_data.read()
            print(type(avatar_data))

        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.PARAMERR,errmsg='读取图片失败')


        #3.3.调用qiniu函数上传
        try:
            key=upload_file(avatar_data)
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传七牛云失败')

        # user.avatar_url=constants.QINIU_DOMIN_PREFIX+key
        user.avatar_url=key
        #3.3 同步到数据库
        try:
            db.session.commit()
        except Exception as e:
            logging.error(e)
            db.session.rollback()
            return jsonify(errno=response_code.RET.DATAERR, errmsg='保存用户头像失败')
        data={
            'avatar_url':constants.QINIU_DOMIN_PREFIX+key

        }
        #3.4返回上传结果
        return jsonify(errno=response_code.RET.OK, errmsg='Ok',data=data)
Exemplo n.º 10
0
def news_release():
    user = g.user
    if not user:
        return redirect(url_for('index.index'))
    if request.method == 'GET':
        categories = None
        try:
            categories = Category.query.all()
            categories.pop(0)
        except Exception as e:
            logging.error(e)
        context = {"categories": categories}
        return render_template('news/user_news_release.html', context=context)
    if request.method == 'POST':
        title = request.form.get('title')  # 新闻标题
        source = '个人发布'
        category_id = request.form.get("category_id")
        digest = request.form.get('digest')
        content = request.form.get('content')
        index_image = request.files.get('index_image')
        if not all([title, source, category_id, digest, content, index_image]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')
        try:
            index_image_data = index_image.read()
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='参数错误')
        try:
            key = upload_file(index_image_data)
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传七牛云失败')
        news = News()
        news.title = title
        news.source = source
        news.category_id = category_id
        news.content = content
        news.digest = digest
        news.index_image_url = constants.QINIU_DOMIN_PREFIX + key
        news.user_id = user.id
        news.status = 1
        try:
            db.session.add(news)
            db.session.commit()
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='添加新闻到数据库失败')
        return jsonify(errno=response_code.RET.OK, errmsg='添加新闻到数据库成功')
Exemplo n.º 11
0
def pic_info():
    """设置头像"""

    # 1.获取登陆信息
    user = g.user
    if not user:
        return redirect(url_for('index.index'))

    # 2.实现get请求逻辑
    if request.method == "GET":
        # 构造渲染数据的上下文
        context = {'user': user.to_dict()}

        # 渲染界面
        return render_template('news/user_pic_info.html', context=context)

    # 3.post请求逻辑:上传图片
    if request.method == "POST":
        # 3.1获取参数
        avatar_file = request.files.get('avatar')

        # 3.2校验参数
        try:
            avatar_data = avatar_file.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg="读取头像数据失败")

        # 3.3调用上传的方法,将图片上传至七牛
        try:
            key = upload_file(avatar_data)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg="上传失败")

        # 3.4保存用户头像的key到数据库
        user.avatar_url = key
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg="保存用户头像失败")

        data = {'avatar_url': constants.QINIU_DOMIN_PREFIX + key}

        # 3.5响应头像的上传的结果
        return jsonify(errno=response_code.RET.OK, errmsg="上传成功", data=data)
Exemplo n.º 12
0
def news_release():
    user = g.user
    if not user:
        return redirect(url_for('index.index'))
    if request.method == 'GET':
        categorys = []
        try:
            categorys = Category.query.all()
        except Exception as e:
            current_app.logger.error(e)

        categorys.pop(0)
        context = {
            'categorys':categorys
        }

        return render_template('news/user_news_release.html',context=context)

    if request.method == 'POST':
        title = request.form.get("title")
        source = "个人发布"
        digest = request.form.get("digest")
        content = request.form.get("content")
        index_image = request.files.get("index_image")
        category_id = request.form.get("category_id")

        if not all([title, source, digest, content, index_image, category_id]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')
        try:
            index_image_data = index_image.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取头像数据失败')

        #将用户上传的新闻图片上传到其牛
        try:
            key = upload_file(index_image_data)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传图片失败')

        news = News()
        news.title = title
        news.digest = digest
        news.source = source
        news.content = content
        news.index_image_url = constants.QINIU_DOMIN_PREFIX + key
        news.category_id = category_id
        news.user_id = user.id
        #待审核状态 1 0通过 -1不通过
        news.status = 1

        try:
            db.session.add(news)
            db.session.commit()
        except Exception as e:
            current_app.logger.error(e)
            db.session.rollback()
            return jsonify(errno=response_code.RET.DBERR, errmsg='数据图同步失败')

        return jsonify(errno=response_code.RET.OK, errmsg='发布新闻成功')
Exemplo n.º 13
0
def news_edit_detail(news_id):
    '''新闻编辑详情'''

    if request.method == 'GET':
        # 直接查询要编辑的新闻
        news = None
        try:
            news = News.query.get(news_id)
        except Exception as e:
            current_app.logger.error(e)
            abort(404)

        if not news:
            abort(404)

        # 查询分类的数据
        categories = []
        try:
            categories = Category.query.all()
            categories.pop(0)
        except Exception as e:
            current_app.logger.error(e)
            abort(404)

        context = {"news": news.to_dict(), "categories": categories}
        return render_template('admin/news_edit_detail.html', context=context)

    # 2.新闻版式详情编辑
    if request.method == 'POST':
        # 2.1 接受参数
        # news_id = request.form.get("news_id")
        title = request.form.get("title")
        digest = request.form.get("digest")
        content = request.form.get("content")
        index_image = request.files.get("index_image")
        category_id = request.form.get("category_id")

        # 2.2 校验参数
        if not all([news_id, title, digest, content, category_id]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')

        # 2.3 查询要编辑的新闻
        try:
            news = News.query.get(news_id)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='查询新闻数据失败')

        if not news:
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='新闻不存在')

        # 2.4 读取和上传图片
        if index_image:
            try:
                index_image = index_image.read()
            except Exception as e:
                current_app.logger.error(e)
                return jsonify(errno=response_code.RET.PARAMERR,
                               errmsg='读取新闻数据失败')

            # 2.5 将标题图片上传到七牛
            try:
                key = upload_file(index_image)
            except Exception as e:
                current_app.logger.error(e)
                return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传失败')

            news.index_image_url = constants.QINIU_DOMIN_PREFIX + key

        # 2.6 保存数据并同步到数据库
        news.title = title
        news.digest = digest
        news.content = content
        news.category_id = category_id

        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='保存数据失败')

        # 2.7 响应结果
        return jsonify(errno=response_code.RET.OK, errmsg='OK')
Exemplo n.º 14
0
def news_release():
    """新闻发布"""
    # 1.获取登录用户信息
    user = g.user
    if not user:
        return redirect(url_for('index.index'))

    # 2. GET请求逻辑:渲染发布新闻的界面
    if request.method == 'GET':
        # 2.1 渲染新闻的分类数据
        categories = []
        try:
            categories = Category.query.all()
        except Exception as e:
            current_app.logger.error(e)

        # "最新"分类不是用户发布新闻时绑定的。
        categories.pop(0)

        context = {
            'categories':categories
        }

        return render_template('news/user_news_release.html',context=context)

    # 3. POST请求逻辑:实现新闻发布的业务逻辑
    if request.method == 'POST':
        # 3.1 接受参数
        title = request.form.get("title")
        source = "个人发布"
        digest = request.form.get("digest")
        content = request.form.get("content")
        index_image = request.files.get("index_image")
        category_id = request.form.get("category_id")

        # 3.2 校验参数
        if not all([title,source,digest,content,index_image,category_id]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')

        # 3.3 读取用户上传的新闻图片
        try:
            index_image_data = index_image.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取新闻图片失败')

        # 3.4 将用户上传的新闻图片转存到七牛
        try:
            key = upload_file(index_image_data)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传新闻图片失败')

        # 3.5 创建News新闻模型对象,并赋值和同步到数据库
        news = News()
        news.title = title
        news.digest = digest
        news.source = source
        news.content = content
        # 纯粹是迫不得已:因为我们的是新闻类的网站,里面大部分的数据否是靠爬虫爬的,爬虫会将新闻的图片的全路径url爬下来
        # 那么我们就需要存储新闻图片的全路径url http://ip:port/path
        news.index_image_url = constants.QINIU_DOMIN_PREFIX + key
        news.category_id = category_id
        news.user_id = user.id
        # 1代表待审核状态
        news.status = 1

        try:
            db.session.add(news)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='保存新闻数据失败')

        # 3.6 响应新闻发布的结果
        return jsonify(errno=response_code.RET.OK, errmsg='发布新闻成功')
Exemplo n.º 15
0
def news_release():
    '''用户新闻发布'''
    #1判断用户登录信息
    user = g.user
    if not user:
        return redirect(url_for('index.index'))

    #2.请求方法为GET方法:渲染新闻分类
    if request.method == 'GET':
        #2.1渲染新闻分类
        categories = []
        try:
            categories = Category.query.all()
        except Exception as e:
            current_app.logger.error(e)

        #删除最新分类
        categories.pop(0)
        context = {'categories': categories}
        return render_template('news/user_news_release.html', context=context)

    #3.请求方法为POST
    if request.method == 'POST':
        #3.1接收参数
        title = request.form.get('title')
        source = '个人发布'
        digest = request.form.get('digest')
        content = request.form.get('content')
        indext_image = request.files.get('index_image')
        category_id = request.form.get('category_id')

        #3.2校验参数
        if not all([title, source, digest, content, indext_image, category_id
                    ]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')

        #3.3读取用户上传的新闻图片
        try:
            indext_image_data = indext_image.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取新闻数据失败')

        #3.4将用户上传的图片转存到七牛云
        try:
            key = upload_file(indext_image_data)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传新闻图片失败')

        #3.5创建News新闻模型对象,并赋值和同步到数据库
        news = News()
        news.title = title
        news.digest = digest
        news.source = source
        news.content = content

        news.index_image_url = constants.QINIU_DOMIN_PREFIX + key
        news.category_id = category_id
        news.user_id = user.id

        news.status = 1

        try:
            db.session.add(news)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='保存新闻数据失败')

        #3.6响应新闻发布的结果
        return jsonify(errno=response_code.RET.OK, errmsg='新闻发布成功')
Exemplo n.º 16
0
def news_edit_detail(news_id):
    if request.method == 'GET':
        news = None
        try:
            news = News.query.get(news_id)
        except Exception as e:
            abort(404)
        if not news:
            abort(404)
        categories = Category.query.all()
        categories.pop(0)
        context = {
            'news': news.to_dict(),
            'categories': categories,
        }
        return render_template('admin/news_edit_detail.html', context=context)
    if request.method == 'POST':
        title = request.form.get('title')
        category_id = request.form.get('category_id')
        digest = request.form.get('digest')
        index_image = request.form.get('index_image')
        content = request.form.get('content')
        # 2.2 校验参数
        if not all([title, digest, content, category_id]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')

        try:
            news = News.query.get(news_id)
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='查询新闻数据失败')

        if not news:
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='新闻不存在')

        if index_image:
            try:
                index_image_data = index_image.read()
            except Exception as e:
                logging.error(e)
                return jsonify(errno=response_code.RET.PARAMERR,
                               errmsg='图片参数错误')

            try:
                key = upload_file(index_image_data)
            except Exception as e:
                logging.error(e)
                return jsonify(errno=response_code.RET.THIRDERR,
                               errmsg='上传图片到七牛云失败')

            # 需要将key修改
            news.index_image_url = constants.QINIU_DOMIN_PREFIX + key

        news.title = title
        news.digest = digest
        news.content = content
        news.category_id = category_id

        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            logging.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='保存数据失败')

        # 2.5 响应结果
        return jsonify(errno=response_code.RET.OK, errmsg='OK')
Exemplo n.º 17
0
def news_release():
    """新闻发布"""

    # 1.获取登录用户信息:没有渲染界面,不需要to_dict()
    user = g.user
    if not user:
        return redirect(url_for('index.index'))

    # 2.GET请求逻辑:渲染发布新闻的界面
    if request.method == 'GET':
        categories = []
        try:
            categories = Category.query.all()
        except Exception as e:
            current_app.logger.error(e)

        # 不需要显示"最新"
        categories.pop(0)

        context = {'categories': categories}

        return render_template('news/user_news_release.html', context=context)

    # 3.POST请求逻辑:实现新闻发布后端的逻辑
    if request.method == 'POST':
        # 3.1 接受参数
        title = request.form.get("title")
        source = "个人发布"
        digest = request.form.get("digest")
        content = request.form.get("content")
        index_image = request.files.get("index_image")
        category_id = request.form.get("category_id")

        # 3.2 校验参数
        if not all([title, source, digest, content, index_image, category_id]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')

        # 校验和读取用户上传的图片二进制,需要转存到七牛
        try:
            index_image_data = index_image.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='读取图片失败')

        # 将用户头像存储到七牛
        try:
            key = upload_file(index_image_data)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传图片失败')

        # 3.3 新建新闻模型对象,并赋值和同步到数据库
        news = News()
        news.title = title
        news.digest = digest
        news.source = source
        news.content = content
        # 这里需要拼接前缀是迫不得已,因为一般的新闻的网站的数据都是从其他地方爬虫过来的,那个时候需要将爬过来的url全局保存
        # 如果我在models中to_dict()中加七牛的前缀,会造成 七牛前缀+新闻图片url
        news.index_image_url = constants.QINIU_DOMIN_PREFIX + key
        news.category_id = category_id
        news.user_id = user.id
        # 1代表待审核状态
        news.status = 1

        try:
            db.session.add(news)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='保存发布的新闻失败')

        # 3.4 响应新闻发布的结果
        return jsonify(errno=response_code.RET.OK, errmsg='发布新闻成功')
Exemplo n.º 18
0
def user_news_release():
    """新闻发布"""
    # 1.获取登录用户信息
    user = g.user
    if not user:
        return redirect(url_for('index.index'))

    # 2.get请求的逻辑:渲染发布新闻的界面
    if request.method == 'GET':
        # 2.1渲染新闻分类数据
        categories = []
        try:
            categories = Category.query.all()
        except Exception as e:
            current_app.logger.error(e)

        # 删除最新类
        categories.pop(0)

        context = {'categories': categories}

        return render_template('news/user_news_release.html', context=context)

    # 3.POST请求逻辑:实现新闻发布的逻辑
    if request.method == 'POST':
        # 3.1接收参数
        title = request.form.get("title")
        source = "个人发布"
        digest = request.form.get("digest")
        content = request.form.get("content")
        index_image = request.files.get("index_image")
        category_id = request.form.get("category_id")

        # 3.2校验参数
        if not all([title, source, digest, content, index_image, category_id]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg="缺少参数")

        # 3.3读取用户上传的新闻的图片
        try:
            index_image_data = index_image.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg="读取新闻图片失败")

        # 3.4将用户上传的新闻图片转存至七牛
        try:
            key = upload_file(index_image_data)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg="上传新闻图片失败")

        # 3.5创建NEWS模型对象,并同步到数据库
        news = News()
        news.title = title
        news.digest = digest
        news.source = source
        news.content = content
        news.index_image_url = constants.QINIU_DOMIN_PREFIX + key
        news.category_id = category_id
        news.user_id = g.user.id
        # 1代表待审核状态
        news.status = 1

        try:
            db.session.add(news)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg="保存新闻数据失败")

        # 3.6响应新闻发布的结果
        return jsonify(errno=response_code.RET.OK, errmsg="发布新闻成功")
Exemplo n.º 19
0
def news_edit_detail(news_id):
    """新闻版式编辑详情"""
    if request.method == 'GET':
        #查询要编辑的新闻
        news = None
        try:
            news = News.query.get(news_id)
        except Exception as e:
            current_app.logger.error(e)
            abort(404)
        if not news:
            abort(404)

        # 查询分类
        categories = []
        try:
            categories = Category.query.all()
            categories.pop(0)
        except Exception as e:
            current_app.logger.error(e)
            abort(404)

        # 构造渲染数据
        context = {'news': news.to_dict(), 'categories': categories}

        return render_template('admin/news_edit_detail.html', context=context)

    if request.method == "POST":
        # 1.接受参数
        title = request.form.get('title')
        digest = request.form.get('digest')
        content = request.form.get('content')
        index_image = request.form.get('index_image')
        category_id = request.form.get('category_id')
        # status = request.form.get('status')

        # 2.校验参数
        if not all([news_id, title, digest, content, category_id]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg="缺少参数")

        # 3.查询要编辑的新闻
        try:
            news = News.query.get(news_id)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg="查询新闻数据失败")

        if not news:
            return jsonify(errno=response_code.RET.PARAMERR, errmsg="新闻不存在")

        # 4.读取和上传图片
        if index_image:
            try:
                index_image = index_image.read()
            except Exception as e:
                current_app.logger.error(e)
                return jsonify(errno=response_code.RET.PARAMERR,
                               errmsg="读取新闻图片失败")

            # 5.将图片上传到七牛
            try:
                key = upload_file(index_image)
            except Exception as e:
                current_app.logger.error(e)
                return jsonify(errno=response_code.RET.THIRDERR, errmsg="上传失败")

            news.index_image_url = constants.QINIU_DOMIN_PREFIX + key

        # 6.保存数据并同步到数据库
        news.title = title
        news.digest = digest
        news.content = content
        news.category_id = category_id
        # news.status = 1

        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg="保存数据失败")

        # 7.响应结果
        return jsonify(errno=response_code.RET.OK, errmsg="OK")
Exemplo n.º 20
0
def news_release():
    # 1.查询登录用户基本信息
    user = g.user
    if not user:
        return redirect(url_for('index.index'))
    #2.新闻发布界面
    if request.method=='GET':
        try:
            categroies=Category.query.all()
            categroies.pop(0)
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.DBERR, errmsg='分页分类失败')
        context={
            'user':user.to_dict,
            'categroies':categroies

        }

        return render_template('news/user_news_release.html',context=context)
    if request.method=='POST':
        title=request.form.get('title')
        category_id =request.form.get('category_id')
        digest=request.form.get('digest')
        index_image=request.files.get('index_image')
        content=request.form.get('content')
        source = "个人发布"
        if not all([title, category_id, digest, index_image, content, source]):
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='缺少参数')


# 判断新闻图片是否传入到视图
        try:
            index_image_data=index_image.read()
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.PARAMERR, errmsg='图片参数错误')

    # 3.3 将新闻图片上传到七牛云(核心点)
        try:
            key=upload_file(index_image_data)
        except Exception as e:
            logging.error(e)
            return jsonify(errno=response_code.RET.THIRDERR, errmsg='上传七牛云失败')

            # user.avatar_url=constants.QINIU_DOMIN_PREFIX+key
        user.avatar_url=key
    # 3.4 将新闻的数据保存到模型类(核心点)

        news = News()
        news.title = title
        news.category_id = category_id
        news.digest = digest
        news.index_image_url = constants.QINIU_DOMIN_PREFIX + key  # 新闻图片存储全路径
        news.content = content
        news.source = source
        news.user_id = user.id  # 当前新闻的发布者
        news.status = 1  # 默认发布的新闻,状态为审核中
        try:
            db.session.add(news)
            db.session.commit()
        except Exception as e:
            logging.error(e)
            db.session.rollback()
            return jsonify(errno=response_code.RET.DBERR, errmsg='保存新闻失败')

        #3.6返回响应结果
        return jsonify(errno=response_code.RET.OK, errmsg='OK')