diff options
Diffstat (limited to 'archaeological_operations/models.py')
| -rw-r--r-- | archaeological_operations/models.py | 29 | 
1 files changed, 19 insertions, 10 deletions
| diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index c8c291752..4a900c276 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -557,14 +557,6 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,      def is_active(self):          return not bool(self.end_date) -    def save(self, *args, **kwargs): -        # put a default year if start_date is defined -        if self.start_date and not self.year: -            self.year = self.start_date.year -        if self.operation_code is None: -            self.operation_code = self.get_available_operation_code(self.year) -        return super(Operation, self).save(*args, **kwargs) -      @property      def nb_parcels(self):          _(u"Number of parcels") @@ -767,6 +759,14 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,          res['mode'] = u" ; ".join([str(m) for m in mode(finds)])          return res +    def save(self, *args, **kwargs): +        # put a default year if start_date is defined +        if self.start_date and not self.year: +            self.year = self.start_date.year +        if self.operation_code is None: +            self.operation_code = self.get_available_operation_code(self.year) +        return super(Operation, self).save(*args, **kwargs) +  m2m_changed.connect(cached_label_changed, sender=Operation.towns.through) @@ -1193,10 +1193,10 @@ class Parcel(LightHistorizedItem):      associated_file = models.ForeignKey(          'archaeological_files.File',          related_name='parcels', verbose_name=_(u"File"), -        blank=True, null=True) +        blank=True, null=True, on_delete=models.CASCADE)      operation = models.ForeignKey(          Operation, related_name='parcels', blank=True, null=True, -        verbose_name=_(u"Operation")) +        verbose_name=_(u"Operation"), on_delete=models.CASCADE)      year = models.IntegerField(_(u"Year"), blank=True, null=True)      town = models.ForeignKey(Town, related_name='parcels',                               verbose_name=_(u"Town")) @@ -1356,6 +1356,13 @@ def parcel_post_save(sender, **kwargs):      if not kwargs['instance']:          return      parcel = kwargs['instance'] +    created = kwargs.get('created', None) + +    # remove when the parcel is linked to nothing +    if not getattr(parcel, '_updated_id', None) and not created and not \ +            parcel.operation and not parcel.associated_file: +        parcel.delete() +        return      updated = False      if not parcel.external_id or parcel.auto_external_id: @@ -1365,6 +1372,7 @@ def parcel_post_save(sender, **kwargs):              parcel.auto_external_id = True              parcel.external_id = external_id      if updated: +        parcel._updated_id = True          parcel.save()          return @@ -1378,6 +1386,7 @@ def parcel_post_save(sender, **kwargs):      if parcel.operation and parcel.associated_file:          # parcels are copied between files and operations          parcel.copy_to_operation() +  post_save.connect(parcel_post_save, sender=Parcel) | 
