models.py 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import os
  2. from django.db import models
  3. from django.conf import settings
  4. from PIL import Image
  5. from apps.tenant.models import Tenant
  6. from utils.file_operation import UploadFile, DeleteFile
  7. class OperationHelp(models.Model):
  8. title = models.CharField(verbose_name=u'标题', max_length=100)
  9. content = models.TextField(verbose_name=u'内容')
  10. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建人", on_delete=models.PROTECT,
  11. editable=False)
  12. create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
  13. enable = models.BooleanField(verbose_name=u"在用", default=True)
  14. tenant = models.ForeignKey(Tenant, verbose_name=u'企业', editable=False, on_delete=models.PROTECT)
  15. class Meta:
  16. db_table = 'operation_help'
  17. ordering = ['-id', 'tenant']
  18. verbose_name = u'运维帮助'
  19. class OperationHelpImg(models.Model):
  20. operation_help = models.ForeignKey(OperationHelp,verbose_name=u'运维帮助', on_delete=models.PROTECT,null=True)
  21. image = models.CharField(verbose_name=u'图片路径', max_length=250)
  22. width = models.IntegerField(verbose_name=u"图片宽度")
  23. height = models.IntegerField(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 = 'operation_help_img'
  27. ordering = ['-id']
  28. verbose_name = u'运维帮助图片'
  29. def _add_img(self,file,user_id):
  30. width = None
  31. height = None
  32. path = "operation_help_img/"
  33. filename = UploadFile(file, path, user_id)
  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)
  53. class OperationHelpRadio(models.Model):
  54. operation_help = models.ForeignKey(OperationHelp, verbose_name=u'运维帮助', on_delete=models.PROTECT, null=True)
  55. radio_path = models.CharField(verbose_name=u'视频路径', max_length=250)
  56. radio_size = models.FloatField(verbose_name="视频大小",blank=True, default=0)
  57. radio_time = models.FloatField(verbose_name="视频时长",blank=True, default=0)
  58. tenant = models.ForeignKey(Tenant, verbose_name=u'企业', editable=False, on_delete=models.PROTECT, null=True)
  59. class Meta:
  60. db_table = 'operation_help_radio'
  61. ordering = ['-id']
  62. verbose_name = u'运维帮助视频'
  63. def _add_radio(self, file, user_id):
  64. path = "operation_help_radio/"
  65. filename = UploadFile(file, path, user_id)
  66. fullname = "%s%s" % (settings.MEDIA_ROOT, filename)
  67. radio_size = os.path.getsize(fullname)
  68. self.radio_size = "%.2f" % (radio_size/(1024*1024))
  69. self.radio_path = "%s%s" % (settings.MEDIA_URL, filename)
  70. self.save()
  71. def del_radio(self):
  72. radio = self.radio_path
  73. self.delete()
  74. DeleteFile(radio)