Commit 5323c072 authored by jocelyn's avatar jocelyn
Browse files

Add loan history and add form to admin item detail view

Allows easier manipulation from

Drops the need of understanding what is an item and what is a loan : everything
can be done from item page.

Fix #189
parent b2c28d2a
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -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()