Merge pull request #992 from tcely/patch-2
Some checks are pending
CI / info (push) Waiting to run
CI / test (3.10) (push) Waiting to run
CI / test (3.11) (push) Waiting to run
CI / test (3.12) (push) Waiting to run
CI / test (3.8) (push) Waiting to run
CI / test (3.9) (push) Waiting to run
CI / containerise (push) Blocked by required conditions

Use the actual model for data migration
This commit is contained in:
meeb 2025-04-27 17:06:50 +10:00 committed by GitHub
commit 01dee636d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 6 deletions

View File

@ -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

View File

@ -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)
@ -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):