From fd837f02354e730a425e5992309f6230f2be75b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uro=C5=A1=20Trebec?= Date: Wed, 16 Aug 2006 12:57:20 +0000 Subject: [PATCH] [full-history] * Removed save_last_revision() * signal.pre_delete now uses save_new_revision() * Added "signal_name" check and "pre_delete" processingto save_new_revision() * Fixed BUG from [3588] git-svn-id: http://code.djangoproject.com/svn/django/branches/full-history@3596 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/history/models.py | 45 ++++++-------------------------- 1 file changed, 8 insertions(+), 37 deletions(-) diff --git a/django/contrib/history/models.py b/django/contrib/history/models.py index c0aa877367..e729be2595 100644 --- a/django/contrib/history/models.py +++ b/django/contrib/history/models.py @@ -110,6 +110,7 @@ def _import_models(instance): def save_new_revision(sender, instance, signal, *args, **kwargs): """ Saves a old copy of the record into the History table.""" print "Sender: ",sender + print "Signal: ",kwargs['signal_name'] if instance.__class__.__name__ is 'ChangeLog' or not hasattr(instance, 'History'): print "Not history-enabled class." @@ -123,7 +124,11 @@ def save_new_revision(sender, instance, signal, *args, **kwargs): if _import_models(instance): try: - if instance.id: + if kwargs['signal_name'] is 'pre_delete': + old = instance + log = ChangeLog(parent=instance, comment="Object deleted. Last revision.") + print "Log created." + elif kwargs['signal_name'] is 'pre_save' and instance.id: old = getattr(m, model['name']).objects.filter(pk=instance.id)[0] log = ChangeLog(parent=instance, comment="Update") print "Instance has an ID." @@ -142,7 +147,7 @@ def save_new_revision(sender, instance, signal, *args, **kwargs): print "Old: ",old print "Instance: ",instance.id #print "Test: ",getattr(instance, 'Admin').date_hierarchy - print "Log: ",log + print "Log: ",log.change_time log.object = Pickle.dumps(old, protocol=0) log.save() @@ -150,38 +155,4 @@ def save_new_revision(sender, instance, signal, *args, **kwargs): print "New change saved." dispatcher.connect( save_new_revision, signal=signals.pre_save ) - -########################### -# Pre-delete signal catch # -########################### - -def save_last_revision(sender, instance, signal, *args, **kwargs): - """ Saves the last copy of the record when the record is deleted.""" - print "Sender: ",sender - - if instance.__class__.__name__ is 'ChangeLog' or not hasattr(instance, 'History'): - print "Not history-enabled class." - return 0 - - #instance_name = instance.__class__.__name__ - #print instance_name - m = None - old = None - log = None - - if _import_models(instance): - try: - old = instance - log = ChangeLog(parent=instance, comment="Object deleted. Last revision.") - print "Log created." - except: - return 1 - - try: - log.object = Pickle.dumps(old, protocol=0) - log.save() - print "Last change saved." - except: - print "Failed!" - -dispatcher.connect( save_last_revision, signal=signals.pre_delete ) +dispatcher.connect( save_new_revision, signal=signals.pre_delete )