Sith/counter/admin.py

151 lines
3.8 KiB
Python
Raw Normal View History

#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
2024-09-23 08:25:27 +00:00
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#
2016-03-28 12:54:35 +00:00
from django.contrib import admin
2017-10-10 21:33:15 +00:00
from haystack.admin import SearchModelAdmin
2016-03-28 12:54:35 +00:00
from counter.models import (
AccountDump,
BillingInfo,
CashRegisterSummary,
Counter,
Customer,
Eticket,
Permanency,
Product,
ProductType,
Refilling,
Selling,
)
2016-03-28 12:54:35 +00:00
2017-10-10 21:33:15 +00:00
2022-12-19 19:55:33 +00:00
@admin.register(Product)
2017-10-10 21:33:15 +00:00
class ProductAdmin(SearchModelAdmin):
2022-12-19 19:55:33 +00:00
list_display = (
"name",
"code",
"product_type",
"selling_price",
"profit",
"archived",
)
search_fields = ("name", "code")
2017-10-10 21:33:15 +00:00
2022-12-19 19:55:33 +00:00
@admin.register(Customer)
2017-10-10 21:33:15 +00:00
class CustomerAdmin(SearchModelAdmin):
2022-12-19 19:55:33 +00:00
list_display = ("user", "account_id", "amount")
search_fields = (
"account_id",
"user__username",
"user__first_name",
"user__last_name",
)
2024-07-29 22:56:13 +00:00
autocomplete_fields = ("user",)
2017-10-10 21:33:15 +00:00
@admin.register(BillingInfo)
class BillingInfoAdmin(admin.ModelAdmin):
list_display = ("first_name", "last_name", "address_1", "city", "country")
2024-09-26 15:55:53 +00:00
autocomplete_fields = ("customer",)
2024-10-06 20:24:20 +00:00
@admin.register(AccountDump)
class AccountDumpAdmin(admin.ModelAdmin):
2024-10-16 21:10:12 +00:00
date_hierarchy = "warning_mail_sent_at"
2024-10-06 20:24:20 +00:00
list_display = (
"customer",
"warning_mail_sent_at",
"warning_mail_error",
"dump_operation",
2024-10-16 21:10:12 +00:00
"amount",
2024-10-06 20:24:20 +00:00
)
2024-10-16 21:10:12 +00:00
autocomplete_fields = ("customer", "dump_operation")
2024-10-06 20:24:20 +00:00
list_filter = ("warning_mail_error",)
2024-10-16 21:10:12 +00:00
def get_queryset(self, request):
# the `amount` property requires to know the customer and the dump_operation
return (
super()
.get_queryset(request)
.select_related("customer", "customer__user", "dump_operation")
)
2024-10-06 20:24:20 +00:00
2022-12-19 19:55:33 +00:00
@admin.register(Counter)
class CounterAdmin(admin.ModelAdmin):
list_display = ("name", "club", "type")
2024-07-29 22:56:13 +00:00
autocomplete_fields = ("products", "sellers")
2022-12-19 19:55:33 +00:00
@admin.register(Refilling)
class RefillingAdmin(SearchModelAdmin):
list_display = ("customer", "amount", "counter", "payment_method", "date")
2024-07-29 22:56:13 +00:00
autocomplete_fields = ("customer", "operator")
2022-12-19 19:55:33 +00:00
search_fields = (
"customer__user__username",
"customer__user__first_name",
"customer__user__last_name",
"customer__account_id",
"counter__name",
)
@admin.register(Selling)
class SellingAdmin(SearchModelAdmin):
list_display = ("customer", "label", "unit_price", "quantity", "counter", "date")
search_fields = (
"customer__user__username",
"customer__user__first_name",
"customer__user__last_name",
"customer__account_id",
"counter__name",
)
2024-07-29 22:56:13 +00:00
autocomplete_fields = ("customer", "seller")
2022-12-19 19:55:33 +00:00
@admin.register(Permanency)
class PermanencyAdmin(SearchModelAdmin):
list_display = ("user", "counter", "start", "duration")
search_fields = (
"user__username",
"user__first_name",
"user__last_name",
"counter__name",
)
2024-07-29 22:56:13 +00:00
autocomplete_fields = ("user",)
2022-12-19 19:55:33 +00:00
@admin.register(ProductType)
class ProductTypeAdmin(admin.ModelAdmin):
2024-12-15 17:55:09 +00:00
list_display = ("name", "order")
2022-12-19 19:55:33 +00:00
@admin.register(CashRegisterSummary)
class CashRegisterSummaryAdmin(SearchModelAdmin):
list_display = ("user", "counter", "date")
search_fields = (
"user__username",
"user__first_name",
"user__last_name",
"counter__name",
)
2024-07-29 22:56:13 +00:00
autocomplete_fields = ("user",)
2022-12-19 19:55:33 +00:00
@admin.register(Eticket)
class EticketAdmin(SearchModelAdmin):
list_display = ("product", "event_date", "event_title")
search_fields = ("product__name", "event_title")