from django.contrib import admin
from django.db.models import Q
from .models import Batch
from status.models import Status
from departments.models import Department
from teacher_management.models import Teacher


@admin.register(Batch)
class BatchAdmin(admin.ModelAdmin):
    list_display = ('batch_name', 'department', 'start_year', 'end_year', 'advisor', 'status', 'slug', 'is_global')
    search_fields = ('batch_name', 'department__department_name')
    prepopulated_fields = {'slug': ('batch_name',)}
    list_filter = ('department', 'status')

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'department':
            kwargs['queryset'] = Department.objects.filter(
                Q(is_global=True) | Q(organization__isnull=False)
            )
        elif db_field.name == 'status':
            kwargs['queryset'] = Status.objects.filter(
                Q(type='batch') & (Q(is_global=True) | Q(organization__isnull=False))
            )
        return super().formfield_for_foreignkey(db_field, request, **kwargs)
