models.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. from django.db import models
  2. from django.utils.translation import gettext
  3. from mptt.models import MPTTModel, TreeForeignKey
  4. class Theme(MPTTModel):
  5. parent = TreeForeignKey(
  6. "self", on_delete=models.PROTECT, null=True, blank=True, related_name="children"
  7. )
  8. name = models.CharField(max_length=255)
  9. is_default = models.BooleanField(default=False)
  10. is_active = models.BooleanField(default=False)
  11. version = models.CharField(max_length=255, null=True, blank=True)
  12. author = models.CharField(max_length=255, null=True, blank=True)
  13. url = models.URLField(max_length=255, null=True, blank=True)
  14. class MPTTMeta:
  15. order_insertion_by = ["is_default", "name"]
  16. def __str__(self):
  17. if self.is_default:
  18. return gettext("Default Misago Theme")
  19. return self.name
  20. @property
  21. def level_range(self):
  22. return range(self.level)
  23. class Css(models.Model):
  24. theme = models.ForeignKey(Theme, on_delete=models.PROTECT, related_name="css")
  25. name = models.CharField(max_length=255)
  26. url = models.URLField(max_length=255, null=True, blank=True)
  27. file = models.ImageField(max_length=255, null=True, blank=True)
  28. size = models.PositiveIntegerField()
  29. order = models.IntegerField(default=0)
  30. is_enabled = models.BooleanField(default=True)
  31. uploaded_on = models.DateTimeField(auto_now_add=True)
  32. updated_on = models.DateTimeField(auto_now=True)
  33. class Meta:
  34. ordering = ["order"]
  35. def __str__(self):
  36. return self.name
  37. class Font(models.Model):
  38. theme = models.ForeignKey(Theme, on_delete=models.PROTECT, related_name="fonts")
  39. name = models.CharField(max_length=255)
  40. file = models.FileField(max_length=255)
  41. type = models.CharField(max_length=255)
  42. size = models.PositiveIntegerField()
  43. uploaded_on = models.DateTimeField(auto_now_add=True)
  44. updated_on = models.DateTimeField(auto_now=True)
  45. class Meta:
  46. ordering = ["name"]
  47. def __str__(self):
  48. return self.name
  49. class Image(models.Model):
  50. theme = models.ForeignKey(Theme, on_delete=models.PROTECT, related_name="images")
  51. name = models.CharField(max_length=255)
  52. file = models.ImageField(max_length=255)
  53. type = models.CharField(max_length=255)
  54. width = models.PositiveIntegerField()
  55. heigh = models.PositiveIntegerField()
  56. size = models.PositiveIntegerField()
  57. uploaded_on = models.DateTimeField(auto_now_add=True)
  58. updated_on = models.DateTimeField(auto_now=True)
  59. class Meta:
  60. ordering = ["name"]
  61. def __str__(self):
  62. return self.name