122 lines
3.9 KiB
Python
122 lines
3.9 KiB
Python
from django.contrib import admin, messages
|
|
from django.http import HttpResponseRedirect
|
|
|
|
from .forms import RentalAdminForm, RentalItemAdminForm
|
|
from .models import Rental, RentalItem
|
|
from .utils import generate_rental_pdf
|
|
|
|
|
|
@admin.register(Rental)
|
|
class RentalAdmin(admin.ModelAdmin):
|
|
form = RentalAdminForm
|
|
model = Rental
|
|
|
|
list_display = [
|
|
"id",
|
|
"firstname",
|
|
"surname",
|
|
"status",
|
|
"total_disposit",
|
|
"date_start",
|
|
"date_end",
|
|
]
|
|
ordering = ["-id"]
|
|
|
|
readonly_fields = ["total_disposit"]
|
|
|
|
fieldsets = (
|
|
(
|
|
"Persönliche Daten",
|
|
{
|
|
"fields": (
|
|
("firstname", "surname"),
|
|
("organization", "matriculation_number"),
|
|
("email", "phone"),
|
|
),
|
|
},
|
|
),
|
|
(
|
|
"Verleih",
|
|
{
|
|
"fields": (
|
|
("date_start", "date_end"),
|
|
"reason",
|
|
"rentalitems",
|
|
("total_disposit", "intern"),
|
|
),
|
|
},
|
|
),
|
|
(
|
|
"Sonstiges",
|
|
{
|
|
"fields": (
|
|
"comment",
|
|
"file_field",
|
|
"status",
|
|
),
|
|
},
|
|
),
|
|
)
|
|
|
|
def add_view(self, request, form_url="", extra_context=None):
|
|
extra_context = extra_context or {}
|
|
extra_context["help_text"] = "Fette Schriften sind Pflichtfelder."
|
|
return super().add_view(request, form_url, extra_context=extra_context)
|
|
|
|
def change_view(self, request, object_id, form_url="", extra_context=None):
|
|
extra_context = extra_context or {}
|
|
extra_context["help_text"] = "Fette Schriften sind Pflichtfelder."
|
|
extra_context["generate_rental_pdf"] = True
|
|
return super().change_view(request, object_id, form_url, extra_context=extra_context)
|
|
|
|
def response_change(self, request, obj):
|
|
if "_generate_rental_pdf" in request.POST:
|
|
if generate_rental_pdf(obj):
|
|
self.message_user(
|
|
request,
|
|
"Neues Verleihformular wurde generiert.",
|
|
messages.SUCCESS,
|
|
)
|
|
else:
|
|
self.message_user(
|
|
request,
|
|
(
|
|
"Das PDF-Dokument konnte nicht generiert werden, da der Status nicht auf "
|
|
"'Verleih genehmigt' gesetzt ist."
|
|
),
|
|
messages.WARNING,
|
|
)
|
|
return HttpResponseRedirect(".")
|
|
return super().response_change(request, obj)
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
obj.author = request.user
|
|
super().save_model(request, obj, form, change)
|
|
|
|
@admin.display(description="Kaution insgesamt")
|
|
def total_disposit(self, obj):
|
|
total_disposit = obj.calc_total_deposit()
|
|
return f"{total_disposit} €"
|
|
|
|
|
|
@admin.register(RentalItem)
|
|
class RentalItemAdmin(admin.ModelAdmin):
|
|
form = RentalItemAdminForm
|
|
model = RentalItem
|
|
|
|
ordering = ["name"]
|
|
|
|
def add_view(self, request, form_url="", extra_context=None):
|
|
extra_context = extra_context or {}
|
|
extra_context["help_text"] = "Fette Schriften sind Pflichtfelder."
|
|
return super().add_view(request, form_url, extra_context=extra_context)
|
|
|
|
def change_view(self, request, object_id, form_url="", extra_context=None):
|
|
extra_context = extra_context or {}
|
|
extra_context["help_text"] = "Fette Schriften sind Pflichtfelder."
|
|
return super().change_view(request, object_id, form_url, extra_context=extra_context)
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
obj.author = request.user
|
|
super().save_model(request, obj, form, change)
|