from django.db import models
from django.utils.text import slugify
from django_ckeditor_5.fields import CKEditor5Field


class Blog(models.Model):

    title_fa = models.CharField(max_length=250)
    title_en = models.CharField(max_length=250, blank=True)

    slug = models.SlugField(unique=True, blank=True)

    image = models.ImageField(upload_to="blog/")

    summary_fa = models.TextField()
    summary_en = models.TextField(blank=True)

    content_fa = CKEditor5Field(
        "متن فارسی",
        config_name="default"
    )

    content_en = CKEditor5Field(
        "English Content",
        config_name="default",
        blank=True
    )

    created_at = models.DateField(auto_now_add=True)

    is_active = models.BooleanField(default=True)

    class Meta:
        ordering = ["-created_at"]

    def save(self, *args, **kwargs):

        if not self.slug:

            base_slug = slugify(
                self.title_en if self.title_en else self.title_fa
            )

            slug = base_slug
            counter = 1

            while Blog.objects.filter(slug=slug).exclude(pk=self.pk).exists():
                slug = f"{base_slug}-{counter}"
                counter += 1

            self.slug = slug

        super().save(*args, **kwargs)

    def __str__(self):
        return self.title_fa