keep comment dates (created / modified) when duplicating (fixes #12)
authorraph
Mon, 04 Jan 2010 10:38:09 +0100
changeset 72 b0c777412d0a
parent 71 a865a5d0809a
child 73 2715863b98dc
keep comment dates (created / modified) when duplicating (fixes #12)
src/cm/models.py
--- a/src/cm/models.py	Tue Dec 22 09:39:43 2009 +0100
+++ b/src/cm/models.py	Mon Jan 04 10:38:09 2010 +0100
@@ -22,8 +22,7 @@
 from tagging.fields import TagField
 import pickle
 from django.db import connection
-
-
+from datetime import datetime
 
 class TextManager(Manager):
     def create_text(self, title, format, content, note, name, email, tags, user=None, state='approved', **kwargs):
@@ -163,7 +162,7 @@
                         reply_to = None
                         if c.reply_to:                            
                             reply_to = old_comment_map[c.reply_to.id]  
-                        c2 = Comment.objects.duplicate(c, duplicate_text_version, reply_to)
+                        c2 = Comment.objects.duplicate(c, duplicate_text_version, reply_to, keep_dates=True)
                         old_comment_map[old_id] = c2
                         break
                  
@@ -237,7 +236,7 @@
             tomodify_comments, toremove_comments = compute_new_comment_positions(self.content, self.format, new_content, new_format, comments)
             #print "tomodify_comments",len(tomodify_comments)
             #print "toremove_comments",len(toremove_comments)
-            [comment.save() for comment in tomodify_comments]
+            [comment.save(keep_dates=True) for comment in tomodify_comments]
             [comment.delete() for comment in toremove_comments]
         self.title = new_title
         if new_tags:
@@ -250,18 +249,18 @@
         
 class CommentManager(Manager):
     
-    def duplicate(self, comment, text_version, reply_to=None):
+    def duplicate(self, comment, text_version, reply_to=None, keep_dates=False):
         comment.id = None
         comment.text_version = text_version
         if reply_to:
             comment.reply_to = reply_to
         self.update_keys(comment)
-        comment.save()
+        comment.save(keep_dates=keep_dates)
         return comment
     
 class Comment(PermanentModel, AuthorModel):
-    modified = models.DateTimeField(auto_now=True)
-    created = models.DateTimeField(auto_now_add=True)
+    modified = models.DateTimeField()
+    created = models.DateTimeField()
 
     text_version = models.ForeignKey("TextVersion")
 
@@ -283,6 +282,14 @@
 
     objects = CommentManager()
     
+    def save(self, force_insert=False, force_update=False, keep_dates=False):
+        if not keep_dates:
+            now = datetime.now()
+            if not self.id: 
+                self.created = now  
+            self.modified = now 
+        super(PermanentModel, self).save() 
+            
     def __unicode__(self):
         return '<%d> %s' % (self.id, self.title)