diff -r dda94db1149a -r 61fd17f9ab78 src/cm/models.py --- 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