from django.contrib import admin

from .models import Cost, Good, Service, CostUse, GoodUse, Document


@admin.register(Document)
class DocumentAdmin(admin.ModelAdmin):
    list_display = ('name', 'date', 'type')


class GoodUseInline(admin.TabularInline):
    model = GoodUse
    extra = 1


class CostUseInline(admin.TabularInline):
    model = CostUse
    extra = 1


class DirectDocumentFilter(admin.SimpleListFilter):
    title = 'Document'

    parameter_name = 'document'

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

    def lookups(self, request, model_admin):
        for i in Document.objects.all():
            yield i.pk, str(i)


@admin.register(Cost)
class CostAdmin(admin.ModelAdmin):
    list_display = ('__str__', 'price', 'document')
    list_filter = [DirectDocumentFilter]


@admin.register(Good)
class GoodAdmin(admin.ModelAdmin):
    list_display = (
        '__str__', 'price', 'document',
        'provisioning_duration', 'monthly_provision')

    list_filter = [DirectDocumentFilter]


@admin.register(Service)
class ServiceAdmin(admin.ModelAdmin):
    list_display = ('name', 'subscriptions_count', 'document')
    inlines = (CostUseInline, GoodUseInline)
    list_filter = [DirectDocumentFilter]