As Alan suggests, you slightly mis-copied the code from the book -- it
should be:
@auth.requires_login()
def documents():
Note the parentheses.
Anthony
On Sunday, March 18, 2012 6:21:54 PM UTC-4, Monte Milanuk wrote:
>
> Hello,
>
> Working my way thru the wiki app demo in the online manual... I kept
> getting a weird error like this:
>
>
> Traceback (most recent call last):
>> File "gluon/restricted.py", line 205, in restricted
>> File "E:\web2py\applications\mywiki\controllers/default.py", line 31, in
>> <module>
>> TypeError: requires_login() takes exactly 1 argument (2 given)
>>
>>
> whenever I attempted to access any of the views for this app. Only on
> line 31 of the controller 'default.py', right before 'def documents():'.
>
> Here is the code listing from the 'trouble ticket':
>
> "edit an existing wiki page"
>> this_page = db.page(request.args(0)) or redirect(URL('index'))
>> form = crud.update(db.page, this_page, next = URL('show',
>> args=request.args))
>> return dict(form=form)
>>
>> @auth.requires_login
>>
>> def documents():
>> "browse & edit all documents attached to a given page"
>> page = db.page(request.args(0)) or redirect(URL('index'))
>> db.document.page_id.default = page.id
>>
>>
> I went back thru the code several times, and I couldn't seem to find
> anything specifically wrong that jumped out at me...
>
> ...but when I commented out line 31 entirely - everything began working.
> Eh?!?
>
> Could someone explain to me why that one line, right there, would cause
> things to break when the decorator is used elsewhere in the same controller
> 'default.py' several times with no problems?
>
> There are any number of things I don't fully understand yet, but most of
> them 'just work' so I've kept moving on, learning as I go. This one has me
> kinda stumped - I don't *think* its a typo on my part, though thats
> certainly the most likely cause. If it is, I'm not seeing it though, at
> least not right there in the section of code the trouble ticket
> high-lighted.
>
> TIA,
>
> Monte
>
>