Merge pull request #1033 from tcely/patch-3
Some checks failed
CI / info (push) Has been cancelled
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.8) (push) Has been cancelled
CI / test (3.9) (push) Has been cancelled
CI / containerise (push) Has been cancelled

Clean up extra metadata rows
This commit is contained in:
meeb 2025-05-13 17:13:46 +10:00 committed by GitHub
commit 1064474ad7
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 tempfile import TemporaryDirectory
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.transaction import on_commit
from django.dispatch import receiver
@ -439,9 +440,20 @@ def media_post_delete(sender, instance, **kwargs):
skipped_media.skip = True
skipped_media.manual_skip = True
skipped_media.save()
Metadata.objects.filter(
# Re-use the old metadata if it exists
instance_qs = Metadata.objects.filter(
media__isnull=True,
site=old_metadata.get(site_field) or 'Youtube',
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()