增强文集导出用户验证,优化文集PDF导出只有封面的问题

This commit is contained in:
yangjian 2021-04-26 21:47:38 +08:00
parent 1baceadcfd
commit f08ce79cd6
2 changed files with 15 additions and 4 deletions

View File

@ -5,13 +5,15 @@
# 博客地址zmister.com
# MrDoc文集文档导出相关功能代码
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.utils.translation import gettext_lazy as _
from bs4 import BeautifulSoup
import subprocess
import datetime,time
import re
import os,sys
import shutil
from bs4 import BeautifulSoup
from django.core.wsgi import get_wsgi_application
sys.path.extend([settings.BASE_DIR])
@ -652,9 +654,10 @@ class ReportEPUB():
# 导出PDF
@logger.catch()
class ReportPDF():
def __init__(self,project_id):
def __init__(self,project_id,user_id):
# 查询文集信息
self.pro_id = project_id
self.user_id = user_id
self.editormd_html_str = '''
<!DOCTYPE html>
<html>
@ -667,7 +670,9 @@ class ReportPDF():
<link rel="stylesheet" href="../../static/editor.md/css/editormd.css" />
<link rel="stylesheet" href="../../static/mrdoc/mrdoc-docs.css" />
<script src="../../static/jquery/3.1.1/jquery.min.js"></script>
<script>var iframe_whitelist = []</script>
<script src="../../static/editor.md/lib/marked.min.js"></script>
<script src="../../static/editor.md/lib/purify.min.js"></script>
<script src="../../static/editor.md/lib/prettify.min.js"></script>
<script src="../../static/editor.md/lib/raphael.min.js"></script>
<script src="../../static/editor.md/lib/underscore.min.js"></script>
@ -745,8 +750,13 @@ class ReportPDF():
def work(self):
try:
project = Project.objects.get(pk=self.pro_id)
user = User.objects.get(id=self.user_id)
project = Project.objects.get(pk=self.pro_id,create_user=user)
except ObjectDoesNotExist:
logger.error("查询文集或用户失败")
return False
except:
logger.exception("未知异常")
return False
# 拼接文档的HTML字符串
data = Doc.objects.filter(top_doc=self.pro_id,parent_doc=0).order_by("sort")

View File

@ -2146,7 +2146,8 @@ def genera_project_file(request):
elif report_type in ['pdf']:
try:
report_project = ReportPDF(
project_id=project.id
project_id=project.id,
user_id=request.user.id
).work()
if report_project is False:
return JsonResponse({'status':False,'data':_('生成出错')})