예제 #1
0
def userAvatarUpload(request, isAndroid=False):
    try :
        authed, data = ttagServiceAuth(request)
        if authed and request.method == 'POST' :
            aToken = request.COOKIES['access_token']
            formdata = {'gender':'','google_map_address':'','pro_description':''}
            if len(str(request.POST.get('avatar_src',""))) > 0 and len(str(request.POST.get('avatar_name',""))) > 0 and len(str(request.POST.get('avatar_type',""))) > 0 :
                files = {}
                from django.core.files.uploadedfile import SimpleUploadedFile
                import base64
                files['avatar_upload'] = SimpleUploadedFile(request.POST['avatar_name'],base64.b64decode(mark_safe(request.POST['avatar_src'])),request.POST['avatar_type'])
            else :
                files = request.FILES
            for key in data :
                formdata[key] = data[key]
            upload = UploadFileForm(request.POST, files)
            statusmsg = "User Avatar update successful!"
            print request.POST
            if 'avatar_upload' not in request.POST and 'avatar_src' not in request.POST and len(str(request.POST.get('avatar_url',''))) > 0 :
                upload = SettingsAvatarForm(request.POST)
                if upload.is_valid() :
                    avatar_url = upload.clean_AvatarURL()
            if not upload.is_valid() :
                statusmsg = ''.join(["User Avatar update failed: ",upload.errors.as_text().replace('\r','').replace('\n','')])
                svcResp = {'result':'ERROR','msg':statusmsg}
            else :
                from website.settings import MEDIA_URL
                if 'avatar_delete' in request.POST or 'avatar_upload' in request.POST :
                    avatar_url = ''
                if 'avatar_upload' in files :
                    avatar_url = ''.join([MEDIA_URL,handleUploadedAvatar(files['avatar_upload'], data['user_name'], aToken)])
                if 'avatar_url' in locals() and avatar_url != data['avatar_url'] :
                    svcResp = ttagServiceAvatarChange(aToken,avatar_url)
                    if svcResp.get('result',"OK") == 'OK' :
                        svcResp['data'], data['avatar_url'] = {'filename':avatar_url}, avatar_url
                    else :
                        statusmsg = ''.join(["User Avatar update failed: ",svcResp['msg']])
                    svcResp['msg'] = statusmsg
                else :
                    svcResp = {'result':'OK','msg':'Nothing changed'}
            svcResp = mark_safe(simplejson.dumps(svcResp))
            form = SettingsForm(formdata)
            context = {'request':request,'loggedin':True,'data':data,'form':form,'settings_message':statusmsg, 'location':'Settings', 'svcResp':svcResp}
            ajax_page = 'user_avataruploaded.html' if not isAndroid else 'android_avataruploaded.html'
            page = ajax_page if ( request.is_ajax() or isAndroid ) else 'home_settings.html'
            thereturn = render_to_response(page,context,context_instance=RequestContext(request))
            if request.is_ajax() and not isAndroid and 'avatar_url' in locals() and len(str(avatar_url)) > 0 :
                jsonReturn = simplejson.dumps({'userAvatar':mark_safe('<img data-dj-view="userAvatar" src="'+avatar_url+'" alt="" />'),'userAvatarForm':mark_safe(thereturn.content)})
                thereturn = render_to_response('ajax_ttag_create.html',locals(),context_instance=RequestContext(request))
            return thereturn
        else :
            return loginscreen(request)
    except :
        logger=logging.getLogger(__name__)
        return errorscreen(request,logger, sys)