拍爱

models.py 9.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. # -*- coding: utf-8 -*-
  2. from django.conf import settings
  3. from django.db import models
  4. from django.utils.translation import ugettext_lazy as _
  5. from pai2.basemodels import CreateUpdateMixin
  6. from utils.url_utils import img_url
  7. class GroupInfo(CreateUpdateMixin):
  8. APP_GROUP = 0
  9. SESSION_GROUP = 1
  10. GROUP_FROM = (
  11. (APP_GROUP, u'APP 建群'),
  12. (SESSION_GROUP, u'SESSION 建群'),
  13. )
  14. group_id = models.CharField(_(u'group_id'), max_length=255, blank=True, null=True, help_text=u'群组唯一标识', db_index=True, unique=True)
  15. admin_id = models.CharField(_(u'admin_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')
  16. group_name = models.CharField(_(u'group_name'), max_length=255, blank=True, null=True, help_text=u'群组名称')
  17. group_default_avatar = models.IntegerField(_(u'group_default_avatar'), default=0, help_text=u'群组默认头像,0 - 255,水果头像')
  18. group_avatar = models.CharField(_(u'group_avatar'), max_length=255, blank=True, null=True, help_text=u'群组头像')
  19. group_desc = models.TextField(_(u'group_desc'), blank=True, null=True, help_text=u'群组描述')
  20. group_from = models.IntegerField(_(u'group_from'), choices=GROUP_FROM, default=APP_GROUP, help_text=u'群组来源')
  21. session_id = models.CharField(_(u'session_id'), max_length=255, blank=True, null=True, help_text=u'照片组唯一标识', db_index=True)
  22. group_lock = models.BooleanField(_(u'group_lock'), default=False, help_text=u'群组锁定')
  23. class Meta:
  24. verbose_name = _(u'groupinfo')
  25. verbose_name_plural = _(u'groupinfo')
  26. def __unicode__(self):
  27. return unicode(self.group_id)
  28. @property
  29. def data(self):
  30. return {
  31. 'group_id': self.group_id,
  32. 'group_name': self.group_name,
  33. 'group_default_avatar': self.group_default_avatar,
  34. 'group_desc': self.group_desc,
  35. 'group_from': self.group_from,
  36. 'group_lock': self.group_lock,
  37. 'created_at': self.created_at,
  38. }
  39. def users(self, user_id):
  40. all_users = GroupUserInfo.objects.filter(group_id=self.group_id)
  41. passed_users = all_users.filter(user_status=GroupUserInfo.PASSED)
  42. passed_count = passed_users.count()
  43. passed = [passed.user_info for passed in passed_users]
  44. if self.admin_id != user_id:
  45. return {
  46. 'passed_count': passed_count,
  47. 'passed': passed,
  48. }
  49. applying_users = all_users.filter(user_status=GroupUserInfo.APPLYING)
  50. applying_count = applying_users.count()
  51. applying = [applying.user_info for applying in applying_users]
  52. return {
  53. 'applying_count': applying_count,
  54. 'passed_count': passed_count,
  55. 'applying': applying,
  56. 'passed': passed,
  57. }
  58. class GroupUserInfo(CreateUpdateMixin):
  59. APPLYING = 0
  60. PASSED = 1
  61. REFUSED = 2
  62. DELETED = 3
  63. USER_STATUS = (
  64. (APPLYING, u'申请中'),
  65. (PASSED, u'已通过'),
  66. (REFUSED, u'已拒绝'),
  67. (DELETED, u'已删除')
  68. )
  69. group_id = models.CharField(_(u'group_id'), max_length=255, blank=True, null=True, help_text=u'群组唯一标识', db_index=True)
  70. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')
  71. current_id = models.IntegerField(_(u'current_id'), default=-1, help_text=u'当前群组照片ID')
  72. nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称')
  73. avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
  74. admin = models.BooleanField(_(u'admin'), default=False, help_text=u'群组管理员')
  75. user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=APPLYING)
  76. passed_at = models.DateTimeField(_(u'passed_at'), blank=True, null=True, help_text=_(u'通过时间'))
  77. refused_at = models.DateTimeField(_(u'refused_at'), blank=True, null=True, help_text=_(u'拒绝时间'))
  78. deleted_at = models.DateTimeField(_(u'deleted_at'), blank=True, null=True, help_text=_(u'删除时间'))
  79. class Meta:
  80. verbose_name = _(u'groupuserinfo')
  81. verbose_name_plural = _(u'groupuserinfo')
  82. def __unicode__(self):
  83. return unicode(self.pk)
  84. @property
  85. def user_info(self):
  86. return {
  87. 'user_id': self.user_id,
  88. 'nickname': self.nickname,
  89. 'avatar': self.avatar,
  90. 'admin': self.admin,
  91. }
  92. class GroupPhotoInfo(CreateUpdateMixin):
  93. group_id = models.CharField(_(u'group_id'), max_length=255, blank=True, null=True, help_text=u'群组唯一标识', db_index=True)
  94. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')
  95. nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称')
  96. avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
  97. photo_path = models.CharField(_(u'photo_path'), max_length=255, blank=True, null=True, help_text=u'照片存放路径')
  98. photo_w = models.IntegerField(_(u'photo_w'), default=0, help_text=u'照片宽度')
  99. photo_h = models.IntegerField(_(u'photo_h'), default=0, help_text=u'照片高度')
  100. photo_thumbnail_path = models.CharField(_(u'photo_thumbnail_path'), max_length=255, blank=True, null=True, help_text=u'照片缩略图存放路径')
  101. photo_thumbnail_w = models.IntegerField(_(u'photo_thumbnail_w'), default=0, help_text=u'照片缩略图宽度')
  102. photo_thumbnail_h = models.IntegerField(_(u'photo_thumbnail_h'), default=0, help_text=u'照片缩略图高度')
  103. comment_num = models.IntegerField(_(u'comment_num'), default=0, help_text=u'照片评论数量')
  104. thumbup_num = models.IntegerField(_(u'thumbup_num'), default=0, help_text=u'照片点赞数量')
  105. class Meta:
  106. verbose_name = _(u'groupphotoinfo')
  107. verbose_name_plural = _(u'groupphotoinfo')
  108. def __unicode__(self):
  109. return unicode(self.pk)
  110. @property
  111. def photo_url(self):
  112. return img_url(self.photo_path)
  113. @property
  114. def photo_thumbnail_url(self):
  115. return img_url(self.photo_thumbnail_path)
  116. @property
  117. def photo_info(self):
  118. try:
  119. group = GroupInfo.objects.get(group_id=self.group_id)
  120. except GroupInfo.DoesNotExist:
  121. group = None
  122. return {
  123. 'group_id': group and group.group_id,
  124. 'group_name': group and group.group_name,
  125. 'group_default_avatar': group and group.group_default_avatar,
  126. 'group_avatar': group and group.group_avatar,
  127. 'photo_id': self.pk,
  128. 'photo_url': self.photo_url,
  129. 'photo_w': self.photo_w,
  130. 'photo_h': self.photo_h,
  131. 'photo_thumbnail_url': self.photo_thumbnail_url,
  132. 'photo_thumbnail_w': self.photo_thumbnail_w,
  133. 'photo_thumbnail_h': self.photo_thumbnail_h,
  134. 'user_id': self.user_id,
  135. 'nickname': self.nickname,
  136. 'avatar': self.avatar,
  137. 'comment_num': self.comment_num,
  138. 'thumbup_num': self.thumbup_num,
  139. 'created_at': self.created_at,
  140. }
  141. class PhotoCommentInfo(CreateUpdateMixin):
  142. photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'飞图唯一标识', db_index=True)
  143. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')
  144. nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称')
  145. avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
  146. comment = models.TextField(_(u'comment'), blank=True, null=True, help_text=u'用户评论')
  147. class Meta:
  148. verbose_name = _(u'photocommentinfo')
  149. verbose_name_plural = _(u'photocommentinfo')
  150. def __unicode__(self):
  151. return unicode(self.pk)
  152. @property
  153. def comment_info(self):
  154. return {
  155. 'user_id': self.user_id,
  156. 'nickname': self.nickname,
  157. 'avatar': self.avatar,
  158. 'comment': self.comment,
  159. 'created_at': self.created_at,
  160. }
  161. class PhotoThumbUpInfo(CreateUpdateMixin):
  162. photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'飞图唯一标识', db_index=True)
  163. user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')
  164. nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称')
  165. avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
  166. thumbup = models.BooleanField(_(u'thumbup'), default=True, help_text=u'用户点赞', db_index=True)
  167. class Meta:
  168. verbose_name = _(u'photothumbupinfo')
  169. verbose_name_plural = _(u'photothumbupinfo')
  170. def __unicode__(self):
  171. return unicode(self.pk)
  172. @property
  173. def thumbup_info(self):
  174. return {
  175. 'user_id': self.user_id,
  176. 'nickname': self.nickname,
  177. 'avatar': self.avatar,
  178. }