| changeset 145 | fb5b1e6ad179 |
| parent 140 | 87eec0c11516 |
| child 146 | 51c34f5970c2 |
| 142:9b3438382e53 | 145:fb5b1e6ad179 |
|---|---|
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() |
250 if new_note: |
250 if new_note: |
251 self.note = new_note |
251 self.note = new_note |
252 self.content = new_content |
252 self.content = new_content |
253 self.format = new_format |
253 self.format = new_format |
254 self.save() |
254 self.save() |
255 |
255 |
256 def get_next_version(self): |
|
257 other_versions = TextVersion.objects.filter(text__exact=self.text).order_by('created').filter(created__gt=self.created) |
|
258 return other_versions[0] if other_versions else None |
|
259 if other_versions: |
|
260 return |
|
261 else: |
|
262 return None |
|
263 |
|
264 def get_previous_version(self): |
|
265 other_versions = TextVersion.objects.filter(text__exact=self.text).order_by('-created').filter(created__lt=self.created) |
|
266 return other_versions[0] if other_versions else None |
|
267 |
|
268 def get_version_number(self): |
|
269 return TextVersion.objects.filter(text__exact=self.text).order_by('created').filter(created__lte=self.created).count() |
|
270 |
|
256 class CommentManager(Manager): |
271 class CommentManager(Manager): |
257 |
272 |
258 def duplicate(self, comment, text_version, reply_to=None, keep_dates=False): |
273 def duplicate(self, comment, text_version, reply_to=None, keep_dates=False): |
259 comment.id = None |
274 comment.id = None |
260 comment.text_version = text_version |
275 comment.text_version = text_version |