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")
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)
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")
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")
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="发布成功,等待审核")
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="操作成功")