def userprofilephotoconfirm(): member = MemberInfo() #this will cause an ugly key error if we don't handle it properly try: inputUploadedPictureFile = request.files['inputProfilepicture'] if inputUploadedPictureFile: header = inputUploadedPictureFile.headers['Content-Type'] parsed_header = parse_options_header(header) blob_key = parsed_header[1]['blob-key'] except: #no need to log this error output dummyvariable = "" #a user is uploading a picture, either new if they did not have one prior, or uploaded a new one which would delete the old one if inputUploadedPictureFile: if member.pictureblobstorekey: blobstore.delete(member.pictureblobstorekey) images.delete_serving_url(member.pictureblobstorekey) member.pictureservingurl = images.get_serving_url(blob_key) member.pictureblobstorekey = blob_key member.put() return render_template('userprofilephotosaved.html', member=member) except: try: #If you couldn't complete the user save, be sure to delete the photo from the blobstore or re-use it later (to avoid a lost child hanging around) inputUploadedPictureFile = request.files['inputProfilepicture'] if inputUploadedPictureFile: header = inputUploadedPictureFile.headers['Content-Type'] parsed_header = parse_options_header(header) blob_key = parsed_header[1]['blob-key'] blobstore.delete(blob_key) except: #no need to log this error output dummyvariable = "" #Create a new form POST URL for the blobstore userprofilephoto_form_url = blobstore.create_upload_url('/userprofilephotoconfirm') return render_template('userprofilephoto.html', member=member, userprofilephoto_form_url=userprofilephoto_form_url, user_profilepicturesrc=user_profilepicturesrc, alertmessage='Oops!', userprofilephoto_form_url=userprofilephoto_form_url, user_profilepicturesrc=user_profilepicturesrc)