diff --git a/src/pretix/control/forms/orders.py b/src/pretix/control/forms/orders.py index 2b860b55e..e6e0077c9 100644 --- a/src/pretix/control/forms/orders.py +++ b/src/pretix/control/forms/orders.py @@ -23,3 +23,15 @@ class ExporterForm(forms.Form): data[k] = [m.pk for m in v] return data + + +class CommentForm(I18nModelForm): + class Meta: + model = Order + fields = ['comment'] + widgets = { + 'comment': forms.Textarea(attrs={ + 'rows': 3, + 'class': 'helper-width-100', + }), + } diff --git a/src/pretix/control/logdisplay.py b/src/pretix/control/logdisplay.py index 2addfca5d..9513929d1 100644 --- a/src/pretix/control/logdisplay.py +++ b/src/pretix/control/logdisplay.py @@ -19,6 +19,7 @@ def pretixcontrol_logentry_display(sender, logentry, **kwargs): 'pretix.event.order.invoice.generated': _('The invoice has been generated.'), 'pretix.event.order.invoice.regenerated': _('The invoice has been regenerated.'), 'pretix.event.order.invoice.reissued': _('The invoice has been reissued.'), + 'pretix.event.order.comment': _('The order\'s internal comment has been updated.'), } if logentry.action_type in plains: return plains[logentry.action_type] diff --git a/src/pretix/control/templates/pretixcontrol/order/index.html b/src/pretix/control/templates/pretixcontrol/order/index.html index 1016cdfa4..1e20a2eed 100644 --- a/src/pretix/control/templates/pretixcontrol/order/index.html +++ b/src/pretix/control/templates/pretixcontrol/order/index.html @@ -1,5 +1,6 @@ {% extends "pretixcontrol/event/base.html" %} {% load i18n %} +{% load bootstrap3 %} {% load eventurl %} {% block title %} {% blocktrans trimmed with code=order.code %} @@ -279,6 +280,25 @@ {% endif %} +
+
+

+ {% trans "Internal comment" %} +

+
+
+
+ {% csrf_token %} +
+ {% bootstrap_field comment_form.comment layout="horizontal" show_help=True show_label=False horizontal_field_class="col-md-12" %} +
+ +
+
+
diff --git a/src/pretix/control/urls.py b/src/pretix/control/urls.py index a7a123670..410cc3647 100644 --- a/src/pretix/control/urls.py +++ b/src/pretix/control/urls.py @@ -77,6 +77,8 @@ urlpatterns = [ name='event.order.reissueinvoice'), url(r'^orders/(?P[0-9A-Z]+)/extend$', orders.OrderExtend.as_view(), name='event.order.extend'), + url(r'^orders/(?P[0-9A-Z]+)/comment$', orders.OrderComment.as_view(), + name='event.order.comment'), url(r'^orders/(?P[0-9A-Z]+)/$', orders.OrderDetail.as_view(), name='event.order'), url(r'^orders/(?P[0-9A-Z]+)/download/(?P[^/]+)$', orders.OrderDownload.as_view(), name='event.order.download'), diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 5d41258f9..c4a1c55f8 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -28,7 +28,7 @@ from pretix.base.signals import ( register_data_exporters, register_payment_providers, register_ticket_outputs, ) -from pretix.control.forms.orders import ExporterForm, ExtendForm +from pretix.control.forms.orders import CommentForm, ExporterForm, ExtendForm from pretix.control.permissions import EventPermissionRequiredMixin from pretix.multidomain.urlreverse import build_absolute_uri @@ -132,6 +132,7 @@ class OrderDetail(OrderView): ) ctx['payment'] = self.payment_provider.order_control_render(self.request, self.object) ctx['invoices'] = list(self.order.invoices.all().select_related('event')) + ctx['comment_form'] = CommentForm(initial={'comment': self.order.comment}) return ctx def get_items(self): @@ -172,6 +173,21 @@ class OrderDetail(OrderView): } +class OrderComment(OrderView): + permission = 'can_change_orders' + + def post(self, *args, **kwargs): + form = CommentForm(self.request.POST) + if form.is_valid(): + self.order.comment = form.cleaned_data.get('comment') + self.order.save() + self.order.log_action('pretix.event.order.comment', user=self.request.user) + messages.success(self.request, _('The comment has been updated.')) + else: + messages.error(self.request, _('Could not update the comment.')) + return redirect(self.get_order_url()) + + class OrderTransition(OrderView): permission = 'can_change_orders' diff --git a/src/static/pretixcontrol/scss/main.scss b/src/static/pretixcontrol/scss/main.scss index 5b4fefb55..71d955e80 100644 --- a/src/static/pretixcontrol/scss/main.scss +++ b/src/static/pretixcontrol/scss/main.scss @@ -95,6 +95,9 @@ h1 .btn-sm { .helper-width-auto { width: auto; } +.helper-width-100 { + width: 100%; +} .helper-space-below { margin-bottom: 10px; }