Ejemplo n.º 1
0
def user_pic_info():
    """
    用户图片上传
    :return:
    """
    user = g.user_id
    if not user:
        return redirect("/")
    if request.method == "GET":
        data = {"user": user.to_dict()}

        return render_template("news/user_pic_info.html", data=data)
    try:
        image_file = request.files.get("avatar").read()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DATAERR, errmsg="数据存储错误")

    try:
        key = storage(image_file)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg="七牛云存储错误")

    user.avatar_url = key
    return jsonify(errno=RET.OK, errmsg="ok")
Ejemplo n.º 2
0
def user_pic_info():
    """
        用户头像上传页面和功能
    :return:
    """
    # 获取登陆用户
    user = g.user
    if request.method == "GET":
        return users_render_template("users/user_pic_info.html")

    try:
        # 获取请求体 -- 二进制上传文件
        avatar_file = request.files.get("avatar").read()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="读取文件出错")

    try:
        # 上传文件
        url = storage(avatar_file)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg="上传图片错误")
    # 保存用户头像路径
    user.avatar_url = constants.QINIU_DOMIN_PREFIX + url
    try:
        # 事务提交
        mysql_db.session.commit()
    except Exception as e:
        mysql_db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存用户数据错误")
    # 返回
    return jsonify(errno=RET.OK, errmsg="头像上传成功", avatar_url=constants.QINIU_DOMIN_PREFIX + url)
Ejemplo n.º 3
0
def user_news_release():
    """新闻发布"""
    user = g.user_id
    if not user:
        return redirect("/")
    if request.method == "GET":
        category_list = []
        try:
            category_mode = Category.query.all()
        except Exception as e:
            current_app.logger(e)
            return jsonify(errno=RET.DBERR, errmsg="数据错误")
        for category in category_mode:
            category_list.append(category.to_dict())
        if category_list:
            category_list.pop(0)

        data = {"user": user.to_dict(), "categories": category_list}
        return render_template("news/user_news_release.html", data=data)
    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")
    if not all([title, category_id, digest, index_image, content]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
    try:
        category_id = int(category_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
    try:
        index_image = index_image.read()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="图片错误")
    try:
        key = storage(index_image)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg="上传图片错误")

    new = News()
    new.category_id = category_id
    new.digest = digest
    new.content = content
    new.index_image_url = key
    new.title = title
    new.status = 1

    user.news_list.append(new)
    try:
        db.session.add(new)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="数据库保存错误")
    return jsonify(errno=RET.OK, errmsg="ok")
