from django.contrib import admin
from django.db import models

from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from diplomas.models import Curso, Alumno, Responsable, Miembro

from .forms import CustomUserCreationForm, CustomUserChangeForm
from allauth.account.models import EmailAddress, signals
from .models import CustomUser, AbstractUser
from import_export import resources
from import_export.admin import ImportExportModelAdmin
import time
from django.db.models.signals import post_save, pre_save
from django.db.models.signals import m2m_changed

from django.dispatch import receiver


class CustomUserResource(resources.ModelResource):
    class Meta:
        model = CustomUser
        fields = ('id', 'email', 'username','prefix', 'first_name', 'last_name', 'password', 'is_superuser', 'is_staff', 'is_active')
        # widgets = {
        #         'published': {'format': '%d.%m.%Y'},
        #         }


class EmailAddressInline(admin.StackedInline):
    model = EmailAddress
    extra = 1

class AlumnoInline(admin.StackedInline, ImportExportModelAdmin):
    model = Alumno
    extra = 1 

class CustomUserAdmin(ImportExportModelAdmin, admin.ModelAdmin):
    resource_class = CustomUserResource
    add_form = CustomUserCreationForm
    form = CustomUserChangeForm
    model = CustomUser
    list_display = ['id', 'email', 'username', 'prefix','first_name', 'last_name', 'password', 'is_superuser', 'is_staff', 'is_active', 'date_joined']
    list_editable = ['email', 'username', 'prefix', 'first_name', 'last_name', 'password', 'is_superuser', 'is_staff', 'is_active', 'date_joined']
    inline = [EmailAddressInline, AlumnoInline,]
    search_fields = ['email', 'username', 'first_name', 'last_name']
    #autocomplete_fields = ['last_name',]

    def save_model(self, request, obj, form, change):
        #print('H')
        super().save_model(request, obj, form, change)
        print(obj.username)
        #time.sleep(10)
       
        
        
        #print(usuario.username)
        #self.ins_alumno(usuario)
admin.site.register(CustomUser, CustomUserAdmin)
# @receiver(post_save, sender=CustomUser,)
# def ins_alumno(sender, instance, **kwargs):
#     #print('Hola')
#     #if action == 'post_add':
#     instance.was_saved = True
    
#     print('Hola')
#     usuario = CustomUser.objects.get(pk=instance.pk)
#         #print(usuario.username)
#         #print(obj.username)
#     p = Alumno(id_alumno = usuario.username, nro_doc= usuario.username)
#     p.save()
#post_save.connect(ins_alumno, sender=CustomUser,)
