# # 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) # SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE # OR WITHIN THE LOCAL FILE "LICENSE" # # from django.contrib import admin from haystack.admin import SearchModelAdmin from counter.models import ( AccountDump, BillingInfo, CashRegisterSummary, Counter, Customer, Eticket, Permanency, Product, ProductType, Refilling, Selling, ) @admin.register(Product) class ProductAdmin(SearchModelAdmin): list_display = ( "name", "code", "product_type", "selling_price", "profit", "archived", ) search_fields = ("name", "code") @admin.register(Customer) class CustomerAdmin(SearchModelAdmin): list_display = ("user", "account_id", "amount") search_fields = ( "account_id", "user__username", "user__first_name", "user__last_name", ) autocomplete_fields = ("user",) @admin.register(BillingInfo) class BillingInfoAdmin(admin.ModelAdmin): list_display = ("first_name", "last_name", "address_1", "city", "country") autocomplete_fields = ("customer",) @admin.register(AccountDump) class AccountDumpAdmin(admin.ModelAdmin): date_hierarchy = "warning_mail_sent_at" list_display = ( "customer", "warning_mail_sent_at", "warning_mail_error", "dump_operation", "amount", ) autocomplete_fields = ("customer", "dump_operation") list_filter = ("warning_mail_error",) 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") ) @admin.register(Counter) class CounterAdmin(admin.ModelAdmin): list_display = ("name", "club", "type") autocomplete_fields = ("products", "sellers") @admin.register(Refilling) class RefillingAdmin(SearchModelAdmin): list_display = ("customer", "amount", "counter", "payment_method", "date") autocomplete_fields = ("customer", "operator") 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", ) autocomplete_fields = ("customer", "seller") @admin.register(Permanency) class PermanencyAdmin(SearchModelAdmin): list_display = ("user", "counter", "start", "duration") search_fields = ( "user__username", "user__first_name", "user__last_name", "counter__name", ) autocomplete_fields = ("user",) @admin.register(ProductType) class ProductTypeAdmin(admin.ModelAdmin): list_display = ("name", "order") @admin.register(CashRegisterSummary) class CashRegisterSummaryAdmin(SearchModelAdmin): list_display = ("user", "counter", "date") search_fields = ( "user__username", "user__first_name", "user__last_name", "counter__name", ) autocomplete_fields = ("user",) @admin.register(Eticket) class EticketAdmin(SearchModelAdmin): list_display = ("product", "event_date", "event_title") search_fields = ("product__name", "event_title")