models.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from django.db import models
  2. from utils.exceptions import CustomError
  3. from PIL import Image
  4. from django.conf import settings
  5. from apps.tenant.models import Tenant
  6. from utils.file_operation import UploadFile, DeleteFile
  7. class Poster(models.Model):
  8. CAROUSEL =1
  9. POPUP = 2
  10. LOCATION_CHOICES = (
  11. (CAROUSEL, u'轮播'),
  12. (POPUP, u'弹窗'),
  13. )
  14. title = models.CharField(verbose_name=u'标题', max_length=100)
  15. content = models.CharField(verbose_name=u'内容',max_length=500)
  16. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建人", on_delete=models.PROTECT,
  17. editable=False)
  18. create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
  19. enable = models.BooleanField(verbose_name=u"在用", default=True)
  20. image = models.CharField(verbose_name=u'图片路径', max_length=250)
  21. width = models.IntegerField(verbose_name=u"图片宽度")
  22. height = models.IntegerField(verbose_name=u"图片高度")
  23. location = models.PositiveSmallIntegerField(choices=LOCATION_CHOICES, verbose_name=u"位置")
  24. tenant = models.ForeignKey(Tenant, verbose_name=u'企业', editable=False, on_delete=models.PROTECT, null=True)
  25. class Meta:
  26. db_table = 'poster'
  27. ordering = ['-id', 'tenant']
  28. verbose_name = u'轮播广告'
  29. def _add_img(self, file):
  30. width = None
  31. height = None
  32. path = "poster/"
  33. filename = UploadFile(file, path)
  34. fullname = "%s%s" % (settings.MEDIA_ROOT, filename)
  35. try:
  36. img = Image.open(fullname)
  37. width, height = img.size
  38. # 缩略图压缩宽或高最大200
  39. if width > 1440:
  40. img = img.resize((1440, int((height / width) * 1440)), Image.ANTIALIAS)
  41. img.save(fullname)
  42. width, height = img.size
  43. except:
  44. pass
  45. self.image = "%s%s" % (settings.MEDIA_URL, filename)
  46. self.width = width
  47. self.height = height
  48. self.save()
  49. def del_images(self):
  50. image = self.image
  51. # self.delete()
  52. DeleteFile(image)