Improve log display

This commit is contained in:
Raphael Michel
2017-01-03 23:58:51 +01:00
parent 2ee0ff755d
commit aa2f0e0fd0
5 changed files with 70 additions and 5 deletions

View File

@@ -9,6 +9,10 @@ from pretix.base.i18n import LazyI18nString
from pretix.base.models import Event, ItemVariation, LogEntry from pretix.base.models import Event, ItemVariation, LogEntry
from pretix.base.signals import logentry_display from pretix.base.signals import logentry_display
OVERVIEW_BLACKLIST = [
'pretix.plugins.sendmail.order.email.sent'
]
def _display_order_changed(event: Event, logentry: LogEntry): def _display_order_changed(event: Event, logentry: LogEntry):
data = json.loads(logentry.data) data = json.loads(logentry.data)
@@ -100,6 +104,10 @@ def pretixcontrol_logentry_display(sender: Event, logentry: LogEntry, **kwargs):
'pretix.event.question.deleted': _('The question has been deleted.'), 'pretix.event.question.deleted': _('The question has been deleted.'),
'pretix.event.question.changed': _('The question has been modified.'), 'pretix.event.question.changed': _('The question has been modified.'),
'pretix.event.settings': _('The event settings have been changed.'), 'pretix.event.settings': _('The event settings have been changed.'),
'pretix.event.tickets.settings': _('The ticket download settings have been changed.'),
'pretix.plugins.sendmail.sent': _('A mass mail has been sent.'),
'pretix.event.plugins.enabled': _('A plugin has been enabled.'),
'pretix.event.plugins.disabled': _('A plugin has been disabled.'),
} }
data = json.loads(logentry.data) data = json.loads(logentry.data)
@@ -122,7 +130,10 @@ def pretixcontrol_logentry_display(sender: Event, logentry: LogEntry, **kwargs):
return _display_order_changed(sender, logentry) return _display_order_changed(sender, logentry)
if logentry.action_type.startswith('pretix.event.payment.provider.'): if logentry.action_type.startswith('pretix.event.payment.provider.'):
return _('The payment provider settings have been changed.') return _('The settings of a payment provider have been changed.')
if logentry.action_type.startswith('pretix.event.tickets.provider.'):
return _('The settings of a ticket output provider have been changed.')
if logentry.action_type == 'pretix.user.settings.changed': if logentry.action_type == 'pretix.user.settings.changed':
text = str(_('Your account settings have been changed.')) text = str(_('Your account settings have been changed.'))

View File

@@ -24,4 +24,43 @@
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
<p>&nbsp;</p>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
{% trans "Event logs" %}
</h3>
</div>
<ul class="list-group">
{% for log in logs %}
<li class="list-group-item logentry">
<div class="row">
<div class="col-lg-2 col-sm-6 col-xs-12">
<span class="fa fa-clock-o"></span> {{ log.datetime|date:"SHORT_DATETIME_FORMAT" }}
</div>
<div class="col-lg-2 col-sm-6 col-xs-12">
{% if log.user %}
<span class="fa fa-user"></span> {{ log.user.get_full_name }}
{% endif %}
</div>
<div class="col-lg-2 col-sm-12 col-xs-12">
{% if log.display_object %}
<span class="fa fa-flag"></span> {{ log.display_object|safe }}
{% endif %}
</div>
<div class="col-lg-6 col-sm-12 col-xs-12">
{{ log.display }}
</div>
</div>
</li>
{% endfor %}
</ul>
<div class="panel-footer">
<a href="{% url "control:event.log" event=request.event.slug organizer=request.event.organizer.slug %}">
{% trans "Show more logs" %}
</a>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -1,8 +1,8 @@
{% extends "pretixcontrol/items/base.html" %} {% extends "pretixcontrol/items/base.html" %}
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Logs" %}{% endblock %} {% block title %}{% trans "Event logs" %}{% endblock %}
{% block inside %} {% block inside %}
<h1>{% trans "Logs" %}</h1> <h1>{% trans "Event logs" %}</h1>
<ul class="list-group"> <ul class="list-group">
{% for log in logs %} {% for log in logs %}
<li class="list-group-item logentry"> <li class="list-group-item logentry">

View File

@@ -1,5 +1,6 @@
from decimal import Decimal from decimal import Decimal
from django.contrib.contenttypes.models import ContentType
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db.models import Sum from django.db.models import Sum
from django.dispatch import receiver from django.dispatch import receiver
@@ -9,11 +10,13 @@ from django.utils import formats
from django.utils.formats import date_format from django.utils.formats import date_format
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from pretix.base.models import Event, Item, Order, OrderPosition from pretix.base.models import Event, Item, Order, OrderPosition, Voucher
from pretix.control.signals import ( from pretix.control.signals import (
event_dashboard_widgets, user_dashboard_widgets, event_dashboard_widgets, user_dashboard_widgets,
) )
from ..logdisplay import OVERVIEW_BLACKLIST
NUM_WIDGET = '<div class="numwidget"><span class="num">{num}</span><span class="text">{text}</span></div>' NUM_WIDGET = '<div class="numwidget"><span class="num">{num}</span><span class="text">{text}</span></div>'
@@ -154,9 +157,19 @@ def event_index(request, organizer, event):
widgets = [] widgets = []
for r, result in event_dashboard_widgets.send(sender=request.event): for r, result in event_dashboard_widgets.send(sender=request.event):
widgets.extend(result) widgets.extend(result)
qs = request.event.logentry_set.all().select_related('user', 'content_type').order_by('-datetime')
qs = qs.exclude(action_type__in=OVERVIEW_BLACKLIST)
if not request.eventperm.can_view_orders:
qs = qs.exclude(content_type=ContentType.objects.get_for_model(Order))
if not request.eventperm.can_view_vouchers:
qs = qs.exclude(content_type=ContentType.objects.get_for_model(Voucher))
ctx = { ctx = {
'widgets': rearrange(widgets), 'widgets': rearrange(widgets),
'logs': qs[:5]
} }
return render(request, 'pretixcontrol/event/index.html', ctx) return render(request, 'pretixcontrol/event/index.html', ctx)

View File

@@ -34,6 +34,7 @@ from pretix.control.permissions import EventPermissionRequiredMixin
from pretix.presale.style import regenerate_css from pretix.presale.style import regenerate_css
from . import UpdateView from . import UpdateView
from ..logdisplay import OVERVIEW_BLACKLIST
class EventUpdate(EventPermissionRequiredMixin, UpdateView): class EventUpdate(EventPermissionRequiredMixin, UpdateView):
@@ -654,7 +655,8 @@ class EventLog(EventPermissionRequiredMixin, ListView):
paginate_by = 20 paginate_by = 20
def get_queryset(self): def get_queryset(self):
qs = self.request.event.logentry_set.all().select_related('user', 'content_type') qs = self.request.event.logentry_set.all().select_related('user', 'content_type').order_by('-datetime')
qs = qs.exclude(action_type__in=OVERVIEW_BLACKLIST)
if not self.request.eventperm.can_view_orders: if not self.request.eventperm.can_view_orders:
qs = qs.exclude(content_type=ContentType.objects.get_for_model(Order)) qs = qs.exclude(content_type=ContentType.objects.get_for_model(Order))
if not self.request.eventperm.can_view_vouchers: if not self.request.eventperm.can_view_vouchers: