Philipp von Weitershausen wrote:
Chris Withers wrote:
Chris Withers wrote:
Jean-Marc Orliaguet wrote:
once you have that utility / adapter you should be able to call it
like:
converter = getAdapterFor(123, type=IToStringConverter)
strResult = converter.convert(123)
Not quite, what I'm looking to do is more along the lines of:
mystr = getAdapter(123,str)
OK, less talk, more do... and when I stop worrying about it, it all
gets very easy:
>>> from zope.component import provideAdapter
>>> provideAdapter(str,(int,),str)
>>> from zope.component import getAdapter
>>> getAdapter(123,str)
'123'
Yay! That's _exactly_ what I want.
And that's exactly what I meant -- and wrote about half way up the
thread. :)
Anyway, now all excited, I tried this:
>>> def to_date(value):
... try:
... return DateTime(value)
... except:
... return None
...
>>> provideAdapter(to_date,(str,int),DateTime)
This registers a multi adapter for (a_string, an_integer), like views
are multi-adapters for (context, request). You want to say:
>>> provideAdapter(to_date, (str,), DateTime)
>>> provideAdapter(to_date, (int,), DateTime)
OK, but adaptation doesn't provide anything special here since "int" and
"str" are not sufficiently typed, or formatted, so the adapter has to do
all the guessing logic anyway, and there is no fundamental difference
between 123456898374 as date representation and '2006-11-16', or 061116
you might as well write a method that does that:
def to_date(value):
if isinstance(value, int):
...
else if isinstance(value, basestring):
...
this is why usually you don't adapt str or int, unless you're interested
in tracing nasty bugs?
/JM
_______________________________________________
Zope3-dev mailing list
[email protected]
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com