from django.contrib import admin
from .models import ResearchArea, ResearchProject, ResearchKeyword, Publication, PublicationAuthor
from traduction.admin_mixins import TranslatableAdminMixin


@admin.register(ResearchArea)
class ResearchAreaAdmin(TranslatableAdminMixin, admin.ModelAdmin):
    list_display = ['name', 'project_count', 'order', 'is_active']
    list_editable = ['order', 'is_active']
    prepopulated_fields = {'slug': ('name',)}
    search_fields = ['name', 'description']


class ResearchKeywordInline(admin.TabularInline):
    model = ResearchKeyword
    extra = 3


@admin.register(ResearchProject)
class ResearchProjectAdmin(TranslatableAdminMixin, admin.ModelAdmin):
    list_display = ['title', 'research_area', 'level', 'status', 'university', 'is_featured', 'is_active']
    list_filter = ['research_area', 'level', 'status', 'university', 'is_featured', 'is_active']
    search_fields = ['title', 'description']
    prepopulated_fields = {'slug': ('title',)}
    filter_horizontal = ['team_members']
    inlines = [ResearchKeywordInline]
    date_hierarchy = 'start_date'

    fieldsets = (
        ('Informations generales', {
            'fields': ('title', 'slug', 'short_description', 'description', 'image')
        }),
        ('Classification', {
            'fields': ('research_area', 'level', 'status', 'university')
        }),
        ('Equipe', {
            'fields': ('team_members',)
        }),
        ('Dates et financement', {
            'fields': ('start_date', 'end_date', 'funding_amount', 'funding_source'),
            'classes': ('collapse',)
        }),
        ('Liens', {
            'fields': ('external_url',),
            'classes': ('collapse',)
        }),
        ('Statut', {
            'fields': ('is_featured', 'is_active', 'order')
        }),
    )


class PublicationAuthorInline(admin.TabularInline):
    model = PublicationAuthor
    extra = 1
    raw_id_fields = ['person']


@admin.register(Publication)
class PublicationAdmin(TranslatableAdminMixin, admin.ModelAdmin):
    list_display = ['title', 'publication_type', 'venue', 'publication_date', 'is_peer_reviewed', 'is_featured']
    list_filter = ['publication_type', 'is_peer_reviewed', 'is_featured', 'publication_date']
    search_fields = ['title', 'abstract', 'venue']
    filter_horizontal = ['projects']
    inlines = [PublicationAuthorInline]
    date_hierarchy = 'publication_date'

    fieldsets = (
        ('Informations generales', {
            'fields': ('title', 'abstract', 'publication_type', 'venue', 'publication_date')
        }),
        ('Auteurs', {
            'fields': ('external_authors',)
        }),
        ('Projets', {
            'fields': ('projects',)
        }),
        ('Liens', {
            'fields': ('doi', 'pdf_url', 'external_url'),
            'classes': ('collapse',)
        }),
        ('Statut', {
            'fields': ('is_peer_reviewed', 'is_featured', 'is_active')
        }),
    )
