from email.policy import default
from django.db import models
from ckeditor.fields import RichTextField
from PIL import Image
import sys
from io import BytesIO
from django.core.files.uploadedfile import InMemoryUploadedFile
from django.urls import reverse
# Create your models here.
class BlogCategory(models.Model):
    name=models.CharField(max_length=64, default=None,
                        verbose_name="Blog Category Name",
                        help_text=f"Values: Enter Category Name.")
    parent = models.ForeignKey('self', blank=True, null=True, related_name='PARENTCHILDBLOG', on_delete=models.CASCADE)
    slug=models.SlugField(max_length=128, unique=True,
                        default=None,
                        verbose_name="Category Slug",
                        help_text=f"Values: Enter Blog Category Slug.")
    title=models.CharField(max_length=128, default=None,
                        verbose_name="Category Title",
                        help_text=f"Values: Enter Blog Category Meta Title.")
    description=models.TextField(max_length=165, default=None,
                        verbose_name="Category Description",
                        help_text=f"Values: Enter Blog Category Meta Description.")
    keyword=models.CharField(max_length=255, null=True, blank=True,
                        verbose_name="Category Keyword",
                        help_text=f"Values: Enter Blog Category Meta Keywords.")
    header_content=RichTextField(null=True, 
                            blank=True, 
                            verbose_name='Category Header Content',
                            help_text=f" Values: Blog Category Header Content")
    footer_content=RichTextField(null=True, 
                            blank=True, 
                            verbose_name='Category Footer Content',
                            help_text=f" Values: Blog Category Footer Content")                     
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "Blog Category"

class Blog(models.Model):
    category = models.ForeignKey(BlogCategory, related_name='BlogCategoryPost', on_delete=models.CASCADE, default=None)
    name = models.CharField(max_length=225, help_text=f"Enter Blog Name")
    slug = models.SlugField(max_length=225, unique=True, help_text=f"Enter Blog Slug")
    title = models.CharField(max_length=225, help_text=f"Enter Blog Title")
    description = models.TextField(max_length=285, help_text=f"Enter Blog Description")
    keyword = models.CharField(max_length=164, null=True, blank=True, help_text=f"Enter Blog Keywords")
    overview=RichTextField(null=True, 
                                        blank=True, 
                                        verbose_name='Blog Overview',
                                        help_text=f"Values: Enter Blog Content.")
    blog_image = models.ImageField(upload_to="blog_image", default=None, help_text=f"Upload Blog Image")
    blog_thumbnail=models.ImageField(upload_to='blog_image', 
                                    null=True, 
                                    blank=True,
                                    max_length=255,
                                    help_text=f"Values: Upload Blog Small Thumb."
                                    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('blog:blogdetail', kwargs={'slug': self.slug})

    def save(self):
        super().save()
        if self.blog_thumbnail:
            thump_img= Image.open(self.blog_thumbnail.path)
            if thump_img.width> 300 or thump_img.height > 200:
                # new_image = (328,250)
                # thump_img.thumbnail(new_image)
                thump_img = thump_img.resize((346, 260))
                thump_img.save(self.blog_thumbnail.path)
            else:
                print("not find img")    
        else:
            print("Not find any images")