diff --git a/src/pretix/base/models/log.py b/src/pretix/base/models/log.py index 02de810f8c..78ebf8016a 100644 --- a/src/pretix/base/models/log.py +++ b/src/pretix/base/models/log.py @@ -1,6 +1,9 @@ from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models +from django.urls import reverse +from django.utils.functional import cached_property +from django.utils.translation import ugettext_lazy as _ class LogEntry(models.Model): @@ -32,7 +35,7 @@ class LogEntry(models.Model): data = models.TextField(default='{}') class Meta: - ordering = ('-datetime', ) + ordering = ('-datetime',) def display(self): from ..signals import logentry_display @@ -41,3 +44,83 @@ class LogEntry(models.Model): if response: return response return self.action_type + + @cached_property + def display_object(self): + from . import Order, Voucher, Quota, Item, ItemCategory, Question, Event + + if self.content_type.model_class() is Event: + return '' + + co = self.content_object + a_map = None + a_text = None + + if isinstance(co, Order): + a_text = _('Order {val}') + a_map = { + 'href': reverse('control:event.order', kwargs={ + 'event': self.event.slug, + 'organizer': self.event.organizer.slug, + 'code': co.code + }), + 'val': co.code, + } + elif isinstance(co, Voucher): + a_text = _('Voucher {val}…') + a_map = { + 'href': reverse('control:event.voucher', kwargs={ + 'event': self.event.slug, + 'organizer': self.event.organizer.slug, + 'voucher': co.id + }), + 'val': co.code[:6], + } + elif isinstance(co, Item): + a_text = _('Product {val}') + a_map = { + 'href': reverse('control:event.item', kwargs={ + 'event': self.event.slug, + 'organizer': self.event.organizer.slug, + 'item': co.id + }), + 'val': co.name, + } + elif isinstance(co, Quota): + a_text = _('Quota {val}') + a_map = { + 'href': reverse('control:event.items.quotas.show', kwargs={ + 'event': self.event.slug, + 'organizer': self.event.organizer.slug, + 'quota': co.id + }), + 'val': co.name, + } + elif isinstance(co, ItemCategory): + a_text = _('Category {val}') + a_map = { + 'href': reverse('control:event.items.categories.show', kwargs={ + 'event': self.event.slug, + 'organizer': self.event.organizer.slug, + 'category': co.id + }), + 'val': co.name, + } + elif isinstance(co, Question): + a_text = _('Question {val}') + a_map = { + 'href': reverse('control:event.items.questions.show', kwargs={ + 'event': self.event.slug, + 'organizer': self.event.organizer.slug, + 'question': co.id + }), + 'val': co.question, + } + + if a_text and a_map: + a_map['val'] = '{val}'.format_map(a_map) + return a_text.format_map(a_map) + elif a_text: + return a_text + else: + return '' diff --git a/src/pretix/control/logdisplay.py b/src/pretix/control/logdisplay.py index 4f311afc36..ec49d92251 100644 --- a/src/pretix/control/logdisplay.py +++ b/src/pretix/control/logdisplay.py @@ -99,6 +99,7 @@ def pretixcontrol_logentry_display(sender: Event, logentry: LogEntry, **kwargs): 'pretix.event.question.added': _('The question has been added.'), 'pretix.event.question.deleted': _('The question has been deleted.'), 'pretix.event.question.changed': _('The question has been modified.'), + 'pretix.event.settings': _('The event settings have been changed.'), } data = json.loads(logentry.data) @@ -120,6 +121,9 @@ def pretixcontrol_logentry_display(sender: Event, logentry: LogEntry, **kwargs): if logentry.action_type.startswith('pretix.event.order.changed'): return _display_order_changed(sender, logentry) + if logentry.action_type.startswith('pretix.event.payment.provider.'): + return _('The payment provider settings have been changed.') + if logentry.action_type == 'pretix.user.settings.changed': text = str(_('Your account settings have been changed.')) if 'email' in data: diff --git a/src/pretix/control/templates/pretixcontrol/event/logs.html b/src/pretix/control/templates/pretixcontrol/event/logs.html new file mode 100644 index 0000000000..d90bd9a99e --- /dev/null +++ b/src/pretix/control/templates/pretixcontrol/event/logs.html @@ -0,0 +1,31 @@ +{% extends "pretixcontrol/items/base.html" %} +{% load i18n %} +{% block title %}{% trans "Logs" %}{% endblock %} +{% block inside %} +