# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from datetime import date

from django.contrib import admin
from django.contrib.auth import get_user_model
from .models import ItemType, Item, Loan


User = get_user_model()

admin.site.register(ItemType)


class OwnerFilter(admin.SimpleListFilter):
    title = "Propriétaire"
    parameter_name = 'owner'

    def lookups(self, request, model_admin):
        owners = [
            (i.pk, i) for i in User.objects.filter(items__isnull=False)]

        return [(None, "L'association")] + owners

    def queryset(self, request, queryset):
        if self.value():
            return queryset.filter(owner__pk=self.value())
        else:
            return queryset


@admin.register(Item)
class ItemAdmin(admin.ModelAdmin):
    list_display = (
        'designation', 'type', 'mac_address', 'serial', 'owner',
        'buy_date', 'is_available')
    list_filter = ('type__name', 'buy_date', OwnerFilter)
    search_fields = (
        'designation', 'mac_address', 'serial',
        'owner__email', 'owner__nickname',
        'owner__first_name', 'owner__last_name')
    actions = ['give_back']

    def give_back(self, request, queryset):
        for item in queryset.filter(loans__loan_date_end=None):
            item.give_back()
    give_back.short_description = 'Rendre le matériel'

@admin.register(Loan)
class LoanAdmin(admin.ModelAdmin):
    list_display = ('item', 'user', 'loan_date', 'loan_date_end', 'location')
    list_filter = ('item__designation', 'user__username')
    search_fields = ('item', 'user')
    actions = ['end_loan']

    def end_loan(self, request, queryset):
        queryset.filter(loan_date_end=None).update(
            loan_date_end=date.today())
    end_loan.short_description = 'Mettre fin au prêt'