issues"> Issues 0 Pull Requests 0 Commits 1262 Releases 0

No Description

storage_utils.py 4.3KB

    # -*- coding: utf-8 -*- import os import shortuuid from django.conf import settings from django.core.files.storage import default_storage from django.db import transaction from django_file_md5 import calculate_md5 from photo.models import PhotoUUIDInfo from utils.thumbnail_utils import make_thumbnail from utils.watermark_utils import watermark_wrap class DotDict(dict): """ dot.notation access to dictionary attributes """ def __getattr__(self, attr): return self.get(attr) __setattr__ = dict.__setitem__ __delattr__ = dict.__delitem__ @transaction.atomic def file_save(file_=None, file_path=None, prefix='img', ext='.jpeg', watermark=False, thumbnail=False): # Photo file_ = file_ or default_storage.open(file_path) # Ext ext = os.path.splitext(file_.name)[-1] or ext # Photo MD5 photo_md5 = calculate_md5(file_) # Photo UUID Get or Create photo, created = PhotoUUIDInfo.objects.select_for_update().get_or_create(photo_md5=photo_md5) # 无水印 if not photo.photo_path: photo_path = '{}/{}{}'.format(prefix, shortuuid.uuid(), ext) if default_storage.exists(photo_path): default_storage.delete(photo_path) default_storage.save(photo_path, file_) photo.photo_path = photo_path photo.save() # 有水印 if watermark: if not photo.photo_watermark_path: if settings.WATERMARK_OR_NOT: photo_watermark_path = 'photo/{}{}'.format(shortuuid.uuid(), ext) watermark_wrap( os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'), settings.WATERMARK_LOGO_PATH, os.path.join(settings.MEDIA_ROOT, photo_watermark_path).replace('\\', '/') ) photo.photo_watermark_path = photo_watermark_path else: photo.photo_watermark_path = photo_path photo.save() # 缩略图 if thumbnail: if not photo.photo_thumbnail_path: # 双列: 540, 40-50K photo_thumbnail_path = photo_path.replace('.', '_thumbnail.') photo_w, photo_h, photo_thumbnail_w, photo_thumbnail_h = make_thumbnail( os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'), os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'), settings.THUMBNAIL_MAX_WIDTH ) photo.photo_w = photo_w photo.photo_h = photo_h photo.photo_thumbnail_path = photo_thumbnail_path photo.photo_thumbnail_w = photo_thumbnail_w photo.photo_thumbnail_h = photo_thumbnail_h if not photo.photo_thumbnail2_path: # 单列: 1080, xx-100K photo_thumbnail2_path = photo_path.replace('.', '_thumbnail2.') photo_w, photo_h, photo_thumbnail2_w, photo_thumbnail2_h = make_thumbnail( os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'), os.path.join(settings.MEDIA_ROOT, photo_thumbnail2_path).replace('\\', '/'), settings.THUMBNAIL_MAX_WIDTH2 ) if watermark and settings.WATERMARK_OR_NOT: watermark_wrap( os.path.join(settings.MEDIA_ROOT, photo_thumbnail2_path).replace('\\', '/'), settings.WATERMARK_LOGO_PATH, os.path.join(settings.MEDIA_ROOT, photo_thumbnail2_path).replace('\\', '/') ) photo.photo_w = photo_w photo.photo_h = photo_h photo.photo_thumbnail2_path = photo_thumbnail2_path photo.photo_thumbnail2_w = photo_thumbnail2_w photo.photo_thumbnail2_h = photo_thumbnail2_h photo.save() return DotDict({ 'ext': ext, 'photo_md5': photo_md5, 'photo_path': photo.photo_path, 'photo_w': photo.photo_w, 'photo_h': photo.photo_h, 'photo_watermark_path': photo.photo_watermark_path, 'photo_thumbnail_path': photo.photo_thumbnail_path, 'photo_thumbnail_w': photo.photo_thumbnail_w, 'photo_thumbnail_h': photo.photo_thumbnail_h, 'photo_thumbnail2_path': photo.photo_thumbnail2_path, 'photo_thumbnail2_w': photo.photo_thumbnail2_w, 'photo_thumbnail2_h': photo.photo_thumbnail2_h, })
kodo - Gogs: Go Git Service

Geen omschrijving

