| @@ -0,0 +1,29 @@ | ||
| 1 | +# -*- coding: utf-8 -*- | |
| 2 | +from __future__ import unicode_literals | |
| 3 | + | |
| 4 | +from django.db import models, migrations | |
| 5 | + | |
| 6 | + | |
| 7 | +class Migration(migrations.Migration): | |
| 8 | + | |
| 9 | + dependencies = [ | |
| 10 | +        ('group', '0017_groupphotoinfo_photo_from'), | |
| 11 | + ] | |
| 12 | + | |
| 13 | + operations = [ | |
| 14 | + migrations.AddField( | |
| 15 | + model_name='groupphotoinfo', | |
| 16 | + name='photo_thumbnail2_h', | |
| 17 | + field=models.IntegerField(default=0, help_text='\u7167\u7247\u7f29\u7565\u56fe\u9ad8\u5ea6', verbose_name='photo_thumbnail2_h'), | |
| 18 | + ), | |
| 19 | + migrations.AddField( | |
| 20 | + model_name='groupphotoinfo', | |
| 21 | + name='photo_thumbnail2_path', | |
| 22 | + field=models.CharField(help_text='\u7167\u7247\u7f29\u7565\u56fe\u5b58\u653e\u8def\u5f84', max_length=255, null=True, verbose_name='photo_thumbnail2_path', blank=True), | |
| 23 | + ), | |
| 24 | + migrations.AddField( | |
| 25 | + model_name='groupphotoinfo', | |
| 26 | + name='photo_thumbnail2_w', | |
| 27 | + field=models.IntegerField(default=0, help_text='\u7167\u7247\u7f29\u7565\u56fe\u5bbd\u5ea6', verbose_name='photo_thumbnail2_w'), | |
| 28 | + ), | |
| 29 | + ] | 
| @@ -140,12 +140,21 @@ class GroupPhotoInfo(CreateUpdateMixin): | ||
| 140 | 140 | user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识') | 
| 141 | 141 | nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称') | 
| 142 | 142 | avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像') | 
| 143 | + | |
| 143 | 144 | photo_path = models.CharField(_(u'photo_path'), max_length=255, blank=True, null=True, help_text=u'照片存放路径') | 
| 144 | 145 | photo_w = models.IntegerField(_(u'photo_w'), default=0, help_text=u'照片宽度') | 
| 145 | 146 | photo_h = models.IntegerField(_(u'photo_h'), default=0, help_text=u'照片高度') | 
| 147 | + | |
| 148 | + # 双列: 540, 40-50K | |
| 146 | 149 | photo_thumbnail_path = models.CharField(_(u'photo_thumbnail_path'), max_length=255, blank=True, null=True, help_text=u'照片缩略图存放路径') | 
| 147 | 150 | photo_thumbnail_w = models.IntegerField(_(u'photo_thumbnail_w'), default=0, help_text=u'照片缩略图宽度') | 
| 148 | 151 | photo_thumbnail_h = models.IntegerField(_(u'photo_thumbnail_h'), default=0, help_text=u'照片缩略图高度') | 
| 152 | + | |
| 153 | + # 单列: 1080, xx-100K | |
| 154 | + photo_thumbnail2_path = models.CharField(_(u'photo_thumbnail2_path'), max_length=255, blank=True, null=True, help_text=u'照片缩略图存放路径') | |
| 155 | + photo_thumbnail2_w = models.IntegerField(_(u'photo_thumbnail2_w'), default=0, help_text=u'照片缩略图宽度') | |
| 156 | + photo_thumbnail2_h = models.IntegerField(_(u'photo_thumbnail2_h'), default=0, help_text=u'照片缩略图高度') | |
| 157 | + | |
| 149 | 158 | comment_num = models.IntegerField(_(u'comment_num'), default=0, help_text=u'照片评论数量') | 
| 150 | 159 | thumbup_num = models.IntegerField(_(u'thumbup_num'), default=0, help_text=u'照片点赞数量') | 
| 151 | 160 | photo_from = models.IntegerField(_(u'photo_from'), choices=PHOTO_FROM, default=APP_GROUP, help_text=u'照片来源') | 
| @@ -165,6 +174,10 @@ class GroupPhotoInfo(CreateUpdateMixin): | ||
| 165 | 174 | def photo_thumbnail_url(self): | 
| 166 | 175 | return img_url(self.photo_thumbnail_path) | 
| 167 | 176 |  | 
| 177 | + @property | |
| 178 | + def photo_thumbnail2_url(self): | |
| 179 | + return img_url(self.photo_thumbnail2_path) | |
| 180 | + | |
| 168 | 181 | def photo_info(self, user_id): | 
| 169 | 182 | try: | 
| 170 | 183 | group = GroupInfo.objects.get(group_id=self.group_id) | 
| @@ -183,6 +196,9 @@ class GroupPhotoInfo(CreateUpdateMixin): | ||
| 183 | 196 | 'photo_thumbnail_url': self.photo_thumbnail_url, | 
| 184 | 197 | 'photo_thumbnail_w': self.photo_thumbnail_w, | 
| 185 | 198 | 'photo_thumbnail_h': self.photo_thumbnail_h, | 
| 199 | + 'photo_thumbnail2_url': self.photo_thumbnail2_url, | |
| 200 | + 'photo_thumbnail2_w': self.photo_thumbnail2_w, | |
| 201 | + 'photo_thumbnail2_h': self.photo_thumbnail2_h, | |
| 186 | 202 | 'user_id': self.user_id, | 
| 187 | 203 | 'nickname': self.nickname, | 
| 188 | 204 | 'avatar': self.avatar, | 
| @@ -552,6 +552,7 @@ def flyimg_upload_api(request): | ||
| 552 | 552 | if photo: | 
| 553 | 553 |          photo_path = 'fly/{uuid}{extension}'.format(uuid=shortuuid.uuid(), extension=os.path.splitext(photo.name)[1]) | 
| 554 | 554 |          photo_thumbnail_path = photo_path.replace('.', '_thumbnail.') | 
| 555 | +        photo_thumbnail2_path = photo_path.replace('.', '_thumbnail2.') | |
| 555 | 556 |  | 
| 556 | 557 | if default_storage.exists(photo_path): | 
| 557 | 558 | default_storage.delete(photo_path) | 
| @@ -562,11 +563,18 @@ def flyimg_upload_api(request): | ||
| 562 | 563 | # default_storage.save(photo_thumbnail_path, photo) | 
| 563 | 564 |  | 
| 564 | 565 | # 群组照片缩略图生成 | 
| 566 | + # 双列: 540, 40-50K | |
| 565 | 567 | photo_w, photo_h, photo_thumbnail_w, photo_thumbnail_h = make_thumbnail( | 
| 566 | 568 |              os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'), | 
| 567 | 569 |              os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'), | 
| 568 | 570 | settings.THUMBNAIL_MAX_WIDTH | 
| 569 | 571 | ) | 
| 572 | + # 单列: 1080, xx-100K | |
| 573 | + photo_w, photo_h, photo_thumbnail2_w, photo_thumbnail2_h = make_thumbnail( | |
| 574 | +            os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'), | |
| 575 | +            os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'), | |
| 576 | + settings.THUMBNAIL_MAX_WIDTH2 | |
| 577 | + ) | |
| 570 | 578 |  | 
| 571 | 579 | # 群组照片记录创建 | 
| 572 | 580 | group_photo = GroupPhotoInfo.objects.create( | 
| @@ -580,6 +588,9 @@ def flyimg_upload_api(request): | ||
| 580 | 588 | photo_thumbnail_path=photo_thumbnail_path, | 
| 581 | 589 | photo_thumbnail_w=photo_thumbnail_w, | 
| 582 | 590 | photo_thumbnail_h=photo_thumbnail_h, | 
| 591 | + photo_thumbnail2_path=photo_thumbnail2_path, | |
| 592 | + photo_thumbnail2_w=photo_thumbnail2_w, | |
| 593 | + photo_thumbnail2_h=photo_thumbnail2_h, | |
| 583 | 594 | ) | 
| 584 | 595 |  | 
| 585 | 596 | # 设置群组最后一张照片PK | 
| @@ -879,13 +890,16 @@ def pai2_home_api(request): | ||
| 879 | 890 | 'photo_thumbnail_url': img_url(row[9]), | 
| 880 | 891 | 'photo_thumbnail_w': row[10], | 
| 881 | 892 | 'photo_thumbnail_h': row[11], | 
| 882 | - 'user_id': row[12], | |
| 883 | - 'nickname': row[13], | |
| 884 | - 'avatar': row[14], | |
| 885 | - 'comment_num': row[15], | |
| 886 | - 'thumbup_num': row[16], | |
| 887 | - 'photo_from': row[17], | |
| 888 | - 'created_at': row[18], | |
| 893 | + 'photo_thumbnail2_url': img_url(row[12]), | |
| 894 | + 'photo_thumbnail2_w': row[13], | |
| 895 | + 'photo_thumbnail2_h': row[14], | |
| 896 | + 'user_id': row[15], | |
| 897 | + 'nickname': row[16], | |
| 898 | + 'avatar': row[17], | |
| 899 | + 'comment_num': row[18], | |
| 900 | + 'thumbup_num': row[19], | |
| 901 | + 'photo_from': row[20], | |
| 902 | + 'created_at': row[21], | |
| 889 | 903 | } for row in rows] | 
| 890 | 904 |  | 
| 891 | 905 |      [row.update({'thumbup': get_group_photo_thumbup_flag(row['photo_id'], user_id)}) for row in rows] | 
| @@ -234,7 +234,8 @@ CURTAIL_UUID_LENGTH = 7 | ||
| 234 | 234 |  WATERMARK_LOGO = os.path.join(PROJ_DIR, 'static/pai2/img/paiai_96_96.png').replace('\\', '/') | 
| 235 | 235 |  | 
| 236 | 236 | # 缩略图设置 | 
| 237 | -THUMBNAIL_MAX_WIDTH = 360 | |
| 237 | +THUMBNAIL_MAX_WIDTH = 540 | |
| 238 | +THUMBNAIL_MAX_WIDTH2 = 1080 | |
| 238 | 239 |  | 
| 239 | 240 | # 首页设置 | 
| 240 | 241 | PAI2_HOME_PER_PAGE = 20 # 首页照片每页数量 | 
| @@ -199,14 +199,23 @@ def session_join_api(request): | ||
| 199 | 199 | for photo in photos: | 
| 200 | 200 | photo_path = photo.p_photo_path | 
| 201 | 201 |              photo_thumbnail_path = photo_path.replace('.', '_thumbnail.') | 
| 202 | +            photo_thumbnail_path = photo_path.replace('.', '_thumbnail2.') | |
| 202 | 203 |  | 
| 203 | 204 | # 群组照片缩略图生成 | 
| 205 | + # 双列: 540, 40-50K | |
| 204 | 206 | photo_w, photo_h, photo_thumbnail_w, photo_thumbnail_h = make_thumbnail( | 
| 205 | 207 |                  os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'), | 
| 206 | 208 |                  os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'), | 
| 207 | 209 | settings.THUMBNAIL_MAX_WIDTH | 
| 208 | 210 | ) | 
| 209 | 211 |  | 
| 212 | + # 单列: 1080, xx-100K | |
| 213 | + photo_w, photo_h, photo_thumbnail2_w, photo_thumbnail2_h = make_thumbnail( | |
| 214 | +                os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'), | |
| 215 | +                os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'), | |
| 216 | + settings.THUMBNAIL_MAX_WIDTH2 | |
| 217 | + ) | |
| 218 | + | |
| 210 | 219 | # 群组照片记录创建 | 
| 211 | 220 | group_photo = GroupPhotoInfo.objects.create( | 
| 212 | 221 | group_id=group_id, | 
| @@ -219,6 +228,9 @@ def session_join_api(request): | ||
| 219 | 228 | photo_thumbnail_path=photo_thumbnail_path, | 
| 220 | 229 | photo_thumbnail_w=photo_thumbnail_w, | 
| 221 | 230 | photo_thumbnail_h=photo_thumbnail_h, | 
| 231 | + photo_thumbnail2_path=photo_thumbnail2_path, | |
| 232 | + photo_thumbnail2_w=photo_thumbnail2_w, | |
| 233 | + photo_thumbnail2_h=photo_thumbnail2_h, | |
| 222 | 234 | photo_from=GroupPhotoInfo.SESSION_GROUP, | 
| 223 | 235 | ) | 
| 224 | 236 |  | 
| @@ -2,9 +2,10 @@ | ||
| 2 | 2 |  | 
| 3 | 3 | PAI2_HOME_API = ( | 
| 4 | 4 | r"select " | 
| 5 | - r"T1.group_id, T2.group_name, T2.group_default_avatar, T2.group_avatar, T2.group_from, T3.id, T3.photo_path, T3.photo_w, " | |
| 6 | - r"T3.photo_h, T3.photo_thumbnail_path, T3.photo_thumbnail_w, T3.photo_thumbnail_h, T3.user_id, T3.nickname, " | |
| 7 | - r"T3.avatar, T3.comment_num, T3.thumbup_num, T3.photo_from, T3.created_at " | |
| 5 | + r"T1.group_id, T2.group_name, T2.group_default_avatar, T2.group_avatar, T2.group_from, T3.id, T3.photo_path, " | |
| 6 | + r"T3.photo_w, T3.photo_h, T3.photo_thumbnail_path, T3.photo_thumbnail_w, T3.photo_thumbnail_h, " | |
| 7 | + r"T3.photo_thumbnail2_path, T3.photo_thumbnail2_w, T3.photo_thumbnail2_h, T3.user_id, T3.nickname, T3.avatar, " | |
| 8 | + r"T3.comment_num, T3.thumbup_num, T3.photo_from, T3.created_at " | |
| 8 | 9 |      r"from (select * from group_groupuserinfo where user_id='{user_id}' and user_status=1) as T1 " | 
| 9 | 10 | r"left outer join group_groupinfo as T2 on T1.group_id = T2.group_id " | 
| 10 | 11 | r"left outer join group_groupphotoinfo as T3 on T1.group_id = T3.group_id and T3.id > T1.current_id " |