70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
import datetime
|
||
import os
|
||
import time
|
||
|
||
from flask import Blueprint, request
|
||
|
||
from Certificate.PdfCertificate import CertificateGenerator
|
||
from Certificate.scripts.common import get_certificate_data
|
||
from Certificate.scripts.path_tool import get_gen_report_path
|
||
from Certificate.db import upload_pdf
|
||
from common.scripts import verify_token
|
||
|
||
certificate_route = Blueprint('certificate', __name__)
|
||
|
||
|
||
@certificate_route.route('/generate_certificate', methods=['POST'])
|
||
@verify_token
|
||
def gen_certificate():
|
||
"""
|
||
描述
|
||
Parameters:
|
||
company str 企业名称
|
||
cid str 企业ID
|
||
rid str 评价ID
|
||
Returns:
|
||
result: 证书FileID
|
||
"""
|
||
|
||
def certificate(param):
|
||
"""
|
||
生成证书pdf
|
||
Parameters:
|
||
param: dict 证书所需数据
|
||
Returns:
|
||
res: 处理成功返回报告FileID;处理失败返回False
|
||
"""
|
||
# 生成PDF报告文件,以时间戳命名,临时存储
|
||
certificate_file_name = '{}_{}.pdf'.format(req_body['company'], datetime.datetime.now().strftime('%Y%m%d'))
|
||
pdf_report = CertificateGenerator(name=certificate_file_name, text_data=param)
|
||
pdf_report.gen()
|
||
|
||
return certificate_file_name
|
||
|
||
def save_certificate(param):
|
||
"""
|
||
保存证书pdf
|
||
Parameters:
|
||
param: 证书pdf
|
||
Returns:
|
||
res: 处理成功返回报告FileID;处理失败返回False
|
||
"""
|
||
# 保存PDF报告文件,删除临时存储的报告
|
||
file_id = upload_pdf(param)
|
||
certificate_path = get_gen_report_path(name=param)
|
||
os.remove(certificate_path)
|
||
|
||
# 保存PDF报告成功,返回FileID;保存PDF报告文件失败,返回False
|
||
return file_id if file_id else False
|
||
|
||
# Parameters
|
||
req_body = request.json # 接收的json格式请求体
|
||
text_data = get_certificate_data(req_body)
|
||
certifice_pdf = certificate(text_data)
|
||
result = save_certificate(certifice_pdf)
|
||
|
||
if result is not False:
|
||
return {"info": "生成证书成功", "result": {"FileID": result}}, 200
|
||
else:
|
||
return {"info": "生成证书失败"}, 210
|