Re: [zope-pt] Como acessar um objeto de conteúdo a partir de Script Python?

2006-11-30 Por tôpico Rodrigo Dias Arruda Senra
[ João Paulo Sinieghi <[EMAIL PROTECTED]> ]:

|  
|  eu criei o Document com o id my_document, e tentei usar o script
|  python abaixo:
|  
|  from Products.CMFCore.utils import getToolByName
|urltool = getToolByName(context, "portal_url")
|portal  = urltool.getPortalObject()
|document = getattr(portal, "my_document")
| ...

|  mas está dando um erro, 
|  
|  Tipo de Erro
|  AttributeError
|  Valor do Erro
|  my_document
|  
|  O que pode ser?

Enquanto um dos nossos verdadeiros Ploneguru não se manifesta,
vou dar um pitaco.

Experimente fazer 

  document = context.my_document

ao invés de 

  document = getattr(portal, "my_document")

O seu script precisa identificar a localização do objeto
que vc quer acessar. Seu código original tentava buscar
my_document como se fosse um atributo direto da raiz do portal.
Eu não sei se my_document foi criado diretamente lá
(onde poderia ser acessado através de portal.my_document)
ou se está em outra subpasta.

A construção "context.my_document" vai tentar localizar o objeto
usando o mecanismo de Aquisição do Zope, sendo portanto mais
flexível.

Suponha que o script Python tenha sido invocado pela url
http://raiz_do_site/a/b/c/seu_script

A construção context.my_document vai buscar o objeto my_document
identificando cada objeto associado a um sub-path na URL.
Logo vai testar se my_document é acessível através do objeto
vinculado ao caminho a/b/c, 
em caso de falha a/b, 
em caso de falha a
em caso de falha cai na raiz do portal,
e se falhar vai dizer que o objeto não foi encontrado.

Se por acaso o seu_script (sempre) estiver no mesmo diretório
que o objeto my_document. Então, vc também poderia usar
a construção:
 
  document = container.my_document
 
Espero que isto ajude.

Abração,
Senra

-
Rodrigo Senra
GPr Sistemas


[zope-pt] Como acessar um objeto de conteúdo a partir de Script Python?

2006-11-30 Por tôpico João Paulo Sinieghi
Bom dia 

Conforme a página do Fábio...
(http://www.fabiorizzo.com/Members/pablon/api_plone/exemplo-1-como-acessar-um-objeto-de-conteudo-a-partir-de-script-python)

eu criei o Document com o id my_document, e tentei usar o script
python abaixo:

from Products.CMFCore.utils import getToolByName
  urltool = getToolByName(context, "portal_url")
  portal  = urltool.getPortalObject()
  document = getattr(portal, "my_document")
  print document.Title()
  print document.CookedBody()
  return printed

mas está dando um erro, 

Tipo de Erro
AttributeError
Valor do Erro
my_document

O que pode ser?

Obrigado.