Opa Gustavo, > Estou montando um script para adicionar conteúdo (migrando um site xoops > para plone). No canal #plone recebi a sugestão de usar o método > invokeFactory. Estou testando ele no ploneshell e parece funcionar bem. > Um exemplo do uso seria: > > pasta.invokeFactory("News item", id="noticia1", title="Titulo Noticia", > text="texto") > > O problema é que eu não queria passar o "id" para este método. Quando > adicionamos conteúdo via web o plone automaticamente gera um id baseado > no titulo. Como fazer isso? Esta função exige que eu forneça um id.
a Tânia já deu uma sugestão, aqui vai mais uma. Basta chamar o método 'processForm' no objeto criado, que ele se encarrega de nomear o objeto conforme o título passado. Como bônus, ele ainda chama o hook de criação de objetos e a mágica para desmarcar a flag de criação. > Outra questão. Existe outra forma de adicionar conteúdo via script? Existe. Usando o invokeFactory, você está sujeito às restrições impostas pelo container (o local onde você está adicionando os objetos). Em algumas situações é conveniente adicionar coisas onde depois usuários normais não poderão mais fazer isso. Para tal, existe o _createObjectByType, e você usaria da seguinte maneira (untested): from Products.CMFPlone.utils import _createObjectByType obj = _createObjectByType('News Item', pasta, 'noticia1', title="Titulo Noticia", text="texto") obj.processForm() HTH, -- Dorneles Treméa X3ng Web Technology Para enviar uma mensagem: zope-pt@yahoogrupos.com.br Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/zope-pt/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html