From af14930a077decfa1f76fabd5629a54ba460a16d Mon Sep 17 00:00:00 2001 From: tcely Date: Sun, 11 May 2025 08:16:53 -0400 Subject: [PATCH] Clean up extra metadata rows --- tubesync/sync/signals.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tubesync/sync/signals.py b/tubesync/sync/signals.py index 657622ac..62f104bb 100644 --- a/tubesync/sync/signals.py +++ b/tubesync/sync/signals.py @@ -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()