O script comentado estou enviando por anexo.

 Atenciosamente, 

Jeferson Lelis.




________________________________
De: Jeferson Lelis C. dos Santos <jeferle...@yahoo.com>
Para: zope-pt@yahoogrupos.com.br
Enviadas: Segunda-feira, 9 de Fevereiro de 2009 22:58:03
Assunto: Res: [zope-pt] Buscar itens e ao mesmo tempo move-los!


Luiz,

Fiz o script python abaixo baseado em uma pasta esperta que ja possui as news 
do ano de 2008, como você ja tem. Este script pega os objetos da pasta esperta 
localizada na pasta news e cria novos objetos na pasta arquivos.Abaixo eu 
coloco o código comentado. Acho que fica faltando deletar os objetos copiados 
da pasta anterior. Ai é só da mais uma pesquisada. Não sei se esta é a melhor 
solução, mas espero ter ajudado. Ah não esqueça de ir na aba Proxy do script e 
setar ele como manager, senão o script não terá permissão para criar um novo 
objeto

#Local onde se encontra a pasta esperta com as news de 2008
documentos = context.news. news2008. queryCatalog( );
    #Laço de repetição que coloca na vaiavel i uma news por vez
    for i in documentos:
       #Retorna o objeto
       documento = i.getObject( );
       #Localizo o contexto onde serão criados os meus arquivos
       contextoatual = context.arquivos;
       #pego a identificação do objeto
       newId = documento.getId( );
       #Invocação para criação de um novo item com o tipo que foi determinado 
News Item
       contextoatual. invokeFactory( id=newId, type_name='News Item', 
review_state= 'published' );
       #Retorno o objeto criado
       objeto = getattr(contextoatu al,newId) ;
       #Edição do objeto criado. Ai coloquei os campos básicos você pode 
colocar outros como effective etc...
       objeto.edit( title = documento.Title( ), description = 
documento.Descripti on(),
                         image = documento.getImage( ), imageCaption = 
documento.getImageC aption()) ;
       #Publico o objeto criado
       context.portal_ workflow. doActionFor( objeto, 'publish');
#coloco uma mensagem na tela informando que tudo ocorreu bem
print 'copia efetuada com sucesso!'
#retorno a mensagem
return printed

 Atenciosamente, 

Jeferson Lelis.




________________________________
De: Luiz <softdrivers2@ yahoo.com. br>
Para: Zope-pt <zope...@yahoogrupos .com.br>
Enviadas: Segunda-feira, 9 de Fevereiro de 2009 17:44:04
Assunto: [zope-pt] Buscar itens e ao mesmo tempo move-los!


Olá todos,

Tenho uma pasta de "news", e uma outra pasta chamada "arquivos". Dentro da 
pasta "news" os itens de notícias estão misturados entre os anos 2008 e 2009. 
Eu gostaria de fazer uma busca dentro da pasta "news" e buscar apenas os itens 
de notícias que correspondem ao ano de 2008 e automaticamente joga-los dentro 
da pasta "arquivos". Eu até consegui fazer uma busca pela "pasta esperta" 
(Coleção) que pega estas datas de 2008, o problema é que na "pasta esperta" 
(Coleção) não tem como por uma "AÇÃO" de COPIAR ou MOVER os itens. Por script 
tem como fazer? Não tenho idéia de como fazer! Alguém pode me ajudar ou me dar 
uma luz nesta questão? 

Obrigado pela atenção!
 

________________________________
Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - 
Celebridades - Música - Esportes
________________________________
Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - 
Celebridades - Música - Esportes 
   


      Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
#Local onde se encontra a pasta esperta com as news de 2008
documentos = context.news. news2008. queryCatalog( );
    #Laço de repetição que coloca na vaiavel i uma news por vez
    for i in documentos:
       #Retorna o objeto
       documento = i.getObject( );
       #Localizo o contexto onde serão criados os meus arquivos
       contextoatual = context.arquivos;
       #pego a identificação do objeto
       newId = documento.getId( );
       #Invocação para criação de um novo item com o tipo que foi determinado 
News Item
       contextoatual. invokeFactory( id=newId, type_name='News Item', 
review_state= 'published' );
       #Retorno o objeto criado
       objeto = getattr(contextoatu al,newId) ;
       #Edição do objeto criado. Ai coloquei os campos básicos você pode 
colocar outros como effective etc...
       objeto.edit( title = documento.Title( ), description = 
documento.Descripti on(),image = documento.getImage( ), imageCaption = 
documento.getImageC aption()) ;
       #Publico o objeto criado
       context.portal_ workflow. doActionFor( objeto, 'publish');
#coloco uma mensagem na tela informando que tudo ocorreu bem
print 'copia efetuada com sucesso!'
#retorno a mensagem
return printed

Responder a