2010/3/13 Adam Victor Nazareth Brandizzi <brandi...@gmail.com>

> 2010/3/12 Luciano Pacheco <lucm...@gmail.com>
> >
> > Olá Adam,
> > Na verdade o seu paralelo não faz sentido no ZODB, pois o ZODB é sem
> schema (estrutura das tabelas).
> > O ZODB é orientado a objetos tem um objeto App na raiz e todos os objetos
> dentro desse objeto App.
>
> Eu sei, o que eu quis dizer é que eu quero saber onde estarão os
> objetos com as informações que preciso :>)
>
>
Vc quer fazer buscas é isso ?

Você pode usar o portal_catalog para fazer buscas e achar seus objetos.

Entre no modo debug e faça:
#! -*- coding: UTF-8 -*-
import transaction
from zope.app.component.hooks import setHooks, setSite
from Testing.makerequest import makerequest
from AccessControl.SecurityManagement import newSecurityManager

# algumas coisas dependem do request
app = makerequest(app)
portal = 'Plone'
site = app[portal]

# alguns produtos me davam erros bizarros sem essa linha (por exemplo o FSS)
setSite(site)

# Ate este momento estamos como usuario anonimo.
# usando o newSecurityManager nos damos as credenciais do usuario admin
newSecurityManager(None, app.acl_users.getUserById('admin'))

# se fizer alterações em conteúdos/objetos tem que fazer o commit
transaction.commit()


ct = site.portal_catalog

paginas = ct(portal_type='Document')

paginas_e_noticias = ct(portal_type=['Document', 'News Item'])

paginas_publicadas = ct(portal_type='Document', review_state='published')

Para saber os índices de buscas vá na ZMI e acesse a aba Indexes no
portal_catalog. No exemplo acima portal_type e review_state são os nomes dos
índices que usamos na busca.



> > Por exemplo assim:
> > Entre com o seguinte comando na instância do seu Plone.
> > bin/instance debug
> > >>> app['pasta'] # retorna o objeto pasta dentro do objeto App, uma pasta
> na raiz do seu Zope
> > >>> app['Plone'] # pega o Plone criado pelo Unified Installer
> > >>> app.objectIds() # lista os Ids dos objetos dentro da raiz
> > >>> app['Plone'].objectIds() # lista os Ids dos objetos dentro do Plone
> > Dá uma procurada por instance debug authentication para ver como logar no
> shell em debug.
> > Tô sem tempo de escrever mais, mas acho que já dá para vc ir caminhando
> um pouco. :-)
>
> Rapaz, salvou meu dia!
>
> Eu conseguia até recuperar os objetos adequados, mas não os atributos
> dele (mandei um e-mail agorinha explicando isso). Usando o instance eu
> consegui.
>
> Queria poder fazer isso via Python, assim só mandava o script para o
> pessoal que me pediu e eles rodavam... mas isso aí já foi um grande
> avanço! Obrigado!
>

Dá para fazer um script python que faço o que vc quer.

Faça o script como vc faria no shell de debug e depois rode assim:

bin/instance run path/to/script.py

Eu utilizo isso para fazer migrações de conteúdos de portais para o Plone.

Até mais,
-- 
Luciano Pacheco
blog.lucmult.com.br

Responder a