redo import for user

This commit is contained in:
Your Name 2023-01-12 14:00:28 -05:00
parent f564508a64
commit 5274614294
2 changed files with 39 additions and 1 deletions

View file

@ -67,6 +67,23 @@ class DoubanImporter:
self.user.preference.import_status["douban_failed"] = self.failed
self.user.preference.save(update_fields=["import_status"])
@classmethod
def reset(cls, user):
user.preference.import_status["douban_pending"] = 0
user.preference.save(update_fields=["import_status"])
@classmethod
def redo(cls, user):
file = user.preference.import_status["douban_file"]
imp = cls(
user,
user.preference.import_status["douban_visibility"],
user.preference.import_status["douban_mode"],
)
imp.file = file
jid = f"Douban_{user.id}_{os.path.basename(file)}_redo"
django_rq.get_queue("import").enqueue(imp.import_from_file_task, job_id=jid)
def import_from_file(self, uploaded_file):
try:
wb = openpyxl.open(
@ -88,7 +105,6 @@ class DoubanImporter:
)
except Exception:
return False
# self.import_from_file_task(file, user, visibility)
return True
mark_sheet_config = {

View file

@ -1,6 +1,8 @@
from django.core.management.base import BaseCommand
import pprint
from journal.models import *
from journal.importers.douban import DoubanImporter
from users.models import User
class Command(BaseCommand):
@ -12,6 +14,16 @@ class Command(BaseCommand):
action="store_true",
help="purge invalid data (visibility=99)",
)
parser.add_argument(
"--douban-import-redo",
action="store",
help="reimport for user id",
)
parser.add_argument(
"--douban-import-reset",
action="store",
help="reset for user id",
)
def handle(self, *args, **options):
if options["cleanup"]:
@ -20,4 +32,14 @@ class Command(BaseCommand):
self.stdout.write(f"Cleaning up {cls}...")
cls.objects.filter(visibility=99).delete()
if options["douban_import_redo"]:
user = User.objects.get(pk=options["douban_import_redo"])
self.stdout.write(f"Redo import for {user}...")
DoubanImporter.redo(user)
if options["douban_import_reset"]:
user = User.objects.get(pk=options["douban_import_reset"])
self.stdout.write(f"Reset import for {user}...")
DoubanImporter.reset(user)
self.stdout.write(self.style.SUCCESS(f"Done."))