models.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 = "commodity_image/"
  51. details_image = "details/"
  52. parameter_image = "parameter_image/"
  53. class Upload(models.Model):
  54. picture = models.CharField(verbose_name=u'图片路径', max_length=250)
  55. width = models.IntegerField(verbose_name=u"图片宽度", blank=True, default=0)
  56. height = models.IntegerField(verbose_name=u"图片高度", blank=True, default=0)
  57. create_time = models.DateTimeField(verbose_name=u'上传时间', auto_now_add=True, editable=False)
  58. file_size = models.FloatField(verbose_name="文件大小", blank=True, default=0)
  59. objects = UploadManager()
  60. class Meta:
  61. db_table = 'system_upload'
  62. verbose_name = u'文件上传'
  63. ordering = ['-create_time']
  64. index_together = (
  65. 'create_time',
  66. )
  67. default_permissions = ()
  68. def del_images(self):
  69. picture = self.picture
  70. self.delete()
  71. DeleteFile(picture)
  72. def get_path(self):
  73. return '%s%s' % (settings.SERVER_DOMAIN, self.picture)
  74. def get_picture(self):
  75. return self.picture