Just ran into and fixed this problem after much trial and error. In short, 
the URL that links to this controller method needs to have the 
user_signature=True attribute: In our case this was a link from another 
form grid:

...
        links=[
            dict(
                header='Manage', 
                body=lambda row: A(SPAN(' Members', _class='fa 
fa-user-circle'),
                     _href=URL('membership', args=[row.id], 
user_signature=True), 
                     _class='btn btn-primary btn-sm'
                )
            )
        ],
...

We noticed that if we switched the URL *args* to *vars* it also worked. We 
wanted the pretty URL though so found that the user_signature worked. One 
other thing to note: If you plan to use *args* like we did here the 
SQLform.grid on the recipient page will need the *args=request.args[:1] *or 
similar attrbute so all of its automatically generated links will include 
the *args* as well.

grid = SQLFORM.grid(
        ...
        args=request.args[:1],
        ...
)

Dave

On Saturday, April 22, 2017 at 3:19:15 AM UTC-5, Rudy wrote:
>
> Hi there,
>
> It feels really strange to me that when i used SQLFORM.grid(), I got a 
> flash message "not authorised", but when i used smartgrid(), it worked just 
> fine (in both cases i had logged in already). I tried to removed 
> @auth.requires_login(), but same behaviour happened. I seem to miss some 
> very fundamental knowledge using SQLFORM.grid(). Below is the simplified 
> code. Any help is much appreciated.
>
> @auth.requires_login()
> def list_items2():
>     response.view='accounting/list_items.html'
>     grid = SQLFORM.grid(db.auth_user)
>     return locals()
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
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/d/optout.

Reply via email to