You are correct. When I pass a test list to the decorator and to the
template as shown a primitive pager appears and seems to work. I
suppose my problem is in passing a correct sa query object to the
decorator then. I'm still not sure what I'm doing wrong to be honest.

On Nov 3, 5:23 pm, "Diez B. Roggisch" <[EMAIL PROTECTED]> wrote:
> Oleksandr Moskalenko schrieb:
>
>
>
> > * Diez B. Roggisch <[EMAIL PROTECTED]> [2008-11-03 21:50:06 +0100]:
>
> >> Oleksandr Moskalenko schrieb:
> >>> * Diez B. Roggisch <[EMAIL PROTECTED]> [2008-11-03 21:03:15 +0100]:
>
> >>> 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()}
> >> **invquery** or **iquery**?
>
> >> You need to spell things proper of course.
>
> >> Diez
>
> > Diez,
>
> > I did write that if I use @paginate('iquery', ...) then I get the
> > "InvalidRequestError: This operation requires a Query against a single 
> > mapper."
> > traceback. So, no this is not a misspelling as far as I can tell. Do you 
> > have
> > any other suggestions?
>
> No, because it is the proper one. The paginate decorator can't work if
> you don't return a collection-like object under the same name you
> declare it to page. How do you expect it to work otherwise - by fuzzy
> name matching?
>
> I don't know where you wrote that InvalidRequestError (I don't see that
> in the mail thread here), and I don't have the slightes clue why
> renaming should change anything about it.
>
> But if you just for an experiment return a long list instead a
> query-object and just display that, you will see that the paginate
> decorator works just fine.
>
> Then solve your query-problem - and things should work.
>
> Diez
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to