Ok Thanks Niphlod Thought I could use json to prepare the data, using urllib.urlencode on the dictionary instead. Didn't have to change the curl command.
Thanks again. Brent On Friday, 19 April 2013 01:52:57 UTC-6, Niphlod wrote: > > uhm... I may be wrong but.... request.restful accepts the args as a normal > page, that is a application/x-www-form-urlencoded or a multipart/form-data > . with curl would be something like curl -d name=blablabla -d > otherparameter=blablabla http://theurl > > On Friday, April 19, 2013 1:24:03 AM UTC+2, Brent Zeiben wrote: >> >> Hi, >> I am using a python script to organize some data and try to send it into >> web2py via the @request.restful() api. In the python script the text is >> mainly input from a free form text field. ( I believe some Unicode >> characters are in there as well, however I remove everything that is ord >> 128 and above.) >> >> My problem arises when the text contains an ampersand (&) and probably >> anything that isn't allowed in without the form encoding. I thought python >> json would escape the character some way but it does not seem to. >> >> I am trying to use json to transfer this data to web2py via the curl >> command within python. >> >> Python Script >> >> import json >> import subprocess >> >> >> url = 'http://127.0.0.1:8000/testing/default/api/people.json' >> data = {"name":"My Full Name","biography":"Some simple information\n >> about me & blah blah blah"} >> >> >> jsondata = json.dumps(data) >> result = subprocess.Popen(['curl', >> '--user','username:password', >> '-d', >> jsondata, >> url], stderr=subprocess.PIPE,stdout=subprocess.PIPE).communicate()[0] >> >> >> >> >> >> The web2py relevant parts >> >> db.py >> >> db.define_table('people', >> Field('name','string',length=200,requires=IS_NOT_EMPTY()), >> Field('biography','text')) >> >> >> default.py >> >> >> auth.settings.allow_basic_login=True >> @auth.requires_login() >> @request.restful() >> def api(): >> response.view = 'generic.' + request.extension >> def POST(table_name,**vars): >> if table_name == 'people': >> return db.people.validate_and_insert(**vars) >> else: >> raise HTTP(400) >> return locals() >> >> >> So when the python script sends the data web2py complains because of the >> escaping issue with the & in the data. I was doing some searching and >> thought that changing the Content Type in the curl command to >> application/json would help with this but then web2py has nothing in the >> vars variable. >> >> Thank you, >> Brent >> > -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

