def SettingsAvatarHandler(request): if request.method == 'GET': site = GetSite() session = request.session browser = detect(request) template_values = {} template_values['site'] = site template_values['page_title'] = site.title + u' › 头像' template_values['system_version'] = SYSTEM_VERSION member = CheckAuth(request) l10n = GetMessages(member, site) template_values['l10n'] = l10n if (member): if 'message' in session: template_values['message'] = session['message'] del session['message'] template_values['member'] = member if browser['ios']: path = os.path.join('mobile', 'member_settings_avatar.html') else: path = os.path.join('desktop', 'member_settings_avatar.html') return render_to_response(path, template_values) else: return HttpResponseRedirect('/signin') else: site = GetSite() session = request.session browser = detect(request) template_values = {} template_values['site'] = site template_values['system_version'] = SYSTEM_VERSION member = CheckAuth(request) l10n = GetMessages(member, site) template_values['l10n'] = l10n if (member): dest = '/settings-avatar/' timestamp = str(int(time.time())) try: image_req = request.FILES['avatar'] if image_req is None: return HttpResponseRedirect(dest) ext = str(image_req).split('.') # 图片文件格式,并且文件大小不能超过2MB if len(ext) == 2 and image_req.size < 1024 * 1024 * 2: ext = ext[1].lower() if ext == "jpg" or ext == "jpeg" or ext == "bmp" or ext == 'png': timestamp = str( int( time.mktime( datetime.datetime.now().timetuple()))) datetoday = str( datetime.datetime.today())[0:10].replace('-', '') new_name_src = timestamp + "." + ext new_name_large = timestamp + "_l." + ext new_name_normal = timestamp + "_n." + ext new_name_small = timestamp + "_s." + ext save_path = settings.STATIC_UPLOAD + "/" + member.user.username + "/" + datetoday if not os.path.exists(save_path): os.makedirs(save_path) # Source image image = Image.open(image_req) image.save(save_path + "/" + new_name_src, 'jpeg') # Large 73x73 image.thumbnail((73, 73), Image.ANTIALIAS) image.save(save_path + "/" + new_name_large, 'jpeg') member.avatar_large_url = settings.STATIC_UPLOAD_WEB + member.user.username + "/" + datetoday + "/" + new_name_large # Normal 48x48 image.thumbnail((48, 48), Image.ANTIALIAS) image.save(save_path + "/" + new_name_normal, 'jpeg') member.avatar_normal_url = settings.STATIC_UPLOAD_WEB + member.user.username + "/" + datetoday + "/" + new_name_normal # Small 24x24 image.thumbnail((24, 24), Image.ANTIALIAS) image.save(save_path + "/" + new_name_small, 'jpeg') member.avatar_mini_url = settings.STATIC_UPLOAD_WEB + member.user.username + "/" + datetoday + "/" + new_name_small # Save avatar info member.save() else: return HttpResponseRedirect(dest) else: return HttpResponseRedirect(dest) except: print "Unexpected error:", sys.exc_info() return HttpResponseRedirect(dest) memcache.set('Member_' + str(member.num), member, 86400 * 365) memcache.set('Member::' + member.username_lower, member, 86400 * 365) memcache.delete('Avatar::avatar_' + str(member.num) + '_large') memcache.delete('Avatar::avatar_' + str(member.num) + '_normal') memcache.delete('Avatar::avatar_' + str(member.num) + '_mini') session['message'] = '新头像设置成功' return HttpResponseRedirect('/settings-avatar/') else: return HttpResponseRedirect('/signin')
def SettingsAvatarHandler(request): if request.method == 'GET': site = GetSite() session = request.session browser = detect(request) template_values = {} template_values['site'] = site template_values['page_title'] = site.title + u' › 头像' template_values['system_version'] = SYSTEM_VERSION member = CheckAuth(request) l10n = GetMessages(member, site) template_values['l10n'] = l10n if (member): if 'message' in session: template_values['message'] = session['message'] del session['message'] template_values['member'] = member if browser['ios']: path = os.path.join('mobile', 'member_settings_avatar.html') else: path = os.path.join('desktop', 'member_settings_avatar.html') return render_to_response(path, template_values) else: return HttpResponseRedirect('/signin') else: site = GetSite() session = request.session browser = detect(request) template_values = {} template_values['site'] = site template_values['system_version'] = SYSTEM_VERSION member = CheckAuth(request) l10n = GetMessages(member, site) template_values['l10n'] = l10n if (member): dest = '/settings-avatar/' timestamp = str(int(time.time())) try: image_req = request.FILES['avatar'] if image_req is None: return HttpResponseRedirect(dest) ext = str(image_req).split('.'); # 图片文件格式,并且文件大小不能超过2MB if len(ext) == 2 and image_req.size<1024*1024*2: ext = ext[1].lower() if ext=="jpg" or ext=="jpeg" or ext=="bmp" or ext=='png': timestamp = str(int(time.mktime(datetime.datetime.now().timetuple()))) datetoday= str(datetime.datetime.today())[0:10].replace('-', '') new_name_src = timestamp + "." + ext new_name_large = timestamp + "_l." + ext new_name_normal = timestamp + "_n." + ext new_name_small = timestamp + "_s." + ext save_path = settings.STATIC_UPLOAD + "/" + member.user.username + "/" + datetoday if not os.path.exists(save_path): os.makedirs(save_path) # Source image image = Image.open(image_req) image.save(save_path + "/" + new_name_src, 'jpeg') # Large 73x73 image.thumbnail((73,73),Image.ANTIALIAS) image.save(save_path + "/" + new_name_large, 'jpeg') member.avatar_large_url = settings.STATIC_UPLOAD_WEB + member.user.username + "/" + datetoday + "/" + new_name_large # Normal 48x48 image.thumbnail((48,48),Image.ANTIALIAS) image.save(save_path + "/" + new_name_normal, 'jpeg') member.avatar_normal_url = settings.STATIC_UPLOAD_WEB + member.user.username + "/" + datetoday + "/" + new_name_normal # Small 24x24 image.thumbnail((24,24),Image.ANTIALIAS) image.save(save_path + "/" + new_name_small, 'jpeg') member.avatar_mini_url = settings.STATIC_UPLOAD_WEB + member.user.username + "/" + datetoday + "/" + new_name_small # Save avatar info member.save() else: return HttpResponseRedirect(dest) else: return HttpResponseRedirect(dest) except: print "Unexpected error:", sys.exc_info() return HttpResponseRedirect(dest) memcache.set('Member_' + str(member.num), member, 86400 * 365) memcache.set('Member::' + member.username_lower, member, 86400 * 365) memcache.delete('Avatar::avatar_' + str(member.num) + '_large') memcache.delete('Avatar::avatar_' + str(member.num) + '_normal') memcache.delete('Avatar::avatar_' + str(member.num) + '_mini') session['message'] = '新头像设置成功' return HttpResponseRedirect('/settings-avatar/') else: return HttpResponseRedirect('/signin')