Add multiple trash can support, restoring and complete source object manager and queryset method substitution

This commit is contained in:
Roberto Rosario
2012-08-07 01:42:44 -04:00
parent 332156b590
commit c304d1ed27
14 changed files with 288 additions and 34 deletions

View File

@@ -1,15 +1,19 @@
from __future__ import absolute_import
from .models import TrashableModelManager, new_delete_method
from common.querysets import CustomizableQuerySet
from .models import new_delete_method, TrashableQuerySetManager
trashable_models = []
def make_trashable(model):
def make_trashable(model, trash_can):
trashable_models.append(model)
#model.__class__.objects = TrashableModelManager()
#model.__class__._default_manager = TrashableModelManager()
#model.objects = TrashableModelManager()
model.add_to_class('objects', TrashableModelManager())
old_manager = getattr(model, '_default_manager')
model.add_to_class('objects', CustomizableQuerySet.as_manager(TrashableQuerySetManager))
model._default_manager = model.objects
model.add_to_class('trash_passthru', old_manager)
old_delete_method = model.delete
model.delete = new_delete_method(old_delete_method)
#model.add_to_class('is_in_trash', return True)
model.delete = new_delete_method(trash_can, old_delete_method)