# HG changeset patch # User raph # Date 1262597889 -3600 # Node ID b0c777412d0a17b54e34ff662c4c6de94fe3bf22 # Parent a865a5d0809af28c394db1c485b3090da438606b keep comment dates (created / modified) when duplicating (fixes #12) diff -r a865a5d0809a -r b0c777412d0a 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)