Nuxeo mailing list archives
[CPS-devel] can call script via url but not from script
Santi Camps
scamps at earcon.com
Fri Nov 10 08:27:05 CET 2006
On 11/9/06, Joachim Schmitz <js at aixtraware.de> wrote:
> In the port_root I have a ProxyFolder campus of portal_type University.
> In the University-Class I defined a routine to get a certain value.
>
> when I call this via the browser-url like so:
>
> http://www.test.de/srp/campus/getHallTitle?hall=xxx
>
> the correct title is returned.
>
> but when I call it in a script:
>
> context.portal_url.getPortalObject().campus.getHallTitle("xxx")
>
> I get an attribute error "getHallTitle"
>
> this works also in a script:
>
This is because your "campus" object is really a CPS Proxy,
referencing a really campus object existing in the portal_repository
(named the "Content"). So, the proxy object doesn't have the
getHallTitle method, but the content object have.
A __getitem__ method exists in the proxies to do some magic, so your
call http://www.test.de/srp/campus/getHallTitle?hall=xxx works. To
do the same in a script, you can use either:
context.portal_url.getPortalObject().campus['getHallTitle']("xxx")
or
content = context.portal_url.getPortalObject().campus.getContent()
content.getHallTitle("xxx")
That's no difference between them, but the second option is a cheaper
operation if you need to call more methods or attributes.
Regards
--
Santi Camps
Earcon S.L. - http://www.earcon.com
- http://www.kmkey.com
This list archive provided by Nuxeo, the
leaders of open source ECM.
Check out the Nuxeo 5 open source,
standards-based ECM project.