Clean up extra metadata rows

This commit is contained in:
tcely 2025-05-11 08:16:53 -04:00 committed by GitHub
parent cb36f44235
commit af14930a07
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,6 +2,7 @@ from functools import partial
from pathlib import Path from pathlib import Path
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from django.conf import settings from django.conf import settings
from django.db import IntegrityError
from django.db.models.signals import pre_save, post_save, pre_delete, post_delete from django.db.models.signals import pre_save, post_save, pre_delete, post_delete
from django.db.transaction import on_commit from django.db.transaction import on_commit
from django.dispatch import receiver from django.dispatch import receiver
@ -439,9 +440,20 @@ def media_post_delete(sender, instance, **kwargs):
skipped_media.skip = True skipped_media.skip = True
skipped_media.manual_skip = True skipped_media.manual_skip = True
skipped_media.save() skipped_media.save()
Metadata.objects.filter( # Re-use the old metadata if it exists
instance_qs = Metadata.objects.filter(
media__isnull=True, media__isnull=True,
site=old_metadata.get(site_field) or 'Youtube', site=old_metadata.get(site_field) or 'Youtube',
key=skipped_media.key, key=skipped_media.key,
).update(media=skipped_media) )
try:
instance_qs.update(media=skipped_media)
except IntegrityError:
# Delete the new metadata
Metadata.objects.filter(media=skipped_media).delete()
try:
instance_qs.update(media=skipped_media)
except IntegrityError:
# Delete the old metadata if it still failed
instance_qs.delete()