2016-06-19 06:43:56 +00:00
|
|
|
from django.contrib import admin
|
2018-08-17 09:59:28 +00:00
|
|
|
from tickets.admin import ShopTicketInline
|
2020-02-12 12:10:41 +00:00
|
|
|
|
2018-04-15 15:29:24 +00:00
|
|
|
from .models import (
|
|
|
|
CoinifyAPICallback,
|
|
|
|
CoinifyAPIInvoice,
|
|
|
|
CoinifyAPIRequest,
|
2020-02-12 12:10:41 +00:00
|
|
|
CreditNote,
|
|
|
|
CustomOrder,
|
2018-04-15 15:29:24 +00:00
|
|
|
EpayCallback,
|
|
|
|
EpayPayment,
|
|
|
|
Invoice,
|
|
|
|
Order,
|
|
|
|
OrderProductRelation,
|
2020-02-12 12:10:41 +00:00
|
|
|
Product,
|
|
|
|
ProductCategory,
|
2018-04-15 15:29:24 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
admin.site.register(EpayCallback)
|
|
|
|
admin.site.register(EpayPayment)
|
|
|
|
admin.site.register(CoinifyAPIInvoice)
|
|
|
|
admin.site.register(CoinifyAPICallback)
|
|
|
|
admin.site.register(CoinifyAPIRequest)
|
|
|
|
|
|
|
|
|
|
|
|
@admin.register(Invoice)
|
|
|
|
class InvoiceAdmin(admin.ModelAdmin):
|
2019-06-16 12:32:24 +00:00
|
|
|
list_display = ["id", "order", "customorder", "created", "updated"]
|
2018-04-15 15:29:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
@admin.register(CreditNote)
|
|
|
|
class CreditNoteAdmin(admin.ModelAdmin):
|
|
|
|
list_display = [
|
2019-06-16 12:32:24 +00:00
|
|
|
"id",
|
|
|
|
"user",
|
|
|
|
"customer",
|
|
|
|
"amount",
|
|
|
|
"vat",
|
|
|
|
"paid",
|
|
|
|
"created",
|
|
|
|
"updated",
|
2018-04-15 15:29:24 +00:00
|
|
|
]
|
2016-05-10 20:20:01 +00:00
|
|
|
|
2019-06-16 12:32:24 +00:00
|
|
|
list_filter = ["paid"]
|
2016-05-31 21:23:05 +00:00
|
|
|
|
2017-08-17 15:52:22 +00:00
|
|
|
|
2018-04-15 15:29:24 +00:00
|
|
|
@admin.register(CustomOrder)
|
2017-08-08 11:27:12 +00:00
|
|
|
class CustomOrderAdmin(admin.ModelAdmin):
|
|
|
|
list_display = [
|
2019-06-16 12:32:24 +00:00
|
|
|
"id",
|
|
|
|
"customer",
|
|
|
|
"text",
|
|
|
|
"amount",
|
|
|
|
"vat",
|
|
|
|
"paid",
|
|
|
|
"created",
|
|
|
|
"updated",
|
2017-08-08 11:27:12 +00:00
|
|
|
]
|
|
|
|
|
2019-06-16 12:32:24 +00:00
|
|
|
list_filter = ["paid"]
|
2016-08-27 08:17:43 +00:00
|
|
|
|
2017-08-17 15:52:22 +00:00
|
|
|
|
2018-04-15 15:29:24 +00:00
|
|
|
@admin.register(ProductCategory)
|
2016-05-10 20:20:01 +00:00
|
|
|
class ProductCategoryAdmin(admin.ModelAdmin):
|
2019-06-16 12:32:24 +00:00
|
|
|
list_display = ["name"]
|
2016-05-10 20:20:01 +00:00
|
|
|
|
|
|
|
|
2018-01-07 14:56:52 +00:00
|
|
|
def available_from(product):
|
2018-01-07 16:20:45 +00:00
|
|
|
if product.available_in.lower:
|
2018-01-07 16:15:03 +00:00
|
|
|
return product.available_in.lower.strftime("%c")
|
|
|
|
return "None"
|
2019-06-16 12:32:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
available_from.short_description = "Available from"
|
2018-01-07 14:56:52 +00:00
|
|
|
|
2018-03-04 14:38:40 +00:00
|
|
|
|
2018-01-07 14:56:52 +00:00
|
|
|
def available_to(product):
|
2018-01-07 16:20:45 +00:00
|
|
|
if product.available_in.upper:
|
2018-01-07 16:15:03 +00:00
|
|
|
return product.available_in.upper.strftime("%c")
|
|
|
|
return "None"
|
2019-06-16 12:32:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
available_to.short_description = "Available to"
|
2018-01-07 14:56:52 +00:00
|
|
|
|
|
|
|
|
2018-04-24 16:06:19 +00:00
|
|
|
def stock_info(product):
|
|
|
|
if product.stock_amount:
|
2019-06-16 12:32:24 +00:00
|
|
|
return "{} / {}".format(product.left_in_stock, product.stock_amount)
|
2018-04-24 16:06:19 +00:00
|
|
|
return "N/A"
|
|
|
|
|
|
|
|
|
2018-04-15 15:29:24 +00:00
|
|
|
@admin.register(Product)
|
2016-05-10 20:20:01 +00:00
|
|
|
class ProductAdmin(admin.ModelAdmin):
|
|
|
|
list_display = [
|
2019-06-16 12:32:24 +00:00
|
|
|
"name",
|
|
|
|
"category",
|
|
|
|
"ticket_type",
|
|
|
|
"price",
|
2018-04-24 16:06:19 +00:00
|
|
|
stock_info,
|
2018-01-07 14:56:52 +00:00
|
|
|
available_from,
|
2019-06-16 12:32:24 +00:00
|
|
|
available_to,
|
2016-05-10 20:20:01 +00:00
|
|
|
]
|
|
|
|
|
2019-07-29 19:31:07 +00:00
|
|
|
list_editable = ["ticket_type"]
|
|
|
|
|
2019-06-16 12:32:24 +00:00
|
|
|
list_filter = ["category", "ticket_type"]
|
2019-02-10 13:53:01 +00:00
|
|
|
|
2019-06-16 12:32:24 +00:00
|
|
|
search_fields = ["name"]
|
2018-01-07 14:56:52 +00:00
|
|
|
|
2016-05-10 20:20:01 +00:00
|
|
|
|
|
|
|
class ProductInline(admin.TabularInline):
|
2018-04-15 15:29:24 +00:00
|
|
|
model = OrderProductRelation
|
2016-05-10 20:20:01 +00:00
|
|
|
|
|
|
|
|
2018-04-15 15:29:24 +00:00
|
|
|
@admin.register(Order)
|
2016-05-10 20:20:01 +00:00
|
|
|
class OrderAdmin(admin.ModelAdmin):
|
2019-06-16 12:32:24 +00:00
|
|
|
change_form_template = "admin/change_order_form.html"
|
|
|
|
readonly_fields = ("paid", "created", "updated")
|
2016-06-04 07:46:10 +00:00
|
|
|
|
|
|
|
def get_email(self, obj):
|
|
|
|
return obj.user.email
|
|
|
|
|
2016-05-10 20:20:01 +00:00
|
|
|
list_display = [
|
2019-06-16 12:32:24 +00:00
|
|
|
"id",
|
|
|
|
"created",
|
|
|
|
"updated",
|
|
|
|
"user",
|
|
|
|
"get_email",
|
|
|
|
"total",
|
|
|
|
"payment_method",
|
|
|
|
"open",
|
|
|
|
"paid",
|
|
|
|
"cancelled",
|
|
|
|
"refunded",
|
2016-05-10 20:20:01 +00:00
|
|
|
]
|
|
|
|
|
2019-06-16 12:32:24 +00:00
|
|
|
list_filter = ["payment_method", "open", "paid", "cancelled", "refunded", "user"]
|
2016-05-10 20:20:01 +00:00
|
|
|
|
2019-06-16 12:32:24 +00:00
|
|
|
exclude = ["products"]
|
2016-05-10 20:20:01 +00:00
|
|
|
|
2018-08-17 09:59:28 +00:00
|
|
|
inlines = [ProductInline, ShopTicketInline]
|
2016-05-25 18:05:31 +00:00
|
|
|
|
2019-06-16 12:32:24 +00:00
|
|
|
actions = [
|
|
|
|
"mark_order_as_paid",
|
|
|
|
"mark_order_as_refunded",
|
|
|
|
"mark_order_as_cancelled",
|
2019-07-29 20:32:49 +00:00
|
|
|
"create_tickets",
|
2019-06-16 12:32:24 +00:00
|
|
|
]
|
2016-05-25 18:05:31 +00:00
|
|
|
|
|
|
|
def mark_order_as_paid(self, request, queryset):
|
|
|
|
for order in queryset.filter(paid=False):
|
2017-10-03 21:45:22 +00:00
|
|
|
order.mark_as_paid(request)
|
2019-06-16 12:32:24 +00:00
|
|
|
|
|
|
|
mark_order_as_paid.description = "Mark order(s) as paid"
|
2016-05-10 20:20:01 +00:00
|
|
|
|
2016-06-18 21:42:58 +00:00
|
|
|
def mark_order_as_refunded(self, request, queryset):
|
|
|
|
for order in queryset.filter(refunded=False):
|
2016-06-19 06:49:30 +00:00
|
|
|
order.mark_as_refunded(request)
|
2019-06-16 12:32:24 +00:00
|
|
|
|
|
|
|
mark_order_as_refunded.description = "Mark order(s) as refunded"
|
2016-05-25 17:13:45 +00:00
|
|
|
|
2019-03-17 14:04:28 +00:00
|
|
|
def mark_order_as_cancelled(self, request, queryset):
|
|
|
|
for order in queryset.filter(cancelled=False):
|
|
|
|
order.mark_as_cancelled(request)
|
2019-06-16 12:32:24 +00:00
|
|
|
|
|
|
|
mark_order_as_cancelled.description = "Mark order(s) as cancelled"
|
2019-03-17 14:04:28 +00:00
|
|
|
|
2019-07-29 20:32:49 +00:00
|
|
|
def create_tickets(self, request, queryset):
|
|
|
|
for order in queryset.filter(paid=True):
|
|
|
|
order.create_tickets(request)
|
|
|
|
|
|
|
|
create_tickets.description = "Create tickets for order(s) (paid only)"
|
|
|
|
|
2016-08-27 08:17:43 +00:00
|
|
|
|
2016-08-27 08:29:26 +00:00
|
|
|
def get_user_email(obj):
|
|
|
|
return obj.order.user.email
|