src/cm/models.py
changeset 103 61fd17f9ab78
parent 72 b0c777412d0a
child 130 f257ad33bed5
--- a/src/cm/models.py	Wed Jan 13 18:15:21 2010 +0100
+++ b/src/cm/models.py	Wed Jan 20 20:43:38 2010 +0100
@@ -123,12 +123,12 @@
         new_text_version = TextVersion.objects.duplicate(text_version, True)
         return new_text_version
         
-    def edit(self, new_title, new_format, new_content, new_tags=None, new_note=None, keep_comments=True, new_version=True):
+    def edit(self, new_title, new_format, new_content, new_tags=None, new_note=None, keep_comments=True, cancel_modified_scopes=True, new_version=True):
         text_version = self.get_latest_version()
             
         if new_version:        
             text_version = TextVersion.objects.duplicate(text_version, keep_comments)
-        text_version.edit(new_title, new_format, new_content, new_tags, new_note, keep_comments)        
+        text_version.edit(new_title, new_format, new_content, new_tags, new_note, keep_comments, cancel_modified_scopes)        
         return text_version 
         
     def __unicode__(self):
@@ -186,8 +186,7 @@
     objects = TextVersionManager()
     
     def get_content(self, format='html'):
-        converted_content = pandoc_convert(self.content, self.format, format)
-        return converted_content 
+        return pandoc_convert(self.content, self.format, format)
 
 #    def _get_comments(self, user = None, filter_reply = 0):        
 #        """
@@ -228,16 +227,23 @@
     def __unicode__(self):
         return '<%d> %s' % (self.id, self.title)    
 
-    def edit(self, new_title, new_format, new_content, new_tags=None, new_note=None, keep_comments=True): # TODO : tags
+    def edit(self, new_title, new_format, new_content, new_tags=None, new_note=None, keep_comments=True, cancel_modified_scopes=True): 
         if not keep_comments :
             self.comment_set.all().delete()
         elif self.content != new_content or new_format != self.format:
             comments = self.get_comments() ;
             tomodify_comments, toremove_comments = compute_new_comment_positions(self.content, self.format, new_content, new_format, comments)
-            #print "tomodify_comments",len(tomodify_comments)
+            #print "tomodify_comments"
+            #print tomodify_comments
             #print "toremove_comments",len(toremove_comments)
             [comment.save(keep_dates=True) for comment in tomodify_comments]
-            [comment.delete() for comment in toremove_comments]
+            if cancel_modified_scopes :
+                [comment.remove_scope() for comment in toremove_comments]
+            else :
+                [comment.delete() for comment in toremove_comments]
+                
+        #TODO: RBE: recompute same text comments links 
+
         self.title = new_title
         if new_tags:
             self.tags = new_tags
@@ -307,6 +313,11 @@
                 return self.reply_to.is_thread_full_visible(own_user)
         return False
                
+    def is_scope_removed(self):
+        #when scope is "removed" we will have 
+        #self.start_wrapper == self.end_wrapper == self.start_offset == self.end_offset == -1
+        return (self.start_wrapper == -1)  
+               
     def top_comment(self):
         if self.reply_to == None :
             return self
@@ -323,7 +334,11 @@
         PermanentModel.delete(self)
         # delete replies
         [c.delete() for c in self.comment_set.all()]
-    
+        
+    def remove_scope(self):
+        self.start_wrapper = self.end_wrapper = self.start_offset = self.end_offset = -1
+        self.save()
+        
 # http://docs.djangoproject.com/en/dev/topics/files/#topics-files
 
 # default conf values