summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/undelete/models.py
blob: 26c4c5f3b346cad8b7d907db98810f0cb8bb2789 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from datetime import datetime
from django.db import models
from django.utils.translation import ugettext_lazy as _

from undelete.managers import TrashedManager, NonTrashedManager

class TrashableMixin(models.Model):
    trashed_at = models.DateTimeField(_('Trashed'), editable=False, blank=True, null=True)

    objects = NonTrashedManager()
    trash = TrashedManager()

    def delete(self, *args, **kwargs):
        # keyword argument trash has default value True
        trash=kwargs.get('trash', True)
        if not self.trashed_at and trash:
            self.trashed_at = datetime.now()
            self.save()
        else:
            super(TrashableMixin, self).delete(*args, **kwargs)

    def restore(self, commit=True):
        self.trashed_at = None
        if commit:
            self.save()
            
    class Meta:
        abstract = True