From d3bc597f5430bb2bea934ef0dc1d895147889389 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=AD=C3=B0ir=20Valberg=20Gu=C3=B0mundsson?= Date: Tue, 31 May 2016 23:23:05 +0200 Subject: [PATCH] Adding invoice pdf link to Order admin --- shop/admin.py | 5 +++-- shop/models.py | 1 + shop/templates/admin/change_order_form.html | 16 ++++++++++++++++ shop/views.py | 4 +++- 4 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 shop/templates/admin/change_order_form.html diff --git a/shop/admin.py b/shop/admin.py index a3b182c5..431b24c9 100644 --- a/shop/admin.py +++ b/shop/admin.py @@ -8,6 +8,7 @@ admin.site.register(models.CoinifyAPIInvoice) admin.site.register(models.CoinifyAPICallback) admin.site.register(models.Invoice) + @admin.register(models.ProductCategory) class ProductCategoryAdmin(admin.ModelAdmin): list_display = [ @@ -35,9 +36,9 @@ class TicketInline(admin.TabularInline): - @admin.register(models.Order) class OrderAdmin(admin.ModelAdmin): + change_form_template = 'admin/change_order_form.html' list_display = [ 'id', 'user', @@ -67,4 +68,4 @@ class OrderAdmin(admin.ModelAdmin): @admin.register(models.Ticket) class TicketAdmin(admin.ModelAdmin): - pass \ No newline at end of file + pass diff --git a/shop/models.py b/shop/models.py index 1671cf61..ede52c19 100644 --- a/shop/models.py +++ b/shop/models.py @@ -2,6 +2,7 @@ from django.conf import settings from django.db import models from django.db.models.aggregates import Sum from django.contrib.postgres.fields import DateTimeRangeField, JSONField +from django.http import HttpResponse from django.utils.text import slugify from django.utils.translation import ugettext_lazy as _ from django.utils import timezone diff --git a/shop/templates/admin/change_order_form.html b/shop/templates/admin/change_order_form.html new file mode 100644 index 00000000..7f065f1e --- /dev/null +++ b/shop/templates/admin/change_order_form.html @@ -0,0 +1,16 @@ +{% extends "admin/change_form.html" %} +{% load i18n admin_urls admin_static admin_modify %} + +{% block object-tools-items %} +
  • + {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %} + {% trans "History" %} +
  • +{% if original.paid and original.invoice %} +
  • + {% url 'shop:download_invoice' original.pk|admin_urlquote as invoice_url %} + {% trans "Invoice PDF" %} +
  • +{% endif %} +{% if has_absolute_url %}
  • {% trans "View on site" %}
  • {% endif %} +{% endblock %} diff --git a/shop/views.py b/shop/views.py index 458cfa20..3574be61 100644 --- a/shop/views.py +++ b/shop/views.py @@ -39,11 +39,13 @@ from vendor.coinify_api import CoinifyAPI from vendor.coinify_callback import CoinifyCallback import json + class EnsureUserOwnsOrderMixin(SingleObjectMixin): model = Order def dispatch(self, request, *args, **kwargs): - if self.get_object().user != request.user: + # If the user does not own this ticket OR is not staff + if self.get_object().user != request.user or not request.user.is_staff: raise Http404("Order not found") return super(EnsureUserOwnsOrderMixin, self).dispatch(