def post(self, request): data = request.POST user = request.user print data # Init variables album = 0 valid = True photo_format_valid = True noticeText = '' noticeTitle = '' # Validate if data['photo_list'] == '[]': noticeText = u'未选择任何照片!' valid = False elif 'newalbum' in data: if not data['newalbumname']: noticeText = u'相册名不能为空!' valid = False elif Album.objects.filter(user=request.user, name=data['newalbumname']): noticeText = u'相册名已存在!' valid = False else: # Create new album album = Album.objects.create( user=user, name=data['newalbumname'], ) else: # Select album album = Album.objects.filter(user=request.user, id=data['albumname']) if album: album = album[0] else: noticeText = u'未知错误:相册id:' + data['albumname'] print 'Error album id = ' + data['albumname'] valid = False if not valid: # Not valid with form noticeTitle = u'保存失败' else: # Create photos photo_list = json.loads(data['photo_list']) photo_list = set(photo_list) for name in photo_list: photo = Photo( album=album, name=name.split('.')[0], ) if 'emotion' in data: photo.emotion = data['emotion'] if 'comment' in data: photo.description = data['comment'] # Save image source img = File(open('media/temp/' + name, 'rb')) hash_code = '_' + name.split('_')[-1] + '.' file_name = hash_code.join(name[:name.rfind('_')].split('.')) img.name = file_name photo.origin_source = img photo.source = img # PIL processing try: img = Image.open('media/temp/' + name) except: print 'Photo ' + name + ' created failed' valid = False photo_format_valid = False noticeText = u'部分格式错误的照片上传失败!' continue # Get shot date try: exif = { ExifTags.TAGS[k]: v for k, v in img._getexif().items() if k in ExifTags.TAGS } shot_date = datetime.strptime(exif['DateTime'], '%Y:%m:%d %H:%M:%S') except: shot_date = datetime.strptime('1970:01:01', '%Y:%m:%d') photo.shot_date = TIME_ZONE.localize(shot_date) try: # Create thumb img.thumbnail((480, 200), Image.ANTIALIAS) img.save('media/temp/' + name + '.thumbnail', 'JPEG') # Save thumb img = File(open('media/temp/' + name + '.thumbnail', 'rb')) img.name = file_name photo.thumb = img photo.origin_thumb = img except: # Create thumb failed print 'Photo ' + name + ' created failed' valid = False photo_format_valid = False noticeText = u'部分格式错误的照片上传失败!' continue photo.save() if not valid: # Upload error noticeTitle = u'警告' if not valid: # Upload fail if photo_format_valid: noticeType = 'warn' else: noticeType = 'info' else: # Upload success noticeType = 'success' noticeTitle = u'上传成功!' noticeText = ' ' return HttpResponse( json.dumps({ 'noticeType': noticeType, 'noticeTitle': noticeTitle, 'noticeText': noticeText, }))
def post(self, request): data = request.POST user = request.user print data # Init variables album = 0 valid = True photo_format_valid = True noticeText = '' noticeTitle = '' # Validate if data['photo_list'] == '[]': noticeText = u'未选择任何照片!' valid = False elif 'newalbum' in data: if not data['newalbumname']: noticeText = u'相册名不能为空!' valid = False elif Album.objects.filter(user=request.user, name=data['newalbumname']): noticeText = u'相册名已存在!' valid = False else: # Create new album album = Album.objects.create( user=user, name=data['newalbumname'], ) else: # Select album album = Album.objects.filter(user=request.user, id=data['albumname']) if album: album = album[0] else: noticeText = u'未知错误:相册id:' + data['albumname'] print 'Error album id = ' + data['albumname'] valid = False if not valid: # Not valid with form noticeTitle = u'保存失败' else: # Create photos photo_list = json.loads(data['photo_list']) photo_list = set(photo_list) for name in photo_list: photo = Photo( album=album, name=name.split('.')[0], ) if 'emotion' in data: photo.emotion = data['emotion'] if 'comment' in data: photo.description = data['comment'] # Save image source img = File(open('media/temp/' + name, 'rb')) hash_code = '_' + name.split('_')[-1] + '.' file_name = hash_code.join(name[:name.rfind('_')].split('.')) img.name = file_name photo.origin_source = img photo.source = img # PIL processing try: img = Image.open('media/temp/' + name) except: print 'Photo ' + name + ' created failed' valid = False photo_format_valid = False noticeText = u'部分格式错误的照片上传失败!' continue # Get shot date try: exif = { ExifTags.TAGS[k]: v for k, v in img._getexif().items() if k in ExifTags.TAGS } shot_date = datetime.strptime(exif['DateTime'], '%Y:%m:%d %H:%M:%S') except: shot_date = datetime.strptime('1970:01:01', '%Y:%m:%d') photo.shot_date = TIME_ZONE.localize(shot_date) try: # Create thumb img.thumbnail((480, 200), Image.ANTIALIAS) img.save('media/temp/' + name + '.thumbnail', 'JPEG') # Save thumb img = File(open('media/temp/' + name + '.thumbnail', 'rb')) img.name = file_name photo.thumb = img photo.origin_thumb = img except: # Create thumb failed print 'Photo ' + name + ' created failed' valid = False photo_format_valid = False noticeText = u'部分格式错误的照片上传失败!' continue photo.save() if not valid: # Upload error noticeTitle = u'警告' if not valid: # Upload fail if photo_format_valid: noticeType = 'warn' else: noticeType = 'info' else: # Upload success noticeType = 'success' noticeTitle = u'上传成功!' noticeText = ' ' return HttpResponse(json.dumps({ 'noticeType': noticeType, 'noticeTitle': noticeTitle, 'noticeText': noticeText, }))