|
@@ -1007,6 +1007,16 @@ class Content(DeclarativeBase):
|
1007
|
1007
|
self._properties = json.dumps(properties_struct)
|
1008
|
1008
|
ContentChecker.check_properties(self)
|
1009
|
1009
|
|
|
1010
|
+ @property
|
|
1011
|
+ def clean_revisions(self):
|
|
1012
|
+ """
|
|
1013
|
+ This property return revisions with really only one of each revisions:
|
|
1014
|
+ Actually, .revisions list give duplicated last revision,
|
|
1015
|
+ see https://github.com/tracim/tracim/issues/126
|
|
1016
|
+ :return: list of revisions
|
|
1017
|
+ """
|
|
1018
|
+ return list(set(self.revisions))
|
|
1019
|
+
|
1010
|
1020
|
def created_as_delta(self, delta_from_datetime:datetime=None):
|
1011
|
1021
|
if not delta_from_datetime:
|
1012
|
1022
|
delta_from_datetime = datetime.utcnow()
|
|
@@ -1093,13 +1103,13 @@ class Content(DeclarativeBase):
|
1093
|
1103
|
return last_comment
|
1094
|
1104
|
|
1095
|
1105
|
def get_previous_revision(self) -> 'ContentRevisionRO':
|
1096
|
|
- rev_ids = [revision.revision_id for revision in self.revisions]
|
|
1106
|
+ rev_ids = [revision.revision_id for revision in self.clean_revisions]
|
1097
|
1107
|
rev_ids.sort()
|
1098
|
1108
|
|
1099
|
1109
|
if len(rev_ids)>=2:
|
1100
|
1110
|
revision_rev_id = rev_ids[-2]
|
1101
|
1111
|
|
1102
|
|
- for revision in self.revisions:
|
|
1112
|
+ for revision in self.clean_revisions:
|
1103
|
1113
|
if revision.revision_id == revision_rev_id:
|
1104
|
1114
|
return revision
|
1105
|
1115
|
|
|
@@ -1128,7 +1138,7 @@ class Content(DeclarativeBase):
|
1128
|
1138
|
events = []
|
1129
|
1139
|
for comment in self.get_comments():
|
1130
|
1140
|
events.append(VirtualEvent.create_from_content(comment))
|
1131
|
|
- for revision in self.revisions:
|
|
1141
|
+ for revision in self.clean_revisions:
|
1132
|
1142
|
events.append(VirtualEvent.create_from_content_revision(revision))
|
1133
|
1143
|
|
1134
|
1144
|
sorted_events = sorted(events,
|