diff --git a/journal/importers/douban.py b/journal/importers/douban.py index d6639dce..e0f33b97 100644 --- a/journal/importers/douban.py +++ b/journal/importers/douban.py @@ -47,16 +47,19 @@ class DoubanImporter: failed = [] user = None visibility = 0 + mode = 0 file = None - def __init__(self, user, visibility): + def __init__(self, user, visibility, mode): self.user = user self.visibility = visibility + self.mode = mode def update_user_import_status(self, status): self.user.preference.import_status["douban_pending"] = status self.user.preference.import_status["douban_file"] = self.file self.user.preference.import_status["douban_visibility"] = self.visibility + self.user.preference.import_status["douban_mode"] = self.mode self.user.preference.import_status["douban_total"] = self.total self.user.preference.import_status["douban_processed"] = self.processed self.user.preference.import_status["douban_skipped"] = self.skipped @@ -220,7 +223,7 @@ class DoubanImporter: print(f"{self.user} | match/fetch {url} failed") return mark = Mark(self.user, item) - if ( + if self.mode == 1 and ( mark.shelf_type == shelf_type or mark.shelf_type == ShelfType.COMPLETE or ( @@ -319,7 +322,10 @@ class DoubanImporter: if not item: print(f"{prefix} match/fetch {url} failed") return - if Review.objects.filter(owner=self.user, item=item).exists(): + if ( + self.mode == 1 + and Review.objects.filter(owner=self.user, item=item).exists() + ): return 2 content = re.sub( r'([^<]+)', r"\1", content diff --git a/users/data.py b/users/data.py index b2abd33d..baae3528 100644 --- a/users/data.py +++ b/users/data.py @@ -147,7 +147,11 @@ def import_goodreads(request): @login_required def import_douban(request): if request.method == "POST": - importer = DoubanImporter(request.user, request.POST.get("visibility")) + importer = DoubanImporter( + request.user, + int(request.POST.get("visibility")), + int(request.POST.get("import_mode")), + ) if importer.import_from_file(request.FILES["file"]): messages.add_message(request, messages.INFO, _("文件上传成功,等待后台导入。")) else: diff --git a/users/templates/users/data.html b/users/templates/users/data.html index 707a9b04..206099a7 100644 --- a/users/templates/users/data.html +++ b/users/templates/users/data.html @@ -42,14 +42,27 @@