Once I added the package includes, adding
for c in columns:
directlyProvides(c, zc.table.interfaces.ISortableColumn)
did the trick.
I'd love to have a look at your alternate sorting implementation, though
will need to get checking privileges before merging. (I'll look into
applying for these).
Many thanks,
Laurence
Gary Poster wrote:
On Mar 14, 2006, at 11:54 AM, Laurence Rowe wrote:
Hi there,
I'm trying to use zc.table to format the output of one of my forms. it
seems to work ok for the unsorted formatter, but not for the
StandalonSortFormatter. Here is the code that works with plain formatter:
columns = (
GetterColumn(name=u'dn', title=u'Distinguished Name',
getter=lambda i, f: i.dn, subsort=True),
GetterColumn(name=u'displayName', title=u'Name', getter=lambda i,
f: i.displayName, subsort=True),
GetterColumn(name=u'mail', title=u'Email Address', getter=lambda
i, f: i.mail, subsort=True),
)
class LDAPFilterForm(form.Form):
form_fields = form.Fields(interfaces.ILDAPFilter)
@form.action("Search")
def handle_search_action(self, action, data):
search = interfaces.ILDAPSearch(self.context, None)
results = search.search(data['filter'])
self.table = table.Formatter(self.context, self.request,
list(results), columns=columns)
return self.table()
but when I change the Formatter to StandaloneSortFormatter, I still
get the same html output. I have tried adding in this from the
zc.table readme:
for c in columns:
directlyProvides(c, zc.table.interfaces.ISortableColumn)
Yes, you want this.
@adapter(IRequest)
@implementer(Interface)
def dummyResource(request):
return lambda:'/@@/zc.table'
provideAdapter(dummyResource, name='zc.table')
No, you don't want this.
But then I get the following traceback:
2006-03-14T16:34:32 ERROR SiteError http://localhost:8080/@@/zc.table
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/zope/publisher/publish.py",
line 135, in publish
object = request.traverse(object)
File "/usr/lib/python2.4/site-packages/zope/publisher/browser.py",
line 500, in traverse
ob = super(BrowserRequest, self).traverse(object)
File "/usr/lib/python2.4/site-packages/zope/publisher/http.py",
line 451, in traverse
ob = super(HTTPRequest, self).traverse(object)
File "/usr/lib/python2.4/site-packages/zope/publisher/base.py",
line 289, in traverse
subobject = publication.traverseName(
File
"/usr/lib/python2.4/site-packages/zope/app/publication/publicationtraverse.py",
line 56, in traverseName
ob2 = ob.publishTraverse(request, nm)
File
"/usr/lib/python2.4/site-packages/zope/app/publisher/browser/resources.py",
line 40, in publishTraverse
locate(resource, sm, name)
File
"/usr/lib/python2.4/site-packages/zope/app/location/location.py",
line 72, in locate
object.__name__ = name
TypeError: func_name must be set to a string object
exceptions.TypeError:
func_name must be set to a string object
/usr/lib/python2.4/site-packages/zope/app/location/location.py(72)locate()
-> object.__name__ = name
Using the debugger I can see:
(Pdb) name
u'zc.table
Any ideas? I'm stumped.
Not sure, but I'm guessing it is the dummy adapter. Try again without it.
Also, as I wrote yesterday, we have an alternate sorting implementation
that we ought to get in zc.table. I sent it to Martijn Faassen; if you
think you might look at it and maybe merge it, I could send it to you
too. :-)
Gary
_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users