123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # -*- coding: utf-8 -*-
- from django.core.exceptions import ObjectDoesNotExist
- from django.db.models.signals import post_delete, pre_delete
- from django.dispatch import receiver
- from iepy.data import models
- @receiver(pre_delete, sender=models.EntityOccurrence)
- def pre_eo_delete(sender, instance, **kwargs):
- instance_segments = list(instance.segments.all())
- if hasattr(sender, "_segments_to_check"):
- sender._segments_to_check[instance.id] = instance_segments
- else:
- sender._segments_to_check = {instance.id: instance_segments}
- @receiver(post_delete, sender=models.EntityOccurrence)
- def on_eo_delete(sender, instance, **kwargs):
- segments_to_check = sender._segments_to_check.get(instance.id)
- if segments_to_check:
- for segment in segments_to_check:
- eos = list(segment.get_entity_occurrences())
- if len(eos) < 2:
- segment.delete()
- @receiver(pre_delete, sender=models.GazetteItem)
- def pre_gazette_delete(sender, instance, **kwargs):
- to_delete = list(instance.entity_set.all())
- sender.to_delete = to_delete
- @receiver(post_delete, sender=models.GazetteItem)
- def on_gazette_delete(sender, instance, **kwargs):
- if hasattr(sender, "to_delete"):
- for entity in sender.to_delete:
- entity.delete()
- @receiver(post_delete, sender=models.Entity)
- def on_entity_delete(sender, instance, **kwargs):
- if instance.gazette:
- instance.gazette.delete()
- @receiver(pre_delete, sender=models.IEDocument)
- def pre_iedocument_delete(sender, instance, **kwargs):
- to_delete = [instance.metadata]
- sender.to_delete = to_delete
- @receiver(post_delete, sender=models.IEDocument)
- def on_iedocument_delete(sender, instance, **kwargs):
- if hasattr(sender, "to_delete"):
- for item in sender.to_delete:
- item.delete()
|