| @@ -2,11 +2,7 @@ | ||
| 2 | 2 |  | 
| 3 | 3 | from __future__ import division | 
| 4 | 4 |  | 
| 5 | -import os | |
| 6 | - | |
| 7 | -import shortuuid | |
| 8 | 5 | from curtail_uuid import CurtailUUID | 
| 9 | -from django.conf import settings | |
| 10 | 6 | from django.contrib.auth.hashers import check_password | 
| 11 | 7 | from django.db import transaction | 
| 12 | 8 | from isoweek import Week | 
| @@ -30,8 +26,6 @@ from utils.redis.rorder import set_lensman_order_record | ||
| 30 | 26 | from utils.redis.rprice import get_lensman_price_fixed, set_lensman_price_fixed | 
| 31 | 27 | from utils.redis.rprofile import set_profile_info | 
| 32 | 28 | from utils.storage_utils import file_save | 
| 33 | -from utils.thumbnail_utils import make_thumbnail | |
| 34 | -from utils.watermark_utils import watermark_wrap | |
| 35 | 29 |  | 
| 36 | 30 |  | 
| 37 | 31 | @logit | 
| @@ -2,7 +2,6 @@ | ||
| 2 | 2 |  | 
| 3 | 3 | from __future__ import division | 
| 4 | 4 |  | 
| 5 | -import os | |
| 6 | 5 | import random | 
| 7 | 6 |  | 
| 8 | 7 | from curtail_uuid import CurtailUUID | 
| @@ -32,7 +31,6 @@ from utils.redis.rorder import get_lensman_order_record | ||
| 32 | 31 | from utils.redis.rprice import get_lensman_price_fixed | 
| 33 | 32 | from utils.sql.raw import PAI2_HOME_API | 
| 34 | 33 | from utils.storage_utils import file_save | 
| 35 | -from utils.thumbnail_utils import make_thumbnail | |
| 36 | 34 | from utils.time_utils import origin_expired_stamps | 
| 37 | 35 | from utils.url_utils import img_url, share_url | 
| 38 | 36 |  | 
| @@ -1,6 +1,5 @@ | ||
| 1 | 1 | # -*- coding: utf-8 -*- | 
| 2 | 2 |  | 
| 3 | -from django.conf import settings | |
| 4 | 3 | from django.conf.urls import include, url | 
| 5 | 4 |  | 
| 6 | 5 |  | 
| @@ -2,9 +2,7 @@ | ||
| 2 | 2 |  | 
| 3 | 3 | import os | 
| 4 | 4 |  | 
| 5 | -import shortuuid | |
| 6 | 5 | from curtail_uuid import CurtailUUID | 
| 7 | -from django.conf import settings | |
| 8 | 6 | from django.db import transaction | 
| 9 | 7 | from django.shortcuts import render | 
| 10 | 8 | from django_q.tasks import async | 
| @@ -25,8 +23,6 @@ from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_DELETED_SET, GRO | ||
| 25 | 23 | GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET, UUID_LIST) | 
| 26 | 24 | from utils.redis.ruuid import generate_uuids, update_uuids | 
| 27 | 25 | from utils.storage_utils import file_save | 
| 28 | -from utils.thumbnail_utils import make_thumbnail | |
| 29 | -from utils.watermark_utils import watermark_wrap | |
| 30 | 26 |  | 
| 31 | 27 |  | 
| 32 | 28 | @logit | 
| @@ -163,24 +159,7 @@ def session_join_api(request): | ||
| 163 | 159 | # | 
| 164 | 160 | if group_created: | 
| 165 | 161 | for photo in photos: | 
| 166 | - photo_path = photo.p_photo_path | |
| 167 | -            photo_thumbnail_path = photo_path.replace('.', '_thumbnail.') | |
| 168 | -            photo_thumbnail2_path = photo_path.replace('.', '_thumbnail2.') | |
| 169 | - | |
| 170 | - # 群组照片缩略图生成 | |
| 171 | - # 双列: 540, 40-50K | |
| 172 | - photo_w, photo_h, photo_thumbnail_w, photo_thumbnail_h = make_thumbnail( | |
| 173 | -                os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'), | |
| 174 | -                os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'), | |
| 175 | - settings.THUMBNAIL_MAX_WIDTH | |
| 176 | - ) | |
| 177 | - | |
| 178 | - # 单列: 1080, xx-100K | |
| 179 | - photo_w, photo_h, photo_thumbnail2_w, photo_thumbnail2_h = make_thumbnail( | |
| 180 | -                os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'), | |
| 181 | -                os.path.join(settings.MEDIA_ROOT, photo_thumbnail2_path).replace('\\', '/'), | |
| 182 | - settings.THUMBNAIL_MAX_WIDTH2 | |
| 183 | - ) | |
| 162 | + photo_info = file_save(photo_path=photo.p_photo_path, thumbnail=True) | |
| 184 | 163 |  | 
| 185 | 164 | # 群组照片记录创建 | 
| 186 | 165 | group_photo = GroupPhotoInfo.objects.create( | 
| @@ -188,15 +167,15 @@ def session_join_api(request): | ||
| 188 | 167 | user_id=user_id, | 
| 189 | 168 | nickname=user.final_nickname, | 
| 190 | 169 | avatar=user.avatar, | 
| 191 | - photo_path=photo_path, | |
| 192 | - photo_w=photo_w, | |
| 193 | - photo_h=photo_h, | |
| 194 | - photo_thumbnail_path=photo_thumbnail_path, | |
| 195 | - photo_thumbnail_w=photo_thumbnail_w, | |
| 196 | - photo_thumbnail_h=photo_thumbnail_h, | |
| 197 | - photo_thumbnail2_path=photo_thumbnail2_path, | |
| 198 | - photo_thumbnail2_w=photo_thumbnail2_w, | |
| 199 | - photo_thumbnail2_h=photo_thumbnail2_h, | |
| 170 | + photo_path=photo_info.photo_path, | |
| 171 | + photo_w=photo_info.photo_w, | |
| 172 | + photo_h=photo_info.photo_h, | |
| 173 | + photo_thumbnail_path=photo_info.photo_thumbnail_path, | |
| 174 | + photo_thumbnail_w=photo_info.photo_thumbnail_w, | |
| 175 | + photo_thumbnail_h=photo_info.photo_thumbnail_h, | |
| 176 | + photo_thumbnail2_path=photo_info.photo_thumbnail2_path, | |
| 177 | + photo_thumbnail2_w=photo_info.photo_thumbnail2_w, | |
| 178 | + photo_thumbnail2_h=photo_info.photo_thumbnail2_h, | |
| 200 | 179 | photo_from=GroupPhotoInfo.SESSION_GROUP, | 
| 201 | 180 | session_id=photo.session_id, | 
| 202 | 181 | lensman_id=photo.lensman_id, | 
| @@ -22,21 +22,27 @@ class DotDict(dict): | ||
| 22 | 22 |  | 
| 23 | 23 |  | 
| 24 | 24 | @transaction.atomic | 
| 25 | -def file_save(file_, prefix='img', ext='jpeg', watermark=False, thumbnail=False): | |
| 26 | - ext = os.path.splitext(file_.name)[-1] or ext | |
| 25 | +def file_save(photo=None, photo_path=None, prefix='img', ext='jpeg', watermark=False, thumbnail=False): | |
| 26 | + # Photo | |
| 27 | + photo = photo or default_storage.open(photo_path) | |
| 27 | 28 |  | 
| 28 | - photo, created = PhotoUUIDInfo.objects.select_for_update().get_or_create(photo_md5=calculate_md5(file_)) | |
| 29 | + # Ext | |
| 30 | + ext = os.path.splitext(photo.name)[-1] or ext | |
| 29 | 31 |  | 
| 32 | + photo, created = PhotoUUIDInfo.objects.select_for_update().get_or_create(photo_md5=calculate_md5(photo)) | |
| 33 | + | |
| 34 | + # 照片路径 | |
| 30 | 35 | photo_path = photo.photo_path | 
| 31 | 36 | if not photo_path: | 
| 32 | 37 |          photo_path = '{}/{}{}'.format(prefix, shortuuid.uuid(), ext) | 
| 33 | 38 | if default_storage.exists(photo_path): | 
| 34 | 39 | default_storage.delete(photo_path) | 
| 35 | - default_storage.save(photo_path, file_) | |
| 40 | + default_storage.save(photo_path, photo) | |
| 36 | 41 |  | 
| 37 | 42 | photo.photo_path = photo_path | 
| 38 | 43 | photo.save() | 
| 39 | 44 |  | 
| 45 | + # 水印 | |
| 40 | 46 | if watermark: | 
| 41 | 47 | if not photo.photo_watermark_path: | 
| 42 | 48 |              photo_watermark_path = 'photo/{}{}'.format(shortuuid.uuid(), ext) | 
| @@ -48,6 +54,7 @@ def file_save(file_, prefix='img', ext='jpeg', watermark=False, thumbnail=False) | ||
| 48 | 54 | photo.photo_watermark_path | 
| 49 | 55 | photo.save() | 
| 50 | 56 |  | 
| 57 | + # 缩略图 | |
| 51 | 58 | if thumbnail: | 
| 52 | 59 | if not photo.photo_thumbnail_path: | 
| 53 | 60 | # 双列: 540, 40-50K |