Hmmmm... entendi André! Nossa, ajudou demais colega...!
Muito obrigado pela ajuda. 

Saudações!

--- Em ter, 17/2/09, André FS <fs.an...@gmail.com> escreveu:
De: André FS <fs.an...@gmail.com>
Assunto: Re: [zope-pt] Pegar valor de pasta que contem numeros!
Para: zope-pt@yahoogrupos.com.br
Data: Terça-feira, 17 de Fevereiro de 2009, 15:14











    
            > 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.getFolderCont ents({'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.getPortalPat h()+'/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.getPortalPat h()+'/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/Documentatio n/Books/ZopeBook /2_6Edition/ 
Acquisition. stx



--

André FS


 

      

    
    
        
         
        
        








        


        
        


      Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

Responder a