| changeset 155 | f436e2fef076 |
| parent 154 | 8cb89c153140 |
| parent 146 | 51c34f5970c2 |
| child 156 | 6d447220fd1e |
| 154:8cb89c153140 | 155:f436e2fef076 |
|---|---|
83 """ |
83 """ |
84 Versions with most recent first |
84 Versions with most recent first |
85 """ |
85 """ |
86 versions = TextVersion.objects.filter(text__exact=self).order_by('-created') |
86 versions = TextVersion.objects.filter(text__exact=self).order_by('-created') |
87 # TODO: use new postgresql 8.4 row_number as extra select to do that |
87 # TODO: use new postgresql 8.4 row_number as extra select to do that |
88 for index in xrange(len(versions)): |
88 #for index in xrange(len(versions)): |
89 v = versions[index] |
89 # v = versions[index] |
90 # version_number is 1-based |
90 # # version_number is 1-based |
91 setattr(v, 'version_number', len(versions) - index) |
91 # setattr(v, 'version_number', len(versions) - index) |
92 #for v in versions: |
|
93 # print v.created,v.id,v.version_number |
|
94 return versions |
92 return versions |
95 |
93 |
96 def get_version(self, version_number): |
94 def get_version(self, version_number): |
97 """ |
95 """ |
98 Get version number 'version_number' (1-based) |
96 Get version number 'version_number' (1-based) |
101 return version |
99 return version |
102 |
100 |
103 def get_inversed_versions(self): |
101 def get_inversed_versions(self): |
104 versions = TextVersion.objects.filter(text__exact=self).order_by('created') |
102 versions = TextVersion.objects.filter(text__exact=self).order_by('created') |
105 # TODO: use new postgresql 8.4 row_number as extra select to do that |
103 # TODO: use new postgresql 8.4 row_number as extra select to do that |
106 for index in xrange(len(versions)): |
104 #for index in xrange(len(versions)): |
107 v = versions[index] |
105 # v = versions[index] |
108 # version_number is 1-based |
106 # # version_number is 1-based |
109 setattr(v, 'version_number', index + 1) |
107 # setattr(v, 'version_number', index + 1) |
110 return versions |
108 return versions |
111 |
109 |
112 def get_versions_number(self): |
110 def get_versions_number(self): |
113 return self.get_versions().count() |
111 return self.get_versions().count() |
114 |
112 |
116 if adminkey and self.adminkey == adminkey: |
114 if adminkey and self.adminkey == adminkey: |
117 return True |
115 return True |
118 else: |
116 else: |
119 return False |
117 return False |
120 |
118 |
121 def revert_to_version(self, v_id): |
119 def revert_to_version(self, text_version_key): |
122 text_version = self.get_version(int(v_id)) |
120 text_version = TextVersion.objects.get(key=text_version_key) |
121 if text_version.text != self: |
|
122 raise Exception('Invalid revert attempt') |
|
123 new_text_version = TextVersion.objects.duplicate(text_version, True) |
123 new_text_version = TextVersion.objects.duplicate(text_version, True) |
124 return new_text_version |
124 return new_text_version |
125 |
125 |
126 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): |
126 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): |
127 text_version = self.get_latest_version() |
127 text_version = self.get_latest_version() |
254 if new_note: |
254 if new_note: |
255 self.note = new_note |
255 self.note = new_note |
256 self.content = new_content |
256 self.content = new_content |
257 self.format = new_format |
257 self.format = new_format |
258 self.save() |
258 self.save() |
259 |
259 |
260 def get_next_version(self): |
|
261 other_versions = TextVersion.objects.filter(text__exact=self.text).order_by('created').filter(created__gt=self.created) |
|
262 return other_versions[0] if other_versions else None |
|
263 if other_versions: |
|
264 return |
|
265 else: |
|
266 return None |
|
267 |
|
268 def get_previous_version(self): |
|
269 other_versions = TextVersion.objects.filter(text__exact=self.text).order_by('-created').filter(created__lt=self.created) |
|
270 return other_versions[0] if other_versions else None |
|
271 |
|
272 def get_version_number(self): |
|
273 return TextVersion.objects.filter(text__exact=self.text).order_by('created').filter(created__lte=self.created).count() |
|
274 |
|
260 class CommentManager(Manager): |
275 class CommentManager(Manager): |
261 |
276 |
262 def duplicate(self, comment, text_version, reply_to=None, keep_dates=False): |
277 def duplicate(self, comment, text_version, reply_to=None, keep_dates=False): |
263 comment.id = None |
278 comment.id = None |
264 comment.text_version = text_version |
279 comment.text_version = text_version |