Can you help me with the example of this code with user authentication by
which i can get the user email which are given in web2py book :-
@request.restful()
def api():
response.view = 'generic.json'
def GET(tablename,id):
if not tablename=='person': raise HTTP(400)
return dict(person = db.person(id))
def POST(tablename,**fields):
if not tablename=='person': raise HTTP(400)
return db.person.validate_and_insert(**fields)
return locals()
On Thu, May 31, 2012 at 11:22 AM, Sanjeet Roy <[email protected]>wrote:
> Anthony i tried the following code it is showing method not allowed when i
> want to access :-
>
> @auth.requires_login()
> @request.restful()
> def get_project():
> proj=[]
> projid=[]
> for row in
> db(db.assign.employee==auth.user.email).select(db.assign.ALL):
> for row1 in db(db.project.id==row.project).select(db.project.ALL):
> projid.append(row1.id)
> proj.append(row1.name)
> return dict(proj=proj,projid=projid)
>
>
> On Thu, May 31, 2012 at 10:52 AM, Anthony <[email protected]> wrote:
>
>> Are you saying you want to be able to login via a curl request? For that,
>> you'll probably have to enable basic authentication:
>> http://web2py.com/books/default/chapter/29/9#Access-Control-and-Basic-Authentication.
>> Once logged in, the user record should be available in auth.user.
>>
>> Anthony
>>
>>
>> On Thursday, May 31, 2012 12:36:08 AM UTC-4, Sanjeet Roy wrote:
>>>
>>> Hii Anthony
>>> I am able to POST and insert the data in to the database can you help me
>>> to get the user email who will be authenticated and i will get the data
>>> from the database which are associated with the particular user.
>>> example:-
>>> curl -u [email protected] "http:127.0.0.1:8080/myapp/**
>>> api/getdata/proj/id/1/acty<http://127.0.0.1:8080/myapp/api/getdata/proj/id/1/acty>
>>> "
>>>
>>> I get the information of the proj by using his id by following code but
>>> how i get the user information who are loged-in.
>>>
>>> @auth.requires_login()
>>> @request.restful()
>>> def getdata():
>>> def GET(*args,**vars):
>>> patterns = "auto"
>>> parser = db.parse_as_rest(patterns,**args,vars)
>>> if parser.status == 200:
>>> return dict(content=parser.response)
>>> else:
>>> raise HTTP(parser.status,parser.**error)
>>> return locals()
>>>
>>>
>>>
>>> On Wed, May 30, 2012 at 9:51 AM, Sanjeet Roy <[email protected]>wrote:
>>>
>>>> Thanks Anthony now i got it and i am able to post the request by using
>>>> the CURL
>>>>
>>>>
>>>> On Wed, May 30, 2012 at 8:23 AM, Anthony <[email protected]> wrote:
>>>>
>>>>> If you want to make a POST
>>>>> request<http://en.wikipedia.org/wiki/POST_%28HTTP%29>,
>>>>> you need some way to send the post data from a client. The client could be
>>>>> a browser, in which case you can send post data by submitting a form or by
>>>>> sending an Ajax POST request. The client could be another server, in which
>>>>> case, you can use something like urllib2.urlopen() in Python (
>>>>> http://docs.python.org/**library/urllib2.html<http://docs.python.org/library/urllib2.html>)
>>>>> or the Linux curl command-line utility (http://www.yilmazhuseyin.com/*
>>>>> *blog/dev/curl-tutorial-**examples-usage/<http://www.yilmazhuseyin.com/blog/dev/curl-tutorial-examples-usage/>).
>>>>> You cannot make a POST request by simply visiting a URL in a browser --
>>>>> that will only result in a GET request.
>>>>>
>>>>> What exactly are you trying to do? How are you intending to make
>>>>> requests to this API?
>>>>>
>>>>> Anthony
>>>>>
>>>>>
>>>>> On Tuesday, May 29, 2012 10:29:06 PM UTC-4, Sanjeet Roy wrote:
>>>>>>
>>>>>> Hi Anthony actually i didn't get you i want ipost the data something
>>>>>> like that which are given in the following link :-
>>>>>>
>>>>>> http://www.mail-archive.com/**we**[email protected]/**msg70275**
>>>>>> .html<http://www.mail-archive.com/[email protected]/msg70275.html>
>>>>>>
>>>>>> http://vimeo.com/21133657
>>>>>>
>>>>>> http://www.reddit.com/r/**progra**mming/comments/g5hxq/**web2py_**
>>>>>> trunk_has_a_new_**restful_api_**that_writes_db/**c1l2ykg<http://www.reddit.com/r/programming/comments/g5hxq/web2py_trunk_has_a_new_restful_api_that_writes_db/c1l2ykg>
>>>>>>
>>>>>>
>>>>>> On Wed, May 30, 2012 at 1:09 AM, Anthony <[email protected]> wrote:
>>>>>>
>>>>>>> You could submit the post request via a form on the page, with the
>>>>>>> form's action set to the get_person URL, or you could submit via Ajax,
>>>>>>> possibly using jQuery.post() (see http://api.jquery.com/**jQu**
>>>>>>> ery.post/ <http://api.jquery.com/jQuery.post/>).
>>>>>>>
>>>>>>> Anthony
>>>>>>>
>>>>>>>
>>>>>>> On Tuesday, May 29, 2012 3:01:09 PM UTC-4, Sanjeet Roy wrote:
>>>>>>>>
>>>>>>>> Hii Anthony i have the following in my db:-
>>>>>>>>
>>>>>>>> db.define_table('person',**Field****('name'),Field('**birthdate','*
>>>>>>>> *da**te'))
>>>>>>>> db.define_table('dog',Field('**n****ame'),Field('owner',db.**
>>>>>>>> person)****,Field('info','text'))
>>>>>>>>
>>>>>>>> and api.py is my controller :-
>>>>>>>>
>>>>>>>> @request.restful()
>>>>>>>> def get_person():
>>>>>>>> def GET(id):
>>>>>>>> person = db.person(id)
>>>>>>>> return person.as_dict() if person else None
>>>>>>>> def POST(owner,name,info):
>>>>>>>> return db.dog.validate_and_insert(**own****
>>>>>>>> er=owner,name=name,info=**info)
>>>>>>>> return locals()
>>>>>>>>
>>>>>>>
>>>>>> How can i post and insert the data in to the table dog which are
>>>>>> given above .
>>>>>>
>>>>>> like that :-
>>>>>>
>>>>>> curl -i -d
>>>>>> "info=aInfo&name=aName&owner=**7**4"http://localhost:8000/**restfu**l/api/manage_dog
>>>>>> <http://localhost:8000/restful/api/manage_dog>
>>>>>>
>>>>>>
>>>>>> which are given in the above link.
>>>>>>
>>>>>>
>>>>
>>>
>