def save_notebook(access, notebook_name, content, version, o): #user_nickname=get_user_nickname(o) user_nickname=get_user_name_network(o) if not user_nickname: return {'error':'Please login to save changes'} user_name=get_user_name(o) user_network=get_user_network(o) user_id=get_user_id(o) user_name_network_id=get_user_name_network_id(o) # TODO: check if the notebook exists and the user is the same as owner??? #b=get_notebook(user_nickname, access, notebook_name, None) #if b and b.user_id != user_id: # o.response.out.write("{'error':'Sorry, Only owners can save changes.'}") # return # find the last version last_version=0 (last_content, last_version)=get_notebook_content(user_nickname, access, notebook_name, None) if not last_version: last_version= 0 # if version is not specified in the request make it more than last_version by 1 version = int(version) if version != '' else last_version + 1 key_name=user_nickname+"/"+access+"/"+notebook_name # if this is a new version save it in NoteBook if version >= last_version: #create a new NoteBook. key_name must go in constructor n=NoteBook(key_name=key_name) n.notebook_name=notebook_name n.user_nickname=user_nickname n.user_name=user_name n.user_network=user_network n.user_id=user_id n.user_name_network_id=user_name_network_id n.access=access n.content=content n.version=version #save it #import pdb; pdb.set_trace() n.put() # No matter if it is a new or an old version save it in NoteBookVersion n=NoteBookVersion(key_name=key_name+"/"+str(version)) n.notebook_name=notebook_name n.user_nickname=user_nickname n.user_name=user_name n.user_network=user_network n.user_id=user_id n.user_name_network_id=user_name_network_id n.access=access n.content=content n.version=version #save it n.put() #output r = {} r['key_name']=key_name r['notebook_name']=notebook_name r['user_nickname']=user_nickname r['user_name']=user_name r['user_network']=user_network r['user_id']=user_id r['user_name_network_id']=user_name_network_id r['access']=access #r['content']=content r['version']=version return r