models.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. from django.db import models
  2. from django.conf import settings
  3. from django.db.models import F
  4. from PIL import Image
  5. from utils.file_operation import UploadFile
  6. class Config(models.Model):
  7. LEAVE_LEAD_TIME = "leave_lead_time" # 付款码支付__付款码图片
  8. property = models.CharField(max_length=100, verbose_name='属性')
  9. value = models.TextField(blank=True, max_length=250, null=True, verbose_name='值')
  10. class Meta:
  11. db_table = "system_config"
  12. verbose_name = u"综合设置"
  13. default_permissions = ()
  14. permissions = [
  15. ('manage_system_config', u'管理'),
  16. ]
  17. @staticmethod
  18. def get_value(property):
  19. if property in [Config.LEAVE_LEAD_TIME,]:
  20. row = Config.objects.get(property=property)
  21. return row.value
  22. return ''
  23. class Balance(models.Model):
  24. balance = models.IntegerField(verbose_name=u'余额', default=0)
  25. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建人", related_name='balance_create_user',
  26. on_delete=models.PROTECT, editable=False)
  27. class Meta:
  28. verbose_name = u"用户余额"
  29. db_table = "user_balance"
  30. ordering = ['-id']
  31. @staticmethod
  32. def update_balance(user, amount, desc):
  33. Balance.objects.filter(create_user=user).update(balance=F('balance') + amount)
  34. BalanceLog.objects.create(description=desc, amount=amount,create_user=user)
  35. class BalanceLog(models.Model):
  36. description = models.CharField(verbose_name=u'描述', max_length=100)
  37. amount = models.IntegerField(verbose_name=u'金额', default=0)
  38. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建人", related_name='balance_log_create_user',
  39. on_delete=models.PROTECT, editable=False)
  40. create_time = models.DateTimeField(verbose_name=u'创建时间', auto_now_add=True, editable=False)
  41. class Meta:
  42. verbose_name = u"余额明细"
  43. db_table = "user_balance_log"
  44. ordering = ['-id']
  45. class Poster(models.Model):
  46. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建人", on_delete=models.PROTECT,
  47. editable=False)
  48. create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
  49. enable = models.BooleanField(verbose_name=u"在用", default=True)
  50. image = models.TextField(verbose_name=u'图片路径', null=True)
  51. width = models.IntegerField(verbose_name=u"图片宽度", null=True)
  52. height = models.IntegerField(verbose_name=u"图片高度", null=True)
  53. class Meta:
  54. db_table = 'poster'
  55. ordering = ['-id']
  56. verbose_name = u'轮播广告'
  57. def _add_img(self, file):
  58. width = None
  59. height = None
  60. path = "poster/"
  61. filename = UploadFile(file, path)
  62. fullname = "%s%s" % (settings.MEDIA_ROOT, filename)
  63. try:
  64. img = Image.open(fullname)
  65. width, height = img.size
  66. # 缩略图压缩宽或高最大200
  67. if width > 1440:
  68. img = img.resize((1440, int((height / width) * 1440)), Image.ANTIALIAS)
  69. img.save(fullname)
  70. width, height = img.size
  71. except:
  72. pass
  73. self.image = "%s%s" % (settings.MEDIA_URL, filename)
  74. self.width = width
  75. self.height = height
  76. self.save()