bornhack-website/src/shop/admin.py

181 lines
3.5 KiB
Python
Raw Normal View History

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
from .models import (
CoinifyAPICallback,
CoinifyAPIInvoice,
CoinifyAPIRequest,
EpayCallback,
EpayPayment,
Invoice,
CreditNote,
CustomOrder,
ProductCategory,
Product,
Order,
OrderProductRelation,
)
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):
list_display = [
'id',
'order',
'customorder',
'created',
'updated',
]
@admin.register(CreditNote)
class CreditNoteAdmin(admin.ModelAdmin):
list_display = [
'id',
'user',
'customer',
'amount',
'vat',
'paid',
'created',
'updated',
]
list_filter = [
'paid'
]
2016-05-31 21:23:05 +00:00
@admin.register(CustomOrder)
class CustomOrderAdmin(admin.ModelAdmin):
list_display = [
'id',
'customer',
'text',
'amount',
'vat',
'paid',
'created',
'updated',
]
list_filter = [
'paid',
]
@admin.register(ProductCategory)
class ProductCategoryAdmin(admin.ModelAdmin):
list_display = [
'name',
]
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"
available_from.short_description = 'Available from'
2018-03-04 14:38:40 +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"
available_to.short_description = 'Available to'
def stock_info(product):
if product.stock_amount:
return "{} / {}".format(
product.left_in_stock,
product.stock_amount
)
return "N/A"
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
list_display = [
'name',
'category',
'ticket_type',
'price',
stock_info,
available_from,
available_to
]
list_filter = [
'category',
'ticket_type',
]
search_fields = ['name']
class ProductInline(admin.TabularInline):
model = OrderProductRelation
@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
2016-05-31 21:23:05 +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
list_display = [
2016-05-31 20:15:56 +00:00
'id',
'created',
2017-09-14 20:58:45 +00:00
'updated',
'user',
2016-06-04 07:46:10 +00:00
'get_email',
'total',
'payment_method',
'open',
'paid',
2016-06-01 09:10:06 +00:00
'cancelled',
'refunded',
]
list_filter = [
'payment_method',
'open',
'paid',
'cancelled',
'refunded',
2016-06-18 18:51:53 +00:00
'user',
]
exclude = ['products']
2018-08-17 09:59:28 +00:00
inlines = [ProductInline, ShopTicketInline]
actions = ['mark_order_as_paid', 'mark_order_as_refunded']
def mark_order_as_paid(self, request, queryset):
for order in queryset.filter(paid=False):
order.mark_as_paid(request)
mark_order_as_paid.description = 'Mark order(s) as paid'
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)
mark_order_as_refunded.description = 'Mark order(s) as refunded'
2016-08-27 08:29:26 +00:00
def get_user_email(obj):
return obj.order.user.email