James Allwyn wrote:

Thanks Stephan and Dominik for all the help so far.
I've decided to go down the route Stephan suggested,
since I was more able to get my head around it.

I've got a question about adapters / ZPT:

* Is is possible to access the output of an adapter
directly from ZPT?
There was such a proposal:
http://www.zope.org/DevHome/Wikis/DevSite/Projects/ComponentArchitecture/TALESPathExpressionAdapters

IMO only the IPathAdapter is implemented yet, but I'm not shure. I never used those features...

My adapter provides a method getRating. I've used the
following to get it to also provide this as a
property:

rating = property(getRating)

which seems to work. At the moment I am having to use
view/rating in my ZPT; the view class can say either:

rating = self.rate.getRating()
or
rating = self.rate.rating

depending on whether I want to access the method or
the property - both seem to work OK.
Yes, but I would not offer both. I would limit the interface to the property only, because the property can used more easily generating generic view such as schemadisplay, add/editform and form...

However, I would
like to change from view/rating to context/rating or
context/getRating in the ZPT - this would seem cleaner
and more logical to me - I could do away with the view
class, so it would be one less piece of code to
maintain.
The view-layer definitly make sense, but sometimes it brings a certain implementation/registration overhead/burden.

If you are to lazy to map your views manualy to your adapters or if you like to omit a lot of extra code, then you could use/ write generic views which can be registered using zcml-registrations.

In your case it might possible to use the schemadisplay directive, maybe you have to write an additional widget for the rating field and a custom template.

My understanding of the adapter is that it has adapted
my object so it now provides the getRating() method
and rating property of the adapter interface - it
would seem to me that this should mean I can access it
like any other method or property the object provides,
but it does not seem to be the case.
No, you have to adapt explicitly:
obj = object()
adaptedobject  = IRating(obj)
or any equivalent or extending zapi method for example getAdapter or getMultiAdapter

Regards,
Dominik


_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to