Changed the handling of DocEvent 'rev' fields in document history. We should give DocEvent a 'rev' field which is always filled in; the current handling is error prone and much to complicated.

- Legacy-Id: 12433
This commit is contained in:
Henrik Levkowetz 2016-12-01 13:49:36 +00:00
parent d717864d47
commit c79b40bc88
4 changed files with 26 additions and 4 deletions

View file

@ -35,7 +35,7 @@ class DocumentChangesFeed(Feed):
return events
def item_title(self, item):
return u"[%s] %s [rev. %s]" % (item.by, truncatewords(strip_tags(item.desc), 15), item.rev)
return u"[%s] %s [rev. %s]" % (item.by, truncatewords(strip_tags(item.desc), 15), item.get_rev())
def item_description(self, item):
return truncatewords_html(format_textarea(item.desc), 20)

View file

@ -749,6 +749,18 @@ class DocEvent(models.Model):
def __unicode__(self):
return u"%s %s by %s at %s" % (self.doc.name, self.get_type_display().lower(), self.by.plain_name(), self.time)
def get_rev(self):
e = self
# check subtypes which has a rev attribute
for sub in ['newrevisiondocevent', 'submissiondocevent', ]:
if hasattr(e, sub):
e = getattr(e, sub)
break
if hasattr(e, 'rev'):
return e.rev
else:
return None
class Meta:
ordering = ['-time', '-id']

View file

@ -237,7 +237,12 @@ def augment_events_with_revision(doc, events):
for e in sorted(events, key=lambda e: (e.time, e.id), reverse=True):
while event_revisions and (e.time, e.id) < (event_revisions[-1]["time"], event_revisions[-1]["id"]):
event_revisions.pop()
# Check for all subtypes which have 'rev' fields:
for sub in ['newrevisiondocevent', 'submissiondocevent', ]:
if hasattr(e, sub):
e = getattr(e, sub)
break
if not hasattr(e, 'rev'):
if event_revisions:
cur_rev = event_revisions[-1]["rev"]
@ -255,6 +260,11 @@ def add_links_in_new_revision_events(doc, events, diff_revisions):
if not e.type == "new_revision":
continue
for sub in ['newrevisiondocevent', 'submissiondocevent', ]:
if hasattr(e, sub):
e = getattr(e, sub)
break
if not (e.doc.name, e.rev) in diff_urls:
continue

View file

@ -103,7 +103,7 @@
{% for e in events %}
<tr class="anchor-target" id="history-{{ e.pk }}">
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
<td class="text-center">{{ e.rev }}</td>
<td class="text-center">{{ e.get_rev }}</td>
<td>{{ e.by|escape }}</td>
<td>{{ e.desc|format_history_text|safe }}</td>
</tr>
@ -114,4 +114,4 @@
{% block js %}
<script src="{% static "jquery.tablesorter/js/jquery.tablesorter.combined.min.js" %}"></script>
{% endblock %}
{% endblock %}