From ba0678a7229fd5a87f8e0af10eb52f4549e64bbb Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Mon, 14 Sep 2026 06:47:38 +0800 Subject: [PATCH] =?UTF-8?q?refactor(core):=20=E6=96=87=E6=A1=A3=E7=B3=BB?= =?UTF-8?q?=E5=88=97=E7=9B=AE=E5=BD=95=E6=9F=A5=E8=AF=A2=E6=94=B6=E6=95=9B?= =?UTF-8?q?=E8=BF=9B=20DocManager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit core/views.py 的 GetSerieDirectory 分支改用 DocManager.GetSerie / 新增的 ListDocumentsBySerie,移除视图内局部 import 与裸 ORM;doc/manager.py 新增 ListDocumentsBySerie(DocSerieUUID) 查询集方法。 注:core/views.py 同时携带此前工作区已有的 Viper/Venom 子域登记(SUBDOMAIN_CONFIG 两条),随本文件一并提交。 --- gvsds/apps/core/views.py | 14 +++++++------- gvsds/apps/doc/manager.py | 5 +++++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/gvsds/apps/core/views.py b/gvsds/apps/core/views.py index e6cd0c9c..c506e6a0 100644 --- a/gvsds/apps/core/views.py +++ b/gvsds/apps/core/views.py @@ -64,6 +64,10 @@ SUBDOMAIN_CONFIG = { 'unclear': {'dir': 'Unclear', 'root_is_index': True}, 'old2': {'dir': 'Olds/2', 'root_is_index': True, 'base': 'Olds/2/_base'}, 'old3': {'dir': 'Olds/3', 'root_is_index': True, 'base': 'Olds/3/_base'}, + # Viper 语言官网(Vue 产物在 TempLate/Viper;venom 由 Main.py STATIC_SITES 直接静态托管, + # 此处登记仅为 dev server / 兜底一致) + 'viper': {'dir': 'Viper', 'root_is_index': True}, + 'venom': {'dir': 'Venom', 'root_is_index': True}, } @@ -175,13 +179,9 @@ def _doc_api(file_path): }) if action == 'GetSerieDirectory': - from gvsds.apps.doc.models import CommunityDocument, CommunitySeries - try: - serie = CommunitySeries.objects.get(DocSerieUUID=uuid_bytes) - except CommunitySeries.DoesNotExist: - serie = None + serie = DocManager.GetSerie(uuid_bytes) if serie is not None: - docs = CommunityDocument.objects.filter(DocSerieUUID=uuid_bytes) + docs = DocManager.ListDocumentsBySerie(uuid_bytes) chapters = [ { 'id': UUIDObj(d.DocUUID).str.replace('-', ''), @@ -201,7 +201,7 @@ def _doc_api(file_path): return JsonResponse({'error': 'not_found'}, status=404) chapters = [] if doc.DocSerieUUID: - serie_docs = CommunityDocument.objects.filter(DocSerieUUID=doc.DocSerieUUID) + serie_docs = DocManager.ListDocumentsBySerie(doc.DocSerieUUID) chapters = [ { 'id': UUIDObj(d.DocUUID).str.replace('-', ''), diff --git a/gvsds/apps/doc/manager.py b/gvsds/apps/doc/manager.py index d645b2ea..0fe4c70d 100644 --- a/gvsds/apps/doc/manager.py +++ b/gvsds/apps/doc/manager.py @@ -149,6 +149,11 @@ class DocManager: qs = qs.filter(DocSerieUUID=UUIDObj(DocSerieUUID).bytes) return qs + @staticmethod + def ListDocumentsBySerie(DocSerieUUID): + """系列下的文档查询集(DocSerieUUID 支持 bytes/UUIDObj/str)""" + return CommunityDocument.objects.filter(DocSerieUUID=UUIDObj(DocSerieUUID).bytes) + @staticmethod def QuerySeries(Keyword=''): """系列查询集——按名称模糊过滤"""