* Diez B. Roggisch <[EMAIL PROTECTED]> [2008-11-03 21:03:15 +0100]:
>
> Oleksandr Moskalenko schrieb:
> > I'm stuck on tg2 1.9.7b1 tg.decorators.paginate. I keep getting a NameError:
> > name 'collection' is not defined when trying to set up a @paginate decorator
> > where collection is the name of my DBSession.Query object. Also, the
> > docstrings for the decorator just mention to use
> > ${c.paginators.<name>.pager()} to render pages, so it would be immensely
> > helpful if there was more information or example controller/template code to
> > show new people how to use it properly.
>
> Can you provide some code?
>
> Diez
Here is my currently working controller/template pair without pagination with
all data in one big table with sortable columns:
Controller:
@expose('chemcupboard.templates.listall')
def listall(self, sort="id"):
invquery = DBSession.query(t_inventory).order_by(sort)
return dict(title='CCM - Chemical Inventory', organization = 'John Doe
Lab', iquery = invquery, sort = None)
Template:
<table>
<tr class="heading">
${h.th_sortable(sort, "id", "ID", "?sort=id")}
${h.th_sortable(sort, "name", "Chemical Name", "?sort=name")}
${h.th_sortable(sort, "location", "General Location",
"?sort=location")}
${h.th_sortable(sort, "sub_location", "Sub Location",
"?sort=sub_location")}
</tr>
<tr py:for="ilist in iquery">
<td>${ilist.id}</td>
<td>${ilist.name}</td>
<td>${ilist.location}</td>
<td>${ilist.sub_location}</td>
</tr>
</table>
Attempt to add pagination:
Controller:
@expose('chemcupboard.templates.list')
@paginate('invquery', items_per_page=30, use_prefix=False)
def list(self, sort="id"):
invquery = DBSession.query(t_inventory).order_by(sort)
return dict(title='CCM - Chemical Inventory', organization = 'John Doe
Lab', iquery = invquery, sort = None)
Template:
<div id="pagearea">
<p>
${c.paginators.iquery.pager()}
</p>
<table>
<tr class="heading">
${h.th_sortable(sort, "id", "ID", "?sort=id")}
${h.th_sortable(sort, "name", "Chemical Name", "?sort=name")}
${h.th_sortable(sort, "location", "General Location",
"?sort=location")}
${h.th_sortable(sort, "sub_location", "Sub Location",
"?sort=sub_location")}
</tr>
<tr py:for="ilist in iquery">
<td>${ilist.id}</td>
<td>${ilist.name}</td>
<td>${ilist.location}</td>
<td>${ilist.sub_location}</td>
</tr>
</table>
</div>
If I try to pass 'iquery' to the @paginate I get a curious "InvalidRequestError:
This operation requires a Query against a single mapper." traceback.
>From the traceback it looks like there is no access to the context of the
request.
Regards,
Alex.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears Trunk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears-trunk?hl=en
-~----------~----~----~----~------~----~------~--~---