diff --git a/lohrothek/core/models.py b/lohrothek/core/models.py index c0f83c61e2fe827014f35e93f9482ba97a7f1cf1..8b8d2108740dc08170ddc33efe8a067bf50bec74 100644 --- a/lohrothek/core/models.py +++ b/lohrothek/core/models.py @@ -143,7 +143,12 @@ class SoftDeleteManager(models.Manager): class SoftDeleteModel(models.Model): """add this to your class to get Soft-Delete-Capability""" + # By default Model.objects will return only non-deleted objects + # If we explicit have to look for deleted objects, use `objects_all` + # Example `Episode.objects_with_soft_deleted.filter(...)` + objects = SoftDeleteManager() + objects_with_soft_deleted = models.Manager() admin_objects = models.Manager() deletion_time = models.DateTimeField( "Löschung (Datum/Uhrzeit)", null=True, blank=True @@ -161,7 +166,16 @@ class SoftDeleteModel(models.Model): def hard_delete(self): """call this if you want the object actual removed from the database""" - super().delete(self) + super(SoftDeleteModel, self).delete() + + def restore(self): + """restore a soft-deleted object""" + self.deletion_time = None + self.save() + + @property + def is_deleted(self): + return self.deletion_time is not None class Profile(models.Model):