models.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # coding=utf-8
  2. import os
  3. from PIL import Image
  4. from django.conf import settings
  5. from django.db import models
  6. from utils.file_operation import UploadFile, DeleteFile
  7. class UploadManager(models.Manager):
  8. def _addnew(self, file):
  9. width = None
  10. height = None
  11. path = UploadManager.calculatePath()
  12. filename = UploadFile(file, path)
  13. fullname = "%s%s" % (settings.MEDIA_ROOT, filename)
  14. size = os.path.getsize(fullname)
  15. try:
  16. img = Image.open(fullname)
  17. width, height = img.size
  18. # 缩略图压缩宽或高最大200
  19. if width > 1440:
  20. img = img.resize((1440, int((height / width) * 1440)), Image.ANTIALIAS)
  21. img.save(fullname)
  22. width, height = img.size
  23. except:
  24. pass
  25. instance = self.model(
  26. picture="%s%s" % (settings.MEDIA_URL, filename),
  27. width=width,
  28. height=height,
  29. file_size="%.2f" % (float(size) / 1024),
  30. )
  31. instance.save()
  32. return instance
  33. def _addnew_voice(self, file, time):
  34. path = UploadManager.calculatePath()
  35. filename = UploadFile(file, path)
  36. fullname = "%s%s" % (settings.MEDIA_ROOT, filename)
  37. size = os.path.getsize(fullname)
  38. instance = self.model(
  39. picture="%s%s" % (settings.MEDIA_URL, filename),
  40. width=200,
  41. height=200,
  42. file_size="%.2f" % (float(size) / 1024),
  43. voice_time=time,
  44. )
  45. instance.save()
  46. return instance
  47. @staticmethod
  48. def calculatePath():
  49. return commodity_image
  50. commodity_image = "product_image/"
  51. class Upload(models.Model):
  52. picture = models.CharField(verbose_name=u'图片路径', max_length=250)
  53. width = models.IntegerField(verbose_name=u"图片宽度", blank=True, default=0)
  54. height = models.IntegerField(verbose_name=u"图片高度", blank=True, default=0)
  55. create_time = models.DateTimeField(verbose_name=u'上传时间', auto_now_add=True, editable=False)
  56. file_size = models.FloatField(verbose_name="文件大小", blank=True, default=0)
  57. objects = UploadManager()
  58. class Meta:
  59. db_table = 'system_upload'
  60. verbose_name = u'文件上传'
  61. ordering = ['-create_time']
  62. index_together = (
  63. 'create_time',
  64. )
  65. default_permissions = ()
  66. def del_images(self):
  67. picture = self.picture
  68. self.delete()
  69. DeleteFile(picture)
  70. def get_path(self):
  71. return '%s%s' % (settings.SERVER_DOMAIN, self.picture)
  72. def get_picture(self):
  73. return self.picture