diff -r 9b3438382e53 -r fb5b1e6ad179 src/cm/models.py --- a/src/cm/models.py Wed Feb 03 15:42:56 2010 +0100 +++ b/src/cm/models.py Fri Feb 05 12:23:29 2010 +0100 @@ -85,12 +85,10 @@ """ versions = TextVersion.objects.filter(text__exact=self).order_by('-created') # TODO: use new postgresql 8.4 row_number as extra select to do that - for index in xrange(len(versions)): - v = versions[index] - # version_number is 1-based - setattr(v, 'version_number', len(versions) - index) - #for v in versions: - # print v.created,v.id,v.version_number + #for index in xrange(len(versions)): + # v = versions[index] + # # version_number is 1-based + # setattr(v, 'version_number', len(versions) - index) return versions def get_version(self, version_number): @@ -103,10 +101,10 @@ def get_inversed_versions(self): versions = TextVersion.objects.filter(text__exact=self).order_by('created') # TODO: use new postgresql 8.4 row_number as extra select to do that - for index in xrange(len(versions)): - v = versions[index] - # version_number is 1-based - setattr(v, 'version_number', index + 1) + #for index in xrange(len(versions)): + # v = versions[index] + # # version_number is 1-based + # setattr(v, 'version_number', index + 1) return versions def get_versions_number(self): @@ -118,8 +116,10 @@ else: return False - def revert_to_version(self, v_id): - text_version = self.get_version(int(v_id)) + def revert_to_version(self, text_version_key): + text_version = TextVersion.objects.get(key=text_version_key) + if text_version.text != self: + raise Exception('Invalid revert attempt') new_text_version = TextVersion.objects.duplicate(text_version, True) return new_text_version @@ -252,7 +252,22 @@ self.content = new_content self.format = new_format self.save() - + + def get_next_version(self): + other_versions = TextVersion.objects.filter(text__exact=self.text).order_by('created').filter(created__gt=self.created) + return other_versions[0] if other_versions else None + if other_versions: + return + else: + return None + + def get_previous_version(self): + other_versions = TextVersion.objects.filter(text__exact=self.text).order_by('-created').filter(created__lt=self.created) + return other_versions[0] if other_versions else None + + def get_version_number(self): + return TextVersion.objects.filter(text__exact=self.text).order_by('created').filter(created__lte=self.created).count() + class CommentManager(Manager): def duplicate(self, comment, text_version, reply_to=None, keep_dates=False):