diff --git a/dav_events/templates/dav_events/event_detail.html b/dav_events/templates/dav_events/event_detail.html index f4b95c9..fc086d9 100644 --- a/dav_events/templates/dav_events/event_detail.html +++ b/dav_events/templates/dav_events/event_detail.html @@ -1,6 +1,7 @@ {% extends 'dav_events/base.html' %} {% load bootstrap3 %} {% load i18n %} +{% load dav_events %} {% block head-title %}{{ event }} - {{ block.super }}{% endblock head-title %} @@ -188,35 +189,77 @@
{{ event.render_as_html }} -
-
-
-
-
Status-Log
- {% for flag in event.flags.all %} -
-
- {% bootstrap_icon 'check' %} - {{ flag.status.label }}: -
-
- {{ flag.timestamp|date:'l, d. F Y, H:i' }} {% trans 'Uhr' %}
- {% trans 'von' %} {{ flag.user.get_full_name|default:flag.user }} +
+
+
+
+ +
+
+ {% for flag in event.flags.all %} +
+
+ {% bootstrap_icon 'check' %} + {{ flag.status.label }}: +
+
+ {{ flag.timestamp|date:'l, d. F Y, H:i' }} {% trans 'Uhr' %}
+ {% trans 'von' %} {{ flag.user.get_full_name|default:flag.user }} +
+
+ {% endfor %}
- {% endfor %}
-
-
{% trans 'Veröffentlichung' %}
+
+ +
+
+ {% render_event_changelog event %} +
+
+
+
+
+
+ {% if event.internal_note %} +
+
+
{% trans 'Bearbeitungshinweis' %}
+
+
+
{{ event.internal_note|linebreaksbr }}
+
+
+ {% endif %} +
+
+
{% trans 'Veröffentlichung' %}
+
+
{% if event.planned_publication_date %} {{ event.planned_publication_date|date:'l, d. F Y' }} {% else %} {% trans 'Unverzüglich' %} {% endif %} - {% if event.internal_note %} -
{% trans 'Bearbeitungshinweis' %}
-
{{ event.internal_note|linebreaksbr }}
- {% endif %}
diff --git a/dav_events/templatetags/dav_events.py b/dav_events/templatetags/dav_events.py index f5731f2..0e5bae7 100644 --- a/dav_events/templatetags/dav_events.py +++ b/dav_events/templatetags/dav_events.py @@ -1,6 +1,9 @@ +import json from django import template from django.utils.html import format_html from django.utils.safestring import mark_safe +from django.utils import timezone +from django.utils.translation import ugettext as _ from ..models.eventstatus import EventStatus, get_or_create_event_status @@ -30,3 +33,51 @@ def render_event_status(event, show_void=True): context=context) return mark_safe(html) + + +@register.simple_tag +def render_event_changelog(event): + change_templ = u'
  • \n' \ + u'\t

    {timestamp}' \ + u' - ' \ + u' {user}

    \n' \ + u'\t{content}\n' \ + u'
  • \n' + subchange_templ = u'
  • \n' \ + u'\t{field}:{separator1}\n' \ + u'\t{refer}\n' \ + u'\t{separator2}\n' \ + u'\t{current}\n' \ + u'
  • \n' + + if event.changes.exists(): + html = u'
      \n' + for change in event.changes.all(): + username = change.user.get_full_name() + if not username: + username = change.user + content_html = u'
        ' + subchanges = json.loads(change.content) + for subchange in subchanges: + field_label = event._meta.get_field(subchange['field']).verbose_name + if len(subchange['refer']) + len(subchange['current']) > 20: + separator1 = u'
        ' + separator2 = u'
        ' + else: + separator1 = u' ' + separator2 = u' -> ' + content_html += format_html(subchange_templ, + field=field_label, + separator1=mark_safe(separator1), + refer=subchange['refer'], + separator2=mark_safe(separator2), + current=subchange['current']) + content_html += u'
      ' + html += format_html(change_templ, + timestamp=timezone.localtime(change.timestamp).strftime('%Y-%m-%d %H:%M:%S %Z'), + user=username, + content=mark_safe(content_html)) + html += u'
    \n' + else: + html = _(u'No entries') + return mark_safe(html)