|
@@ -56,6 +56,39 @@ class AvailabilityFilter(admin.SimpleListFilter):
|
|
|
return queryset
|
|
|
|
|
|
|
|
|
+class LoanHistoryInline(admin.TabularInline):
|
|
|
+ model = Loan
|
|
|
+ extra = 0
|
|
|
+ readonly_fields = ('user', 'item', 'loan_date', 'loan_date_end', 'notes')
|
|
|
+ ordering = ['-loan_date_end']
|
|
|
+ verbose_name_plural = "Historique de prêt de cet objet"
|
|
|
+ show_change_link = True
|
|
|
+
|
|
|
+ def has_add_permission(self, request, obj=None):
|
|
|
+ return False
|
|
|
+
|
|
|
+ def has_delete_permission(self, request, obj=None):
|
|
|
+ return False
|
|
|
+
|
|
|
+
|
|
|
+class AddLoanInline(admin.StackedInline):
|
|
|
+ model = Loan
|
|
|
+ extra = 1
|
|
|
+ max_num = 1
|
|
|
+ fields = ('user', 'item', 'loan_date', 'notes')
|
|
|
+ verbose_name_plural = "Déclarer le prêt de cet objet"
|
|
|
+ classes = ['collapse'] # Django >= 1.10-ready
|
|
|
+
|
|
|
+ form = autocomplete_light.modelform_factory(Loan, fields='__all__')
|
|
|
+
|
|
|
+ def get_queryset(self, request):
|
|
|
+ qs = super(AddLoanInline, self).get_queryset(request)
|
|
|
+ return qs.none()
|
|
|
+
|
|
|
+ def has_delete_permission(self, request, obj=None):
|
|
|
+ return False
|
|
|
+
|
|
|
+
|
|
|
@admin.register(Item)
|
|
|
class ItemAdmin(admin.ModelAdmin):
|
|
|
list_display = (
|
|
@@ -77,6 +110,8 @@ class ItemAdmin(admin.ModelAdmin):
|
|
|
|
|
|
form = autocomplete_light.modelform_factory(Loan, fields='__all__')
|
|
|
|
|
|
+ inlines = [AddLoanInline, LoanHistoryInline]
|
|
|
+
|
|
|
def give_back(self, request, queryset):
|
|
|
for item in queryset.filter(loans__loan_date_end=None):
|
|
|
item.give_back()
|