from flask import flash, render_template, session, request, redirect, url_for, jsonify from admin.patentinfo import * from admin.paperinfo import * from admin.researchtopic import * from flask import current_app as app import os from hashlib import md5 from pathlib import Path from datetime import datetime # 设置允许的文件格式 ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'bmp']) # 判断文件格式 def allowed_file (filename): return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS # --------------------论文信息管理------------------------------# @app.route('/paperinfomanage') def paperinfomanage (): if 'username' in session: results = loadallpapers() return render_template('admin/a_paper_manage.html', results=results) else: flash('登录失败, 请重新登录') return redirect(url_for('adminlogin')) # 添加论文 @app.route('/newpaperinfo') def newpaperinfo (): if 'username' in session: researchtopic = loadAllResearchTopic() return render_template('admin/a_paper_edit.html', researchtopic=researchtopic, paperinfo=None, status="add") else: flash('登录失败, 请重新登录') return redirect(url_for('adminlogin')) # 查看论文 @app.route('/loadpaperinfoforedit/', methods=['POST', 'GET']) def loadpaperinfoforedit (pid): if 'username' in session: researchtopic = loadAllResearchTopic() paperinfo = loadPaperbyID(pid) return render_template('admin/a_paper_edit.html', researchtopic=researchtopic, paperinfo=paperinfo, status="edit") else: flash('登录失败, 请重新登录') return redirect(url_for('adminlogin')) # PaperID, RTID, PTitle, PAbstract, PImage, PContent, PubType, Publisher, Pages, PubDate, Authors, PubLink, ArxivLink, CodeLink, PubStatus, PStatus # 编辑论文信息 @app.route('/editpaperinfo.do', methods=['POST']) def editpaperinfo (): if request.method == 'POST': status = request.form['lbl_status'] rtid = request.form.get('txt_RTID') title = request.form['txt_PTitle'] abstract = request.form['txt_PAbstract'] pimage = request.form['txt_PImage'] content = request.form['txt_PContent'] pubtype = request.form['txt_PubType'] publisher = request.form['txt_Publisher'] pages = request.form['txt_Pages'] pubyear = request.form['txt_PubYear'] authors = request.form['txt_Authors'] publink = request.form['txt_PubLink'] arxivlink = request.form['txt_ArxivLink'] codelink = request.form['txt_CodeLink'] pubstatus = request.form.get('txt_PubStatus') pstatus = request.form.get('txt_PStatus') # print("摘要:"+abstract) # print("内容:"+ content) f = request.files['file_proimg'] proimg = "" if (f != None and f.filename != ""): proimg = uploadimage(f) if proimg == "": proimg = pimage if (status == 'add'): data = [rtid, title, abstract, proimg, content, pubtype, publisher, pages, pubyear, authors, publink, arxivlink, codelink, pubstatus, pstatus] i, msg = add_paperinfo(data) if i > 0: flash('论文信息添加成功!') else: flash('论文信息添加失败!%s' % str(msg)) elif (status == 'edit'): pid = request.form['lbl_PaperID'] data = [rtid, title, abstract, proimg, content, pubtype, publisher, pages, pubyear, authors, publink, arxivlink, codelink, pubstatus, pstatus, pid] i, msg = update_paperinfo(data) if i > 0: flash('论文信息修改成功!') else: flash('论文信息修改失败!%s' % str(msg)) return redirect(url_for('paperinfomanage')) def uploadimage (f): # f = request.files['file_proimg'] if not (f and allowed_file(f.filename)): return "False" # jsonify({"error": 1001, "msg": """请检查上传的图片类型,仅限于png、PNG、jpg、JPG、bmp"}) digest = md5(f.filename.encode("utf-8")).hexdigest() suffix = Path(f.filename).suffix images_name = datetime.now().strftime('%Y%m%d%H%M%S') + f'{digest}{suffix}' # images_name = datetime.now().strftime('%Y%m%d%H%M%S') + '11' file_path = os.path.join(app.config['UPLOAD_FOLDER_IMG_Paper'], images_name) f.save(file_path) return file_path # "Success" #jsonify(file_path) # 查看论文 @app.route('/viewpaperinfo/', methods=['POST', 'GET']) def viewpaperinfo (pid): if 'username' in session: paperinfo = loadPaperwithRTNamebyID(pid) return render_template('admin/a_paper_view.html', paperinfo=paperinfo) else: flash('登录失败, 请重新登录') return redirect(url_for('adminlogin')) # 删除论文信息 @app.route('/delpaperinfo/', methods=['POST']) def delpaperinfo (pid): i, msg = del_Paper(pid) if i > 0: flash('论文信息删除成功!') else: flash('论文信息删除失败!%s' % str(msg)) return redirect(url_for('paperinfomanage'))