拍爱

models.py 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. from django.utils.translation import ugettext_lazy as _
  4. from models_ext import BaseModelMixin, upload_file_url, upload_path
  5. from shortuuidfield import ShortUUIDField
  6. class BrandInfo(BaseModelMixin):
  7. brand_id = ShortUUIDField(_(u'brand_id'), max_length=32, help_text=u'品牌唯一标识', db_index=True, unique=True)
  8. brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称')
  9. brand_descr = models.TextField(_(u'brand_descr'), max_length=255, blank=True, null=True, help_text=u'品牌描述')
  10. brand_logo = models.ImageField(_(u'brand_logo'), upload_to=upload_path, blank=True, null=True, help_text=u'品牌商标')
  11. position = models.IntegerField(_(u'position'), default=1, help_text=u'排序')
  12. class Meta:
  13. verbose_name = _(u'品牌信息')
  14. verbose_name_plural = _(u'品牌信息')
  15. def __unicode__(self):
  16. return unicode(self.pk)
  17. @property
  18. def brand_logo_url(self):
  19. return upload_file_url(self.brand_logo)
  20. @property
  21. def data(self):
  22. return {
  23. 'brand_id': self.brand_id,
  24. 'brand_name': self.brand_name,
  25. 'brand_descr': self.brand_descr,
  26. }
  27. class ModelInfo(BaseModelMixin):
  28. brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True)
  29. model_id = ShortUUIDField(_(u'model_id'), max_length=32, help_text=u'型号唯一标识', db_index=True, unique=True)
  30. model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称')
  31. model_descr = models.TextField(_(u'model_descr'), max_length=255, blank=True, null=True, help_text=u'型号描述')
  32. position = models.IntegerField(_(u'position'), default=1, help_text=u'排序')
  33. class Meta:
  34. verbose_name = _(u'型号信息')
  35. verbose_name_plural = _(u'型号信息')
  36. def __unicode__(self):
  37. return unicode(self.pk)
  38. @property
  39. def data(self):
  40. return {
  41. 'model_id': self.model_id,
  42. 'model_name': self.model_name,
  43. 'model_descr': self.model_descr,
  44. }
  45. @property
  46. def images(self):
  47. imgs = ModelImageInfo.objects.filter(model_id=self.model_id, status=True)
  48. return [img.data for img in imgs]
  49. class ModelImageInfo(BaseModelMixin):
  50. model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'型号唯一标识', db_index=True)
  51. image = models.ImageField(_(u'image'), upload_to=upload_path, blank=True, null=True, help_text=u'图片')
  52. url = models.CharField(_(u'url'), max_length=255, blank=True, null=True, help_text=u'链接')
  53. position = models.IntegerField(_(u'position'), default=1, help_text=u'排序')
  54. class Meta:
  55. verbose_name = _(u'型号图片信息')
  56. verbose_name_plural = _(u'型号图片信息')
  57. def __unicode__(self):
  58. return unicode(self.pk)
  59. @property
  60. def image_url(self):
  61. return upload_file_url(self.image)
  62. @property
  63. def data(self):
  64. return {
  65. 'image_url': self.image_url,
  66. 'url': self.url,
  67. }
  68. class DistributorInfo(BaseModelMixin):
  69. brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True)
  70. distributor_id = ShortUUIDField(_(u'distributor_id'), max_length=32, help_text=u'经销商唯一标识', db_index=True, unique=True)
  71. distributor_name = models.CharField(_(u'distributor_name'), max_length=255, blank=True, null=True, help_text=u'经销商名称')
  72. distributor_descr = models.TextField(_(u'distributor_descr'), max_length=255, blank=True, null=True, help_text=u'经销商描述')
  73. position = models.IntegerField(_(u'position'), default=1, help_text=u'排序')
  74. class Meta:
  75. verbose_name = _(u'经销商信息')
  76. verbose_name_plural = _(u'经销商信息')
  77. def __unicode__(self):
  78. return unicode(self.pk)
  79. @property
  80. def data(self):
  81. return {
  82. 'distributor_id': self.distributor_id,
  83. 'distributor_name': self.distributor_name,
  84. 'distributor_descr': self.distributor_descr,
  85. }
  86. class LatestAppInfo(BaseModelMixin):
  87. latest_adr_version_code = models.IntegerField(_(u'latest_adr_version_code'), default=0, help_text=u'最新安卓版本号')
  88. latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=16, blank=True, null=True, help_text=u'最新安卓版本名')
  89. latest_adr_app = models.FileField(_(u'latest_adr_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版安卓 APP')
  90. latest_adr_url = models.URLField(_(u'latest_adr_url'), max_length=255, blank=True, null=True, help_text=u'最新版 APP 链接')
  91. latest_ios_version_code = models.IntegerField(_(u'latest_ios_version_code'), default=0, help_text=u'最新 iOS 版本号')
  92. latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=16, blank=True, null=True, help_text=u'最新 iOS 版本名')
  93. latest_ios_url = models.URLField(_(u'latest_ios_url'), max_length=255, blank=True, null=True, help_text=u'最新版 iOS 链接')
  94. class Meta:
  95. verbose_name = _(u'升级配置信息')
  96. verbose_name_plural = _(u'升级配置信息')
  97. def __unicode__(self):
  98. return u'{0.pk}'.format(self)
  99. @property
  100. def final_latest_adr_url(self):
  101. return self.latest_adr_url or upload_file_url(self.latest_adr_app)
  102. @property
  103. def data(self):
  104. return {
  105. 'latest_adr_version_code': self.latest_adr_version_code,
  106. 'latest_adr_version_name': self.latest_adr_version_name,
  107. 'latest_adr_url': self.final_latest_adr_url,
  108. 'latest_ios_version_code': self.latest_ios_version_code,
  109. 'latest_ios_version_name': self.latest_ios_version_name,
  110. 'latest_ios_url': self.latest_ios_url,
  111. }
  112. @property
  113. def adr(self):
  114. return {
  115. 'latest_adr_version_code': self.latest_adr_version_code,
  116. 'latest_adr_version_name': self.latest_adr_version_name,
  117. 'latest_adr_url': self.final_latest_adr_url,
  118. }