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:
parent
d717864d47
commit
c79b40bc88
|
@ -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)
|
||||
|
|
|
@ -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']
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
Loading…
Reference in a new issue