Ejemplo n.º 4
0
def news_edit_detail():
    if request.method == "GET":
        news_id = request.args.get("news_id")
        try:
            news_id = int(news_id)
        except Exception as e:
            current_app.logger.error(e)
        news = None
        try:
            news = News.query.get(news_id)
        except Exception as e:
            current_app.logger.error(e)
        if not news:
            return jsonify(errno=RET.PARAMERR, errmsg="新闻不存在")
        categories = []
        try:
            categories = Category.query.all()
        except Exception as e:
            current_app.logger(e)
        category_dict_li = []
        for category in categories:
            if category.name == category_id:
                category.to_dict()["is_selected"] = True
            category_dict_li.append(category.to_dict())
        data = {
            "news": news.to_dict() if news_id else None,
            "categories": category_dict_li
        }
        return render_template("admin/news_edit_detail.html", data=data)

    category_id = request.form.get("category_id", None)
    news_id = request.form.get("news_id", None)
    title = request.form.get("title", None)
    digest = request.form.get("digest", None)
    content = request.form.get("content", None)
    index_image = request.files.get("index_image", None)
    if not all([category_id, news_id, title, digest, content, index_image]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
    try:
        category_id = int(category_id)
        news_id = int(news_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
    try:
        result = storage(index_image.read())
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg="第三方错误")
    try:
        news = News.query.get(news_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据查询错误")
    if not news:
        return jsonify(errno=RET.DATAEXIST, errmsg="数据不存在")
    news.category_id = category_id
    news.content = content
    news.digest = digest
    news.title = title
    news.index_image_url = constants.QINIU_DOMIN_PREFIX + result
    return jsonify(errno=RET.OK, errmsg="ok")
Ejemplo n.º 5
0
def user_news_release():
    """
        新闻发布页面和功能
    :return:
    """
    # 获取登陆用户
    user = g.user
    # 请求方式 == get
    if request.method == "GET":
        # 新闻分类集合实体
        categories = []
        try:
            # 获取所有的分类数据
            categories = Category.query.all()
        except Exception as e:
            current_app.logger.error(e)
        # 封装返回新闻分类数据
        categories_list = []
        # 循环 新闻分类实体
        for category in categories:
            # 封装 -- 获取字典
            categories_list.append(category.to_dict())

        # 移除`最新`分类 -- 最新只需按照创建时间排序, 没有具体的类别
        categories_list.pop(0)
        # 封装返回数据
        data = {
            "categories": categories_list
        }
        return render_template("users/user_news_release.html", data=data)
    # 标题
    title = request.form.get("title")
    # 来源
    source = "个人发布"
    # 摘要
    digest = request.form.get("digest")
    # 正文内容
    content = request.form.get("content")
    # 图片信息 -- 文件
    index_image = request.files.get("index_image")
    # 分类ID
    category_id = request.form.get("category_id")
    # 判断参数是否都有数据
    if not all([title, source, digest, content, index_image, category_id]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不齐")
    try:
        # 读取图片二进制数据
        index_image = index_image.read()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="图片读取失败")
    # 实例化保存发布新闻数据
    news = News()
    if index_image:
        try:
            # 上传图片信息
            url = storage(index_image)
            news.index_image_url = constants.QINIU_DOMIN_PREFIX + url
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.THIRDERR, errmsg="上传图片错误")
    # 设置新闻实体属性
    news.title = title
    news.digest = digest
    news.source = source
    news.content = content
    news.category_id = category_id
    news.user_id = user.id
    # 1代表待审核状态
    news.status = 1
    try:
        # 添加发布新闻数据
        mysql_db.session.add(news)
        # 事务提交
        mysql_db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        mysql_db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存数据失败")
    # 返回
    return jsonify(errno=RET.OK, errmsg="发布成功,等待审核")
Ejemplo n.º 6
0
def news_edit_detail():
    """
        新闻板式编辑页面和功能
    :return:
    """
    if request.method == "GET":
        # 获取新闻id
        news_id = request.args.get("news_id")
        # 判断是否有新闻ID
        if not news_id:
            return render_template('admin/news_edit_detail.html',
                                   data={"errmsg": "未查询到此新闻"})
        # 当前新闻详情
        news = None
        try:
            # 通过ID查询新闻
            news = News.query.get(news_id)
        except Exception as e:
            current_app.logger.error(e)
        # 判断是否有此新闻
        if not news:
            return render_template('admin/news_edit_detail.html',
                                   data={"errmsg": "未查询到此新闻"})
        # 获取新闻分类全部数据 -- 实体
        categories = Category.query.all()
        # 封装返回新闻分类数据
        categories_list = []
        # 循环新闻分类实体
        for category in categories:
            # 转为字典
            c_dict = category.to_dict()
            # 默认不是选中
            c_dict["is_selected"] = False
            # 判断当前分类ID 和 新闻详情中分类ID一致
            if category.id == news.category_id:
                # 设置为选中
                c_dict["is_selected"] = True
            # 封装
            categories_list.append(c_dict)
        # 移除最新分类
        categories_list.pop(0)
        # 返回数据
        data = {"news": news.to_dict(), "categories": categories_list}
        # 返回
        return render_template('admin/news_edit_detail.html', data=data)
    # 新闻实体
    news = None
    # 请求体
    data_dict = request.form
    # 新闻ID
    news_id = data_dict.get("news_id")
    # 新闻标题
    title = data_dict.get("title")
    # 新闻摘要
    digest = data_dict.get("digest")
    # 新闻内容
    content = data_dict.get("content")
    # 新闻上传图片
    index_image = request.files.get("index_image")
    # 新闻分类
    category_id = data_dict.get("category_id")
    # 判断参数是否都有数据
    if not all([title, digest, content, category_id]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数有误")
    try:
        # 根据新闻ID获取新闻详情
        news = News.query.get(news_id)
    except Exception as e:
        current_app.logger.error(e)
    # 判断是否有此新闻
    if not news:
        return jsonify(errno=RET.NODATA, errmsg="未查询到新闻数据")
    # 判断是否有上传图片
    if index_image:
        try:
            # 读取二进制文件
            index_image = index_image.read()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.PARAMERR, errmsg="参数有误")
        try:
            # 将上传图片上传至七牛云
            url = storage(index_image)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.THIRDERR, errmsg="上传图片错误")
        # 拼接上传图片路径
        news.index_image_url = constants.QINIU_DOMIN_PREFIX + url
    # 设置新闻相关信息
    news.title = title
    news.digest = digest
    news.content = content
    news.category_id = category_id
    try:
        # 事务提交
        mysql_db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        mysql_db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存数据失败")
    # 返回
    return jsonify(errno=RET.OK, errmsg="操作成功")