2022-03-16 12:11:30 +01:00
|
|
|
#
|
|
|
|
|
|
|
|
from django.contrib import admin
|
|
|
|
from django.contrib.auth.admin import UserAdmin
|
2023-02-11 18:13:16 +01:00
|
|
|
from django.utils.decorators import method_decorator
|
2022-03-16 12:11:30 +01:00
|
|
|
from django.views.decorators.cache import never_cache
|
|
|
|
|
|
|
|
from .models import User
|
|
|
|
from .models import Drink
|
|
|
|
from .models import Order
|
|
|
|
from .models import Global
|
|
|
|
from .models import RegisterTransaction as Register
|
|
|
|
|
|
|
|
from .forms import CustomUserChangeForm
|
|
|
|
from .forms import CustomDrinkForm
|
|
|
|
from .forms import CustomGlobalForm
|
|
|
|
from .forms import CustomRegisterTransactionForm
|
|
|
|
|
2023-02-11 17:23:57 +01:00
|
|
|
|
2022-03-16 12:11:30 +01:00
|
|
|
# Admin Site
|
|
|
|
|
|
|
|
class CustomAdminSite(admin.AdminSite):
|
|
|
|
|
|
|
|
site_header = "Drinks Administration"
|
|
|
|
site_title = "Drinks Administration"
|
|
|
|
|
2023-02-11 18:13:16 +01:00
|
|
|
@method_decorator(never_cache)
|
2022-03-16 12:11:30 +01:00
|
|
|
def index(self, request, extra_context=None):
|
|
|
|
return super().index(request, extra_context={
|
|
|
|
"admin_info": Global.objects.get(name="admin_info").value_string,
|
|
|
|
**(extra_context or {})
|
|
|
|
})
|
|
|
|
|
|
|
|
adminSite = CustomAdminSite()
|
|
|
|
|
|
|
|
|
|
|
|
# Register your models here.
|
|
|
|
|
|
|
|
class CustomUserAdmin(UserAdmin):
|
|
|
|
|
|
|
|
model = User
|
|
|
|
form = CustomUserChangeForm
|
|
|
|
|
|
|
|
fieldsets_ = list((*UserAdmin.fieldsets,))
|
|
|
|
fieldsets_.insert(1, (
|
2023-04-13 21:19:11 +02:00
|
|
|
"Visibility",
|
|
|
|
{"fields": ("hide_from_userlist",)},
|
|
|
|
))
|
|
|
|
fieldsets_.insert(2, (
|
2022-08-06 18:56:39 +02:00
|
|
|
"Balance",
|
|
|
|
{"fields": ("balance", "allow_order_with_negative_balance")},
|
|
|
|
))
|
2023-04-13 21:19:11 +02:00
|
|
|
fieldsets_.insert(3, (
|
2022-10-15 19:37:01 +02:00
|
|
|
"Supply",
|
|
|
|
{"fields": ("allowed_to_supply",)},
|
|
|
|
))
|
2023-04-13 21:19:11 +02:00
|
|
|
fieldsets_.insert(4, (
|
2022-08-06 18:56:39 +02:00
|
|
|
"Profile Picture",
|
|
|
|
{"fields": ("profile_picture_filename",)},
|
|
|
|
))
|
2022-03-16 12:11:30 +01:00
|
|
|
fieldsets = tuple(fieldsets_)
|
|
|
|
|
2023-04-13 21:19:11 +02:00
|
|
|
list_display = ["username", "balance", "allow_order_with_negative_balance", "is_active", "hide_from_userlist"]
|
2022-03-16 12:11:30 +01:00
|
|
|
|
|
|
|
def get_actions(self, request): # remove the "delete_selected" action because it breaks some functionality
|
|
|
|
actions = super().get_actions(request)
|
|
|
|
if 'delete_selected' in actions:
|
|
|
|
del actions['delete_selected']
|
|
|
|
return actions
|
|
|
|
|
|
|
|
adminSite.register(User, CustomUserAdmin)
|
|
|
|
|
|
|
|
|
|
|
|
class CustomDrinkAdmin(admin.ModelAdmin):
|
|
|
|
|
|
|
|
model = Drink
|
|
|
|
form = CustomDrinkForm
|
2022-05-24 18:49:04 +02:00
|
|
|
list_display = ["product_name", "content_litres", "price", "available", "do_not_count", "deleted"]
|
2022-03-16 12:11:30 +01:00
|
|
|
|
|
|
|
adminSite.register(Drink, CustomDrinkAdmin)
|
|
|
|
|
|
|
|
|
|
|
|
class CustomRegisterAdmin(admin.ModelAdmin):
|
|
|
|
|
|
|
|
model = Register
|
|
|
|
form = CustomRegisterTransactionForm
|
|
|
|
site_title = "Register"
|
|
|
|
list_display = ["datetime", "transaction_sum", "user", "comment"]
|
|
|
|
actions = ["delete_selected_new"]
|
|
|
|
|
|
|
|
def get_actions(self, request): # remove the "delete_selected" action because it breaks some functionality
|
|
|
|
actions = super().get_actions(request)
|
|
|
|
if 'delete_selected' in actions:
|
|
|
|
del actions['delete_selected']
|
|
|
|
return actions
|
|
|
|
|
|
|
|
def delete_selected_new(self, request, queryset):
|
|
|
|
for supply in queryset:
|
|
|
|
supply.delete()
|
|
|
|
if queryset.count() < 2:
|
|
|
|
self.message_user(request, f"Revoked {queryset.count()} supply.")
|
|
|
|
else:
|
|
|
|
self.message_user(request, f"Revoked {queryset.count()} supplies.")
|
|
|
|
delete_selected_new.short_description = "Revoke selected transactions"
|
|
|
|
|
|
|
|
adminSite.register(Register, CustomRegisterAdmin)
|
|
|
|
|
|
|
|
|
|
|
|
class CustomOrderAdmin(admin.ModelAdmin):
|
|
|
|
|
|
|
|
model = Order
|
|
|
|
list_display = ["product_name", "amount", "price_sum", "user", "datetime"]
|
|
|
|
actions = ["delete_selected_new"]
|
|
|
|
|
|
|
|
def get_actions(self, request): # remove the "delete_selected" action because it breaks some functionality
|
|
|
|
actions = super().get_actions(request)
|
|
|
|
if 'delete_selected' in actions:
|
|
|
|
del actions['delete_selected']
|
|
|
|
return actions
|
|
|
|
|
|
|
|
def delete_selected_new(self, request, queryset):
|
|
|
|
for order in queryset:
|
|
|
|
order.delete()
|
|
|
|
self.message_user(request, f"Revoked {queryset.count()} order(s).")
|
|
|
|
delete_selected_new.short_description = "Revoke selected orders"
|
|
|
|
|
|
|
|
adminSite.register(Order, CustomOrderAdmin)
|
|
|
|
|
|
|
|
|
|
|
|
class CustomGlobalAdmin(admin.ModelAdmin):
|
|
|
|
|
|
|
|
model = Global
|
|
|
|
form = CustomGlobalForm
|
|
|
|
list_display = ["name", "value_float", "value_string"]
|
|
|
|
|
|
|
|
def get_actions(self, request): # remove the "delete_selected" action because it breaks some functionality
|
|
|
|
actions = super().get_actions(request)
|
|
|
|
if 'delete_selected' in actions:
|
|
|
|
del actions['delete_selected']
|
|
|
|
return actions
|
|
|
|
|
|
|
|
adminSite.register(Global, CustomGlobalAdmin)
|