forked from CGM_Public/pretix_original
Refs #126 -- Show order history
This commit is contained in:
@@ -33,7 +33,6 @@ def cached_file_delete(sender, instance, **kwargs):
|
||||
|
||||
|
||||
class LoggingMixin:
|
||||
logentries = GenericRelation('LogEntry')
|
||||
|
||||
def log_action(self, action, data=None, user=None):
|
||||
"""
|
||||
@@ -59,6 +58,10 @@ class LoggingMixin:
|
||||
|
||||
|
||||
class LoggedModel(models.Model, LoggingMixin):
|
||||
logentries = GenericRelation('LogEntry')
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
def all_logentries(self):
|
||||
return self.logentries.all().select_related('user')
|
||||
|
||||
@@ -28,3 +28,14 @@ class LogEntry(models.Model):
|
||||
event = models.ForeignKey('Event', null=True, blank=True, on_delete=models.CASCADE)
|
||||
action_type = models.CharField(max_length=255)
|
||||
data = models.TextField(default='{}')
|
||||
|
||||
class Meta:
|
||||
ordering = ('-datetime', )
|
||||
|
||||
def display(self):
|
||||
from ..signals import logentry_display
|
||||
|
||||
for receiver, response in logentry_display.send(self.event, logentry=self):
|
||||
if response:
|
||||
return response
|
||||
return self.action_type
|
||||
|
||||
@@ -87,3 +87,11 @@ as the first argument.
|
||||
order_paid = EventPluginSignal(
|
||||
providing_args=["order"]
|
||||
)
|
||||
|
||||
"""
|
||||
This signal is sent out every time we need to display a LogEntry object and we
|
||||
don't know how to turn it into human-readable text.
|
||||
"""
|
||||
logentry_display = EventPluginSignal(
|
||||
providing_args=["logentry"]
|
||||
)
|
||||
|
||||
@@ -7,5 +7,6 @@ class PretixControlConfig(AppConfig):
|
||||
|
||||
def ready(self):
|
||||
from .views import dashboards # noqa
|
||||
from . import logdisplay # noqa
|
||||
|
||||
default_app_config = 'pretix.control.PretixControlConfig'
|
||||
|
||||
20
src/pretix/control/logdisplay.py
Normal file
20
src/pretix/control/logdisplay.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from django.dispatch import receiver
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from pretix.base.signals import logentry_display
|
||||
|
||||
|
||||
@receiver(signal=logentry_display, dispatch_uid="pretixcontrol_logentry_display")
|
||||
def pretixcontrol_logentry_display(sender, logentry, **kwargs):
|
||||
plains = {
|
||||
'pretix.event.order.modified': _('The order details have been modified.'),
|
||||
'pretix.event.order.unpaid': _('The order has been marked as unpaid.'),
|
||||
'pretix.event.order.resend': _('The link to the order detail page has been resent to the user.'),
|
||||
'pretix.event.order.expirychanged': _('The order\'s expiry date has been changed.'),
|
||||
'pretix.event.order.paid': _('The order has been marked as paid.'),
|
||||
'pretix.event.order.refunded': _('The order has been refunded.'),
|
||||
'pretix.event.order.cancelled': _('The order has been cancelled.'),
|
||||
'pretix.event.order.placed': _('The order has been created.'),
|
||||
}
|
||||
if logentry.action_type in plains:
|
||||
return plains[logentry.action_type]
|
||||
@@ -0,0 +1,16 @@
|
||||
<ul class="list-group">
|
||||
{% for log in obj.all_logentries %}
|
||||
<li class="list-group-item logentry">
|
||||
<p class="meta">
|
||||
<span class="fa fa-clock-o"></span> {{ log.datetime|date:"SHORT_DATETIME_FORMAT" }}
|
||||
{% if log.user %}
|
||||
<br/><span class="fa fa-user"></span> {{ log.user }}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{{ log.display }}
|
||||
</p>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
@@ -47,6 +47,9 @@
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-lg-10">
|
||||
<div class="panel panel-primary items">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
@@ -229,4 +232,17 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-lg-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
{% trans "Order history" %}
|
||||
</h3>
|
||||
</div>
|
||||
{% include "pretixcontrol/includes/logs.html" with obj=order %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -180,7 +180,7 @@ class OrderTransition(OrderView):
|
||||
self.order.status = Order.STATUS_PENDING
|
||||
self.order.payment_manual = True
|
||||
self.order.save()
|
||||
self.order.log_action('pretix.base.order.unpaid', user=self.request.user)
|
||||
self.order.log_action('pretix.event.order.unpaid', user=self.request.user)
|
||||
messages.success(self.request, _('The order has been marked as not paid.'))
|
||||
elif self.order.status == 'p' and to == 'r':
|
||||
ret = self.payment_provider.order_control_refund_perform(self.request, self.order)
|
||||
@@ -221,7 +221,7 @@ class OrderResendLink(OrderView):
|
||||
self.order.event, locale=self.order.locale
|
||||
)
|
||||
messages.success(self.request, _('The email has been queued to be sent.'))
|
||||
self.order.log_action('pretix.base.order.resend', user=self.request.user)
|
||||
self.order.log_action('pretix.event.order.resend', user=self.request.user)
|
||||
return redirect(self.get_order_url())
|
||||
|
||||
|
||||
@@ -305,7 +305,7 @@ class OrderExtend(OrderView):
|
||||
if self.form.is_valid():
|
||||
if oldvalue > now():
|
||||
messages.success(self.request, _('The payment term has been changed.'))
|
||||
self.order.log_action('pretix.order.changed', user=self.request.user, data={
|
||||
self.order.log_action('pretix.event.order.expirychanged', user=self.request.user, data={
|
||||
'expires': self.order.expires
|
||||
})
|
||||
self.form.save()
|
||||
@@ -315,7 +315,7 @@ class OrderExtend(OrderView):
|
||||
is_available = self.order._is_still_available()
|
||||
if is_available is True:
|
||||
self.form.save()
|
||||
self.order.log_action('pretix.order.changed', user=self.request.user, data={
|
||||
self.order.log_action('pretix.event.order.expirychanged', user=self.request.user, data={
|
||||
'expires': self.order.expires
|
||||
})
|
||||
messages.success(self.request, _('The payment term has been changed.'))
|
||||
|
||||
@@ -16,6 +16,17 @@
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
#sumtoggle {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.logentry {
|
||||
.meta {
|
||||
font-size: 12px;
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user