From afbee67e774a53dad4631cebcd675be5081334b7 Mon Sep 17 00:00:00 2001 From: yangjian Date: Fri, 17 Mar 2023 10:49:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8E=B7=E5=8F=96=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=B8=8A=E4=B8=8B=E7=AF=87=E6=96=87=E6=A1=A3=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app_api/views.py | 2 ++ app_doc/utils.py | 33 ++++++++------------------------- 2 files changed, 10 insertions(+), 25 deletions(-) diff --git a/app_api/views.py b/app_api/views.py index 4038c75..444707b 100644 --- a/app_api/views.py +++ b/app_api/views.py @@ -354,11 +354,13 @@ def get_doc_previous_next(request): previous_doc = find_doc_previous(did) previous_doc_id = previous_doc.id except Exception as e: + logger.error("获取上一篇文档异常") previous_doc_id = None try: next_doc = find_doc_next(did) next_doc_id = next_doc.id except Exception as e: + logger.error("获取下一篇文档异常") next_doc_id = None return JsonResponse({'status': True, 'data': {'next':next_doc_id,'previous':previous_doc_id}}) except Exception as e: diff --git a/app_doc/utils.py b/app_doc/utils.py index 30d5e89..191428b 100644 --- a/app_doc/utils.py +++ b/app_doc/utils.py @@ -3,26 +3,17 @@ from app_doc.models import Doc,Project # 查找文档的下级文档 def find_doc_next(doc_id): doc = Doc.objects.get(id=int(doc_id)) # 当前文档 - # 获取文集的文档默认排序方式 - sort = Project.objects.get(id=doc.top_doc).sort_value # 获取文档的下级文档 subdoc = Doc.objects.filter(parent_doc=doc.id,top_doc=doc.top_doc, status=1) # 如果存在子级文档,那么下一篇文档为第一篇子级文档 if subdoc.count() != 0: - if sort == 1: - next_doc = subdoc.order_by('-create_time')[0] - else: - next_doc = subdoc.order_by('sort')[0] + next_doc = subdoc.order_by('sort')[0] - # 如果不存在子级文档 + # 如果不存在子级文档,获取兄弟文档 else: - # 获取兄弟文档 - if sort == 1: - sibling_docs = Doc.objects.filter(parent_doc=doc.parent_doc,top_doc=doc.top_doc, status=1).order_by('-create_time') - else: - sibling_docs = Doc.objects.filter(parent_doc=doc.parent_doc,top_doc=doc.top_doc, status=1).order_by('sort','create_time') + sibling_docs = Doc.objects.filter(parent_doc=doc.parent_doc,top_doc=doc.top_doc, status=1).order_by('sort','create_time') sibling_list = [d.id for d in sibling_docs] # 如果当前文档不是兄弟文档中的最后一个,那么下一篇文档是当前文档的下一个兄弟文档 if sibling_list.index(doc.id) != len(sibling_list) - 1: @@ -34,21 +25,17 @@ def find_doc_next(doc_id): if doc.parent_doc == 0: next_doc = None else: - next_doc = find_doc_parent_sibling(doc.parent_doc,sort=sort) + next_doc = find_doc_parent_sibling(doc.parent_doc) return next_doc # 查找文档的上级文档的同级文档(用于遍历获取文档的下一篇文档) -def find_doc_parent_sibling(doc_id,sort): +def find_doc_parent_sibling(doc_id): doc = Doc.objects.get(id=int(doc_id)) # 当前文档 # 获取兄弟文档 - if sort == 1: - sibling_docs = Doc.objects.filter(parent_doc=doc.parent_doc, top_doc=doc.top_doc, status=1).order_by( - '-create_time') - else: - sibling_docs = Doc.objects.filter(parent_doc=doc.parent_doc, top_doc=doc.top_doc, status=1).order_by('sort', + sibling_docs = Doc.objects.filter(parent_doc=doc.parent_doc, top_doc=doc.top_doc, status=1).order_by('sort', 'create_time') sibling_list = [d.id for d in sibling_docs] # 如果当前文档不是兄弟文档中的最后一个,那么下一篇文档是当前文档的下一个兄弟文档 @@ -69,14 +56,10 @@ def find_doc_parent_sibling(doc_id,sort): def find_doc_previous(doc_id): doc = Doc.objects.get(id=int(doc_id)) # 当前文档 # 获取文集的文档默认排序方式 - sort = Project.objects.get(id=doc.top_doc).sort_value + sort = Project.objects.get(id=doc.top_doc) # 获取文档的兄弟文档 # 获取兄弟文档 - if sort == 1: - sibling_docs = Doc.objects.filter(parent_doc=doc.parent_doc, top_doc=doc.top_doc, status=1).order_by( - '-create_time') - else: - sibling_docs = Doc.objects.filter(parent_doc=doc.parent_doc, top_doc=doc.top_doc, status=1).order_by('sort', + sibling_docs = Doc.objects.filter(parent_doc=doc.parent_doc, top_doc=doc.top_doc, status=1).order_by('sort', 'create_time') sibling_list = [d.id for d in sibling_docs]