Re-work the re-use of old metadata after deletion
This commit is contained in:
1 parent
4dc7243972
commit
3c85d5531e
1 file changed
+10
-7
@@ -4,7 +4,7 @@ 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.db.transaction import atomic, on_commit
|
||||
from django.dispatch import receiver
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from background_task.signals import task_failed
|
||||
@@ -433,13 +433,16 @@ def media_post_delete(sender, instance, **kwargs):
|
||||
key=skipped_media.key,
|
||||
)
|
||||
try:
|
||||
instance_qs.update(media=skipped_media)
|
||||
if instance_qs.count():
|
||||
with atomic(durable=False):
|
||||
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
|
||||
with atomic(durable=False):
|
||||
# Delete the new metadata
|
||||
Metadata.objects.filter(media=skipped_media).delete()
|
||||
instance_qs.update(media=skipped_media)
|
||||
finally:
|
||||
# Delete the old metadata, if it wasn't used
|
||||
instance_qs.delete()
|
||||
|
||||
Reference in new issue
Block a user