Brightcells: 66a598b30c Makemigrations 8 jaren geleden
..
0001_initial.py e184e7dd5b add api group_create/group_join 11 jaren geleden
0002_groupinfo_session_id.py e184e7dd5b add api group_create/group_join 11 jaren geleden
0003_groupinfo_admin_id.py 7e305483ab add api group_detail/group_lock/group_pass/group_refuse 11 jaren geleden
0004_auto_20151216_2337.py 7467a3e68a add api group_update/group_remove 11 jaren geleden
0005_groupuserinfo_current_id.py f587f0a48f user can just see photo after he joined the group & zh_Hans replace zh_CN in settings.py 11 jaren geleden
0006_groupuserinfo_avatar.py 4afdb94e20 add avatar for GroupUserInfo 11 jaren geleden
0007_auto_20160112_2040.py df1df69fe3 add api upgrade/splash 10 jaren geleden
0008_photocommentinfo.py c72d89f6e5 add api comment_submit_api/comment_list_api/thumbup_submit_api/thumbup_list_api/thumbup_cancel_api 10 jaren geleden
0009_photothumbupinfo.py c72d89f6e5 add api comment_submit_api/comment_list_api/thumbup_submit_api/thumbup_list_api/thumbup_cancel_api 10 jaren geleden
0010_auto_20160120_1830.py a121b75ff2 add db_index=True for status field 10 jaren geleden
0011_auto_20160302_2048.py da2a81fff1 add api pai2_home 10 jaren geleden
0012_groupinfo_group_avatar.py da2a81fff1 add api pai2_home 10 jaren geleden
0013_groupinfo_group_default_avatar.py f6a88c632b add group_default_avatar field for GroupInfo 10 jaren geleden
0014_auto_20160308_2347.py ca727b0362 store/return w/h for photo 10 jaren geleden
0015_groupphotoinfo_avatar.py 88049b12db store/return more field for photo 10 jaren geleden
0016_auto_20160321_1535.py 537bd9bd41 add api group_quit_api 10 jaren geleden
0017_groupphotoinfo_photo_from.py dbea356558 add photo_from field for GroupPhotoInfo and return photo_from for some api 10 jaren geleden
0018_auto_20160417_2246.py d64b3c216b add and return photo_thumbnail2 relative 10 jaren geleden
0019_auto_20160422_1322.py 102152ca4a add api lensman_photo_bought & modify api wx_order_create_api and adjust return field 10 jaren geleden
0020_groupphotoinfo_session_id.py 102152ca4a add api lensman_photo_bought & modify api wx_order_create_api and adjust return field 10 jaren geleden
0021_photocommentinfo_to_uid.py fa36c26ce4 extend param to_uid for comment_submit_api 10 jaren geleden
0022_auto_20160901_1439.py 6199c8f7ad add api lensman_origin_wanted_api/lensman_origin_photo_upload_api 10 jaren geleden
0023_groupinfo_group_initio.py e06dc10006 Make join session group by scan group qrcode fetch group photos initio 10 jaren geleden
0024_auto_20161214_1329.py f724e0f9c0 Add tour guide apis 10 jaren geleden
0025_auto_20161214_1659.py ad69866b26 Add tour guide's name and phone in GroupInfo 10 jaren geleden
0026_auto_20161216_1301.py 034acddb68 Add total_persons for GroupInfo 10 jaren geleden
0027_groupuserinfo_authority.py 88f0697a89 Add authority field for GroupUserInfo 10 jaren geleden
0028_auto_20161220_1815.py 272f181c50 Makemigrations 10 jaren geleden
0029_auto_20161224_1616.py 564ff620d7 Add unique_together = (('group_id', 'user_id'),) for GroupUserInfo 10 jaren geleden
0030_groupinfo_gather_location.py 90d377ee6e Add gather location 9 jaren geleden
0031_groupphotoinfo_photo_md5.py d824fbd441 Add photo_md5 for GroupPhotoInfo 9 jaren geleden
0032_groupinfo_gather_screenshot.py e8cd9652b7 Add gather_screenshot for api tg_group_gather_start_api 9 jaren geleden
0033_groupphotoinfo_photo_id.py 3c6e34823b Add photo_id for GroupPhotoInfo replaced pk 9 jaren geleden
0034_auto_20170411_1156.py 14d5d63e3b Add nomark/origin price for GroupPhotoInfo 9 jaren geleden
0035_groupuserinfo_admin_status.py 9e4ac4fd3b Add admin_status for GroupUserInfo 9 jaren geleden
0036_groupphotoinfo_has_watermark.py 3b92e37156 Add field has_watermark for GroupPhotoInfo 9 jaren geleden
0037_auto_20170821_1600.py bf678fc740 Add unique_together = (('session_id', 'group_from'),) 9 jaren geleden
0038_auto_20170821_1608.py 7060597dd6 Add unique_together = (('group_id', 'user_id', 'photo_md5'),) for GroupPhotoInfo 9 jaren geleden
0039_auto_20170821_1613.py 9f4c919c29 Add unique_together = (('photo_id', 'user_id'),) for PhotoThumbUpInfo 9 jaren geleden
0040_auto_20170825_1342.py e5ad69259f Add unique_together = (('group_id', 'session_id', 'user_id', 'photo_id', 'lensman_photo_id'),) for GroupPhotoOrderInfo 9 jaren geleden
0041_auto_20170825_1342.py e5ad69259f Add unique_together = (('group_id', 'session_id', 'user_id', 'photo_id', 'lensman_photo_id'),) for GroupPhotoOrderInfo 9 jaren geleden
0042_groupphotoinfo_lensman_type.py a6195fa70d Add outtake lensman 9 jaren geleden
0043_auto_20180101_2220.py 9bb56c50cc Makemigrations 8 jaren geleden
0044_auto_20180103_0446.py a7cbbf15a7 Update max_length for CharField 8 jaren geleden
0045_auto_20180930_1159.py 66a598b30c Makemigrations 8 jaren geleden
__init__.py e184e7dd5b add api group_create/group_join 11 jaren geleden