@@ -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 " |