attachmenttype.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from django.db import models
  2. from django.utils.translation import gettext_lazy as _
  3. class AttachmentType(models.Model):
  4. ENABLED = 0
  5. LOCKED = 1
  6. DISABLED = 2
  7. name = models.CharField(max_length=255)
  8. extensions = models.CharField(max_length=255)
  9. mimetypes = models.CharField(null=True, blank=True, max_length=255)
  10. size_limit = models.PositiveIntegerField(default=1024)
  11. status = models.PositiveIntegerField(
  12. default=ENABLED,
  13. choices=[
  14. (ENABLED, _("Allow uploads and downloads")),
  15. (LOCKED, _("Allow downloads only")),
  16. (DISABLED, _("Disallow both uploading and downloading")),
  17. ],
  18. )
  19. limit_uploads_to = models.ManyToManyField(
  20. "misago_acl.Role", related_name="+", blank=True
  21. )
  22. limit_downloads_to = models.ManyToManyField(
  23. "misago_acl.Role", related_name="+", blank=True
  24. )
  25. def __str__(self):
  26. return self.name
  27. @property
  28. def is_enabled(self):
  29. return self.status == AttachmentType.ENABLED
  30. @property
  31. def is_locked(self):
  32. return self.status == AttachmentType.LOCKED
  33. @property
  34. def extensions_list(self):
  35. if self.extensions:
  36. return self.extensions.split(",")
  37. return []
  38. @property
  39. def mimetypes_list(self):
  40. if self.mimetypes:
  41. return self.mimetypes.split(",")
  42. return []