Hi Niphlod.
Now I use request.vars instead of request.args and it works, I don't have
anymore the flash "Not authorized" message.
Here is the hp.load file:
{{=grid}}
{{=A('Test',callback=URL('hp.load', vars=dict(cat='a')))}}
When I load only the hp.load file it works, but when I load it inside the
html file no, hp.load file reload without a query update (I have all rows).
Do you know why ?
.html file:
{{=grid}}
{{=A('Test',callback=URL('hp.load', vars=dict(cat='a')))}}
Controller hp.py:
def hp():
db.models.pdf_path.readable = False
if request.vars['cat']:
cat_to_show=str(request.vars['cat'])
query = db.models.category==str(cat_to_show)
response.flash = 'Category to show is ' + cat_to_show
else:
query = db.models
response.flash = 'Request.vars[cat] is empty, show all rows'
fields =
(db.models.code,db.models.category,db.models.description_it,db.models.pdf_path)
headers = {'models.code': T('Product model'),
'models.category': T('Category'),
'models.description_it': T('Description'),
'models.pdf_path': 'pdf_path' }
links = [dict(header=T('Catalogue'), body=lambda row: A('Download',
_href=row.pdf_path, _target='_blank'))]
maxtextlengths={'models.code': 6, 'models.description_it': 120}
grid = SQLFORM.grid(query, headers=headers, fields=fields, csv=False,
maxtextlengths=maxtextlengths, orderby=db.models.code,
links=links,links_in_grid=True)
return dict(grid=grid)
Il giorno domenica 13 ottobre 2013 20:33:22 UTC+2, Niphlod ha scritto:
>
> grid uses signed links by default (otherwise, you could access all data
> just changing the url). Make sure that all links fiddling with grid "own"
> links (such as lining directyl to the edit action of some record) are
> signed.
> Also, grid uses request.args to detect what you're trying to do, so if you
> want to use something like /app/default/index/whatever as a "base url", you
> should pass also args=request.args[:1] to tell the grid that it should only
> consider what comes after the "whatever".
>
>
> On Sunday, October 13, 2013 8:24:15 PM UTC+2, Gael Princivalle wrote:
>>
>> Tim, Niphlod thank you for your answers. @Niphlod "Luke" means that's I'm
>> a skywalker ? I would like to !
>> Components are pretty useful, I've tried the documentation tutorial,
>> that's ok.
>> I'm still having some problems on this topic.
>> 1/My left side bar is under the grid
>> 2/I don't reach to give some args to the grid. As args I've just got to
>> give a category number. I've made a test link with "1". If I load only the
>> .load file clicking on the link it show al rows. With the .load file inside
>> the .html file, it returns me this message "not authorized".
>>
>> Here is my hp.load file in a dedicated component folder called hp:
>> {{left_sidebar_enabled=True,}}
>> {{=grid}}
>> <!-- Here I've made a test link for showing rows that have 1 for
>> category. In the future all the vertical side menu will have similar links
>> -->
>> {{=A('Test',callback=URL('hp.load', args='1'))}}
>> {{block left_sidebar}}
>> <!--...My left side menu -->
>>
>> My dedicated controller hp.py:
>> def hp():
>> #I don't want to show this field. I'm gone take care of it under with
>> the lambda function
>> db.models.pdf_path.readable = False
>> if request.args(0): #If there's an arg, it means that I have to make
>> a query with this category number
>> query = db.models.category==request.args(0)
>> else: #Else, I have to show all rows
>> query = db.models
>> fields =
>> (db.models.code,db.models.category,db.models.description_it,db.models.pdf_path)
>> #I set my headers
>> headers = {'models.code': T('Product model'),
>> 'models.category': T('Category'),
>> 'models.description_it': T('Description'),
>> 'models.pdf_path': 'pdf_path' }
>> #Here I take care about pdf_path for having a link on it.
>> links = [dict(header=T('Catalogue'), body=lambda row: A('Download',
>> _href=row.pdf_path, _target='_blank'))]
>> maxtextlengths={'models.code': 6, 'models.description_it': 120}
>> #Here is my construction grid
>> grid = SQLFORM.grid(query, headers=headers, fields=fields, csv=False,
>> maxtextlengths=maxtextlengths, orderby=db.models.code,
>> links=links,links_in_grid=True)
>> return dict(grid=grid)
>>
>> My h_products.html view:
>> {{extend 'layout.html'}}
>> {{=LOAD('hp','hp.load',ajax=True)}}
>>
>> How can I resolve these problems ?
>>
>> Il giorno giovedì 10 ottobre 2013 20:45:45 UTC+2, Tim Richardson ha
>> scritto:
>>>
>>> A web2py component will make the grid controlled by ajax, which means
>>> you can reload it from your page with javascript when some event happens,
>>> and that reloading is done the ajax way, without reloading the entire page.
>>> And there's more. Read about components in the book.
>>
>>
--
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/groups/opt_out.