From bfcc6d77fc8b43d103d7b4b0be766178d05fe4a0 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 30 Jan 2026 09:13:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/resm/models.py | 17 ++++++++++------- apps/resm/tasks.py | 4 ++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/apps/resm/models.py b/apps/resm/models.py index e2e48a0..fb7685e 100644 --- a/apps/resm/models.py +++ b/apps/resm/models.py @@ -44,13 +44,16 @@ class Paper(BaseModel): def init_save_dir(self): publication_date = self.publication_date - paper_dir = os.path.join( - settings.BASE_DIR, - "media/papers", - str(publication_date.year), - str(publication_date.month), - str(publication_date.day) - ) + if publication_date is None: + paper_dir = os.path.join(settings.BASE_DIR, "media/papers", "unknown") + else: + paper_dir = os.path.join( + settings.BASE_DIR, + "media/papers", + str(publication_date.year), + str(publication_date.month), + str(publication_date.day) + ) os.makedirs(paper_dir, exist_ok=True) return paper_dir diff --git a/apps/resm/tasks.py b/apps/resm/tasks.py index 4a857f1..a02271f 100644 --- a/apps/resm/tasks.py +++ b/apps/resm/tasks.py @@ -11,7 +11,6 @@ from lxml import etree from celery import current_app from datetime import datetime import random -import time # config.email = "caoqianming@foxmail.com" config.email = "caoqianming@ctc.ac.cn" @@ -320,6 +319,7 @@ def download_pdf(paper_id): paper.fetch_status = 'downloading' paper.save(update_fields=['fetch_status', 'update_time']) msg = "没有下载渠道" + current_from = "" if paper.oa_url: current_from = "oa_url" msg = save_pdf_from_oa_url(paper) @@ -328,7 +328,7 @@ def download_pdf(paper_id): # msg = save_pdf_from_openalex(paper) return msg, current_from finally: - if paper.fetch_status == "downloading": + if paper and paper.fetch_status == "downloading": paper.fetch_status = original_status paper.save(update_fields=['fetch_status', 'update_time'])