From ccf0e98798a9977adc24464576ea05088048316e Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 27 Apr 2025 02:20:33 -0400 Subject: [PATCH 1/3] Use the actual model for data migration --- tubesync/sync/migrations/0032_metadata_transfer.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tubesync/sync/migrations/0032_metadata_transfer.py b/tubesync/sync/migrations/0032_metadata_transfer.py index ce4b8344..f9e3d53f 100644 --- a/tubesync/sync/migrations/0032_metadata_transfer.py +++ b/tubesync/sync/migrations/0032_metadata_transfer.py @@ -2,16 +2,17 @@ from django.db import migrations from common.utils import django_queryset_generator as qs_gen +from sync.models import Media def use_tables(apps, schema_editor): - Media = apps.get_model('sync', 'Media') + #Media = apps.get_model('sync', 'Media') qs = Media.objects.filter(metadata__isnull=False) for media in qs_gen(qs): media.save_to_metadata('migrated', True) def restore_metadata_column(apps, schema_editor): - Media = apps.get_model('sync', 'Media') + #Media = apps.get_model('sync', 'Media') qs = Media.objects.filter(metadata__isnull=False) for media in qs_gen(qs): metadata = media.loaded_metadata From 832799b51b6123cfc4092248ab73a3251d11005f Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 27 Apr 2025 02:31:08 -0400 Subject: [PATCH 2/3] Fix variable scoping --- tubesync/sync/models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tubesync/sync/models.py b/tubesync/sync/models.py index f36695c5..b6695ea4 100644 --- a/tubesync/sync/models.py +++ b/tubesync/sync/models.py @@ -1851,12 +1851,14 @@ class Metadata(models.Model): @atomic(durable=False) def ingest_formats(self, formats=list(), /): + number = 0 for number, format in enumerate(formats, start=1): mdf, created = self.format.get_or_create(site=self.site, key=self.key, number=number) mdf.value = format mdf.save() - # delete any numbers we did not overwrite or create - self.format.filter(site=self.site, key=self.key, number__gt=number).delete() + if number > 0: + # delete any numbers we did not overwrite or create + self.format.filter(site=self.site, key=self.key, number__gt=number).delete() @property def with_formats(self): From cdbdc755cb2d6822031094f6622bd4f5e9eb45e8 Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 27 Apr 2025 03:05:34 -0400 Subject: [PATCH 3/3] Fix order of operations We must look for the value before we set it. --- tubesync/sync/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tubesync/sync/models.py b/tubesync/sync/models.py index b6695ea4..e9f03b8d 100644 --- a/tubesync/sync/models.py +++ b/tubesync/sync/models.py @@ -1144,13 +1144,13 @@ class Media(models.Model): def save_to_metadata(self, key, value, /): data = self.loaded_metadata - data[key] = value - self.ingest_metadata(data) using_new_metadata = self.get_metadata_first_value( ('migrated', '_using_table',), False, arg_dict=data, ) + data[key] = value + self.ingest_metadata(data) if not using_new_metadata: epoch = self.get_metadata_first_value('epoch', arg_dict=data) migrated = dict(migrated=True, epoch=epoch)