from django.db import models
from django.utils.translation import gettext_lazy as _


class AttachmentType(models.Model):
    ENABLED = 0
    LOCKED = 1
    DISABLED = 2

    name = models.CharField(max_length=255)
    extensions = models.CharField(max_length=255)
    mimetypes = models.CharField(null=True, blank=True, max_length=255)
    size_limit = models.PositiveIntegerField(default=1024)
    status = models.PositiveIntegerField(
        default=ENABLED,
        choices=[
            (ENABLED, _("Allow uploads and downloads")),
            (LOCKED, _("Allow downloads only")),
            (DISABLED, _("Disallow both uploading and downloading")),
        ],
    )

    limit_uploads_to = models.ManyToManyField(
        "misago_acl.Role", related_name="+", blank=True
    )
    limit_downloads_to = models.ManyToManyField(
        "misago_acl.Role", related_name="+", blank=True
    )

    def __str__(self):
        return self.name

    @property
    def is_enabled(self):
        return self.status == AttachmentType.ENABLED

    @property
    def is_locked(self):
        return self.status == AttachmentType.LOCKED

    @property
    def extensions_list(self):
        if self.extensions:
            return self.extensions.split(",")
        return []

    @property
    def mimetypes_list(self):
        if self.mimetypes:
            return self.mimetypes.split(",")
        return []
