from django.db import models
from django import forms
from django.utils import timezone
import unicodedata
from apps.blog.models import Category
from apps.blog.models import Post
from apps.usuarios.models import Usuario
from ckeditor.widgets import CKEditorWidget
from ckeditor_uploader import widgets


class CategoriaForm(forms.ModelForm):
    name = forms.CharField(
        widget=forms.TextInput(
            attrs={'class': 'form-control',
                   'placeholder': 'Categoria',
                   'id': 'category',
                   }
        ))

    class Meta:
        model = Category
        fields = ('name',)


class PostForms(forms.ModelForm):
    category = forms.ModelChoiceField(queryset=Category.objects.all(),
                                      widget=forms.Select(
                                          attrs={'class': 'form-control',
                                                 'placeholder': 'Selecione ...',
                                                 'id': 'id_category'}))
    title = forms.CharField(widget=forms.TextInput(
        attrs={'class': 'form-control',
               'placeholder': 'Titulo',
               'id': 'id_title'}))
    excerpt = forms.CharField(widget=forms.TextInput(
        attrs={'class': 'form-control',
               'placeholder': 'Descripción'}))
    content = forms.CharField(widget=widgets.CKEditorUploadingWidget(
        attrs={'class': 'form-control'}))
    slug = forms.CharField(widget=forms.TextInput(
        attrs={'class': 'form-control',
               'placeholder': 'Acortador',
               'id': 'id_slug'}))
    miniature = forms.ImageField(max_length=250, widget=forms.FileInput(
        attrs={'placeholder': 'Imagen',
               'id': 'id_miniature',
               'class': 'custom-file-input',
               'required': False,
               'onchange':'showPreview(event);'}))
    status = forms.ChoiceField(choices=Post.options,
                               widget=forms.Select(attrs={'class': 'form-select', 'id': 'status'}))

    def clean_miniature(self):
        miniature = self.cleaned_data.get('miniature')
        if miniature:
            # Normalizar el nombre del archivo para eliminar caracteres no ASCII
            cleaned_filename = unicodedata.normalize('NFKD', miniature.name).encode('ASCII', 'ignore').decode('utf-8')
            # Asignar el nuevo nombre limpio al campo
            self.cleaned_data['miniature'].name = cleaned_filename
        return miniature

    class Meta:
        model = Post
        fields = ('category', 'title', 'excerpt', 'content', 'slug', 'miniature', 'status',)
        exclude = ['published', 'author']