from django.contrib import admin
from utils.widgets import LGEntryForm

from .models import Publication, Editor, Pitch, Section, PitchIdea


@admin.register(Publication)
class PublicationAdmin(admin.ModelAdmin):
    form = LGEntryForm
    list_display = ('name', 'status')
    list_filter = ('status',)
    search_fields = ['name']
    fieldsets = (
        ('', {
            'fields': ('name', 'notes', 'status'),
            'classes': ('show', 'extrapretty', 'wide')
        }),
    )


@admin.register(Editor)
class EditorAdmin(admin.ModelAdmin):
    list_display = ('last_name', 'first_name', 'publication', 'sections')
    list_filter = ('publication', 'section')
    search_fields = ['first_name', 'last_name', 'publication__name', 'section']
    filter_horizontal = ('section',)

    def sections(self, obj):
        return [section for section in obj.section.all()]
    sections.boolean = False

    fieldsets = (
        ('', {
            'fields': ('first_name', 'last_name', 'email', 'publication', 'section', 'notes', 'phone', 'twitter'),
            'classes': ('show', 'extrapretty', 'wide')
        }),
    )


@admin.register(Pitch)
class PitchAdmin(admin.ModelAdmin):
    list_display = ('title', 'date_sent', 'accepted', 'editor', 'publication')
    list_filter = ('editor__publication', 'editor__section')

    def publication(self, obj):
        return obj.editor.publication
    publication.boolean = False

    fieldsets = (
        ('', {
            'fields': ('title', 'pitch', 'editor', 'accepted', 'date_sent'),
            'classes': ('show', 'extrapretty', 'wide')
        }),
    )


@admin.register(PitchIdea)
class PitchIdeaAdmin(admin.ModelAdmin):
    list_display = ('title', )

    fieldsets = (
        ('', {
            'fields': ('title', 'pitch', 'publication'),
            'classes': ('show', 'extrapretty', 'wide')
        }),
    )


@admin.register(Section)
class SectionAdmin(admin.ModelAdmin):
    list_display = ('name',)
    fieldsets = (
        ('', {
            'fields': ('name',),
            'classes': ('show', 'extrapretty', 'wide')
        }),
    )