from django.contrib import admin
from django.contrib.admin import actions
from django import forms
from .models import Seminar,Teaching_course,Schedule
from django.urls import reverse




@admin.register(Seminar)
class SeminarAdmin(admin.ModelAdmin):
    change_list_template='seminar__change_list_form.html'

    # change_form_template = 'change_form.html'
    # add_form_template='add_form.html'
    list_display = ('title','showPublic','speaker_name','internal_talk','alumni_talk', 'start_time','slides','slides_public','recorded_seminar_boolean')
    search_fields = ['title','speaker_name']
    fieldsets = (
            (None, {
                'fields': ('showPublic',('alumni_talk','internal_talk','internal_status_talk'),('external','external_organized_by'),'title', 'abstract','start_time', 'announcement',('slides','slides_public'),
                'room',('video_conf','video_conf_display_name'),('recorded_seminar','record_public'),'slug')
            }),
            ('Organisational settings', {
                'fields': (('suggested_by','suggestion_date'),'invited_by','notes_internal')
            }),
            ('Calendar settings', {
                'fields': (('organisator_name', 'organisator_email'),'dsc_topic','dsc_subtopic')
            }),
            ('Speaker', {
                'fields': (('speaker_name', 'speaker_url'),'speaker_affiliation','image','speaker_cv','chair_related_speaker')
            }),
            ('Speaker references', {
                'fields': ('tud_fis','gepris','linkedin','xing','orcid','researchgate','researcher_id','research','googlescholar', 'scopus','adscientificindex','github','twitter','wiki')
            }),
        )
    ordering = ['-start_time']
    filter_horizontal=['chair_related_speaker','suggested_by','invited_by']
    def recorded_seminar_boolean(self, obj):
        return bool(obj.recorded_seminar)
    
    def has_delete_permission(self, request, obj=None):
        # Disable delete
        return False
    recorded_seminar_boolean.short_description='Recorded Seminar?'
    recorded_seminar_boolean.boolean=True
    



class Form_Teaching_courseAdmin(forms.ModelForm):
    class Meta:
        widgets = {
            'name': forms.TextInput(attrs={'size': '80'}),
        }

@admin.register(Teaching_course)
class Teaching_courseAdmin(admin.ModelAdmin):
    list_display = ('name','show_public','semester','get_responsible_person','get_teacher')
    fieldsets = (
            (None, {
                'fields': ('show_public','name','responsible_person','teacher', 'tutor', 'semester','study', 'module_plan_link','module_ressources', 'image','announcement','oldDB_schedule')
            }),
        )
    filter_horizontal=['study','responsible_person','teacher','tutor']
    # inlines = [ScheduleAdmin]
    readonly_fields=('oldDB_schedule',)
    save_as = True
    form=Form_Teaching_courseAdmin

    def get_responsible_person(self, obj):
        return ", ".join([c.__str__() for c in obj.responsible_person.all()])
    get_responsible_person.short_description='Responsible Person'

    def get_teacher(self, obj):
        return ", ".join([c.__str__() for c in obj.teacher.all()])
    get_teacher.short_description='Teacher'

    def get_actions(self, request):
        actions = super().get_actions(request)
        # Entferne die 'delete_selected'-Aktion aus den Aktionen
        del actions['delete_selected']
        return actions
    
    class Meta:
        model=Teaching_course
        



    
# Register the admin class with the associated model

