拍爱

models.py 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. # -*- coding: utf-8 -*-
  2. import datetime
  3. import os
  4. import time
  5. from django.conf import settings
  6. from django.db import models
  7. from django.utils.translation import ugettext_lazy as _
  8. from pai2.basemodels import CreateUpdateMixin, PlatformMixin, VersionMixin
  9. def upload_path(instance, old_filename):
  10. extension = os.path.splitext(old_filename)[1].lower()
  11. today = datetime.datetime.today()
  12. return 'file/{year}{month}/{timestamp}{extension}'.format(
  13. year=today.year,
  14. month=today.month,
  15. timestamp=int(time.time()),
  16. extension=extension
  17. )
  18. class LatestAppInfo(CreateUpdateMixin):
  19. PAIAI_USER = 0
  20. PAIAI_LENSMAN = 1
  21. PAIAI_TOURGUIDE = 2
  22. SRC = (
  23. (PAIAI_USER, u'拍爱用户端'),
  24. (PAIAI_LENSMAN, u'拍爱摄影师端'),
  25. (PAIAI_TOURGUIDE, u'拍爱导游端'),
  26. )
  27. latest_adr_version_code = models.IntegerField(_(u'latest_adr_version_code'), default=0, help_text=u'最新安卓版本号')
  28. latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=255, blank=True, null=True, help_text=u'最新安卓版本名')
  29. latest_adr_app = models.FileField(_(u'latest_adr_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版安卓 APP')
  30. latest_adr_url = models.URLField(_(u'latest_adr_url'), max_length=255, blank=True, null=True, help_text=u'最新版 APP 链接')
  31. latest_ios_version_code = models.IntegerField(_(u'latest_ios_version_code'), default=0, help_text=u'最新 iOS 版本号')
  32. latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=255, blank=True, null=True, help_text=u'最新 iOS 版本名')
  33. latest_ios_url = models.URLField(_(u'latest_ios_url'), max_length=255, blank=True, null=True, help_text=u'最新版 iOS 链接')
  34. src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'最新版来源', db_index=True)
  35. class Meta:
  36. verbose_name = _('latestappinfo')
  37. verbose_name_plural = _('latestappinfo')
  38. def __unicode__(self):
  39. return u'{0.pk}'.format(self)
  40. @property
  41. def final_latest_adr_url(self):
  42. return self.latest_adr_url or u'{}{}'.format(settings.DOMAIN, self.latest_adr_app and self.latest_adr_app.url)
  43. @property
  44. def data(self):
  45. return {
  46. 'latest_adr_version_code': self.latest_adr_version_code,
  47. 'latest_adr_version_name': self.latest_adr_version_name,
  48. 'latest_adr_url': self.final_latest_adr_url,
  49. 'latest_ios_version_code': self.latest_ios_version_code,
  50. 'latest_ios_version_name': self.latest_ios_version_name,
  51. 'latest_ios_url': self.latest_ios_url,
  52. }
  53. class APPSettingsInfo(CreateUpdateMixin, PlatformMixin):
  54. channel = models.CharField(_(u'channel'), max_length=255, blank=True, null=True, help_text=u'渠道')
  55. version = models.CharField(_(u'version'), max_length=255, blank=True, null=True, help_text=u'版本')
  56. online = models.BooleanField(_(u'online'), default=True, help_text=u'是否上线')
  57. class Meta:
  58. verbose_name = _('appsettingsinfo')
  59. verbose_name_plural = _('appsettingsinfo')
  60. def __unicode__(self):
  61. return u'{0.pk}'.format(self)
  62. @property
  63. def data(self):
  64. return {
  65. 'online': self.online,
  66. }
  67. class SplashInfo(CreateUpdateMixin):
  68. PAIAI_USER = 0
  69. PAIAI_LENSMAN = 1
  70. PAIAI_TOURGUIDE = 2
  71. SRC = (
  72. (PAIAI_USER, u'拍爱用户端'),
  73. (PAIAI_LENSMAN, u'拍爱摄影师端'),
  74. (PAIAI_TOURGUIDE, u'拍爱导游端'),
  75. )
  76. splash_image = models.ImageField(_(u'splash_image'), upload_to=upload_path, blank=True, null=True, help_text=u'启动页面图片')
  77. spalash_image_airtime = models.DateTimeField(_(u'spalash_image_airtime'), blank=True, null=True, help_text=u'启动页面图片开始日期')
  78. spalash_image_deadline = models.DateTimeField(_(u'spalash_image_deadline'), blank=True, null=True, help_text=u'启动页面图片截止日期')
  79. src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'启动页面来源', db_index=True)
  80. class Meta:
  81. verbose_name = _('splashinfo')
  82. verbose_name_plural = _('splashinfo')
  83. def __unicode__(self):
  84. return u'{0.pk}'.format(self)
  85. @property
  86. def splash_image_url(self):
  87. return self.splash_image and (settings.DOMAIN + self.splash_image.url)
  88. @property
  89. def data(self):
  90. return {
  91. 'splash_image_url': self.splash_image_url,
  92. 'spalash_image_airtime': self.spalash_image_airtime,
  93. 'spalash_image_deadline': self.spalash_image_deadline,
  94. }
  95. class FeedbackInfo(CreateUpdateMixin):
  96. PAIAI_USER = 0
  97. PAIAI_LENSMAN = 1
  98. PAIAI_TOURGUIDE = 2
  99. SRC = (
  100. (PAIAI_USER, u'拍爱用户端'),
  101. (PAIAI_LENSMAN, u'拍爱摄影师端'),
  102. (PAIAI_TOURGUIDE, u'拍爱导游端'),
  103. )
  104. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')
  105. feedback = models.TextField(_(u'feedback'), blank=True, null=True, help_text=u'用户反馈')
  106. src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'用户反馈来源', db_index=True)
  107. class Meta:
  108. verbose_name = _('feedbackinfo')
  109. verbose_name_plural = _('feedbackinfo')
  110. def __unicode__(self):
  111. return u'{0.pk}'.format(self)
  112. class GuestEntranceControlInfo(CreateUpdateMixin, PlatformMixin, VersionMixin):
  113. class Meta:
  114. verbose_name = _('guestentrancecontrolinfo')
  115. verbose_name_plural = _('guestentrancecontrolinfo')
  116. def __unicode__(self):
  117. return u'{0.pk}'.format(self)
  118. @property
  119. def data(self):
  120. return {
  121. 'platform': self.platform,
  122. 'min_adr': self.min_adr,
  123. 'min_ios': self.min_ios,
  124. 'max_adr': self.max_adr,
  125. 'max_ios': self.max_ios,
  126. }