> Olá pessoal,
>
Olá, Luiz.

[snip]
> Quando coloco para puxar uma pasta que tem como ID números e está abaixo da
> pasta "EXEMPLO", me da erro no código, por exemplo:
>
> pasta = context.teste.008
> -ERRO:
> "invalid syntax (Script (Python), line 1)"
>
Veja que, de fato, esse não é um código Python (PythonScript do Zope,
que seja) válido, o identificador deveria começar com uma letra, como
você deve ter percebido. Talvez haja uma forma mais elegante, mas essa
aqui funciona:

pasta = context.teste
subpasta = pasta.getFolderContents({'id':'008'})

'subpasta' será um objeto tipo 'brain' resultante de consulta no
catálogo, assim, para levantar o objeto, de fato, do ZODB, faça:

obj008 = subpasta[0].getObject()

[snip]
> A proposito pessoal, com a variável abaixo, só consigo pegar o valor que
> está em CATALOG, mas gostaria de pegar o valor da pasta origem de onde
> reside o objeto, por exemplo:
> -----------------------------------------------------------
> pa = context.portal_url.getPortalPath()+'/pasta1';
> obj = context.portal_url.portal_catalog(Type = "Page",
>                                                         path = pa)
>
Você não precisa chamar 'portal_catalog' a partir de 'portal_url'.
Isso só funcionou por conta da Aquisição [1]. Seu código poderia ser
desse jeito:

pa = context.portal_url.getPortalPath()+'/pasta1';
obj = context.portal_catalog(Type = "Page",
                                                         path = pa)

> for objeto in obj:
>     print objeto.aq_parent
> return printed
> -----------------------------------------------------------
> -SAÍDA:
> <CatalogTool at portal_catalog>
>
Isso está correto. Quando você faz uma consulta no catálogo, os
valores retornados, por motivos de performance, são objetos proxies (o
tal 'brain' ao qual me referi anteriormente). O pai desses objetos
são, de fato, o CatalogTool. Se você deseja acessar o objeto real a
partir do 'brain', existe o método 'getObject'. Tente reescrever seu
código dessa forma:

for objeto in obj:
    print objeto.getObject().aq_parent
return printed

Espero que ajude.

[1] http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/Acquisition.stx

--
André FS

Responder a