[scrobbles] Add json log migration script

This commit is contained in:
2024-04-05 11:38:52 -04:00
parent 8776f75d12
commit 2e9d92d9c7
2 changed files with 49 additions and 1 deletions

View File

@ -1,5 +1,5 @@
from books.models import Book
from django.core.management.base import BaseCommand, no_translations
from django.core.management.base import BaseCommand
from scrobbles.models import ScrobbledPage

View File

@ -0,0 +1,48 @@
from django.core.management.base import BaseCommand
from scrobbles.models import Scrobble
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument(
"--commit",
action="store_true",
help="Actually migrate data",
)
def handle(self, *args, **options):
dry_run = True
if options["commit"]:
dry_run = False
scrobbles_with_logs = (
Scrobble.objects.filter(scrobble_log__isnull=False)
.exclude(scrobble_log="")
.exclude(scrobble_log="\n")
)
updated_scrobble_count = 0
for scrobble in scrobbles_with_logs:
if "\n" in scrobble.scrobble_log:
lines = scrobble.scrobble_log.split("\n")
else:
lines = [scrobble.scrobble_log]
old_data = {}
for line_num, line in enumerate(lines):
if line_num == 0 or line == "":
continue
old_data[str(line_num)] = line
if old_data:
scrobble.scrobble_log = {"legacy_data": old_data}
updated_scrobble_count += 1
if not dry_run:
scrobble.save(update_fields="scrobble_log")
else:
print(
f"Scrobble {scrobble} scrobble_log updated to {old_data}"
)
print(f"Migrated scrobble logs for {updated_scrobble_count} scrobbles")