from django.db import models
from django.urls import reverse

from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType

from django.utils.translation import gettext_lazy as _


class Category(models.Model):

    name = models.CharField(unique=True, max_length=64)

    class Meta:
        verbose_name = _("Category")
        verbose_name_plural = _("Categories")

    def __str__(self):
        return self.name.capitalize()


class Tags(models.Model):

    tag_slug        = models.CharField(unique=True, max_length=64,)
    date_added      = models.DateTimeField(auto_now_add=True, editable=True)
    category        = models.ManyToManyField(Category)
    
    content_type    = models.ForeignKey(ContentType, on_delete=models.CASCADE, null=True)
    object_id       = models.PositiveBigIntegerField(null=True)
    content_object  = GenericForeignKey('content_type', 'object_id')

    class Meta:
        verbose_name = _("Tag")
        verbose_name_plural = _("Tags")

    def __str__(self):
        return self.tag_slug
    content_type    = models.ForeignKey(ContentType, on_delete=models.CASCADE, null=True)
