Re: [Zope-pt] Estrutura de diretórios pelo portal_catalog
On Wed, 12 Oct 2005 13:38:48 -0300 xiru [EMAIL PROTECTED] wrote: Senra, so um comentario... sua solucao nao é das melhores pq levanta muitos objetos do ZODB. O ideal é sempre usar os Brains ao invez de ficar invocando getObject. Em uma instalacao grande, com ZEO, ficar dando getObject mata o cluster, principalmente se voce tem bastante objetos. Obrigado pela correção Xiru, mas não sei se eu entendi corretamente o que deveria ser feito. Voce poderia corrigir o código abaixo demonstrando o uso correto do Brains para obter o mesmo efeito ? Atenciosamente, Senra result = context.cancun.portal.portal_catalog(portal_type=AnuncioBalada) for i in result: obj = i.getObject() caminho_genealogico = [] while obj: try: caminho_genealogico.append(obj.getId()) obj = obj.aq_parent except: break # pretty-print caminho_genealogico.reverse() for level,Id in enumerate(caminho_genealogico): print \t*level, Id break # descomente para testar só 1 iteração return printed 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
Re: [Zope-pt] Estrutura de diretórios pelo portal_catalog
On 10/17/05, Rodrigo Dias Arruda Senra [EMAIL PROTECTED] wrote: Obrigado pela correção Xiru, mas não sei se eu entendi corretamente o que deveria ser feito. Voce poderia corrigir o código abaixo demonstrando o uso correto do Brains para obter o mesmo efeito ? Brain é o nome infeliz dos registros retornados pelo Catalog, representados pela variável i no seu código, Senra. Quando dou aulas, eu chamo os brains de registros catalográficos para deixar claro que eles não são objetos de conteúdo, mas apenas representações resumidas deles (assim como um registro bibliográfico não é um livro, mas apenas uma representação resumida dele). O que o Xiru disse é que a sua solução é muito cara porque ao chamar i.getObject() você está acessando o objeto de conteúdo em si, ou acordando-o (waking it up como dizem os zopistas gringos), e portanto consumindo muita memória, especialmente se o seu código percorre recursivamente todas a pastas do site. O ideal é tentar sempre que possível limitar os resultados das consultas ao catalog, usando apenas os índices e o os metadados dos registros catalográficos. Por isso vale estudar e aprender a usar bem o portal_catalog, e um bom começo é o capítulo sobre o Catalog no Zope Book. [ ]s Luciano 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
Re: [Zope-pt] Estrutura de diretórios pelo portal_catalog
Senra, so um comentario... sua solucao nao é das melhores pq levanta muitos objetos do ZODB. O ideal é sempre usar os Brains ao invez de ficar invocando getObject. Em uma instalacao grande, com ZEO, ficar dando getObject mata o cluster, principalmente se voce tem bastante objetos. Atenciosamente On 10/11/05, Rodrigo Dias Arruda Senra [EMAIL PROTECTED] wrote: On Tue, 11 Oct 2005 10:04:57 -0300 JJ (Arnaldo Janz Júnior) [EMAIL PROTECTED] wrote: Olá, pessoALL! Estamos montando uma estrutura de diretórios (p/ tentar ilustrar, a idéia é algo como o navtree ou o sitemap) via consulta no portal_catalog. Tudo corria bem exceto o fato de que estamos obtendo TODA a estrutura no mesmo nível, ou seja, ñ conseguimos identificar quem é filho de quem. Pelo que parece, não existe índice que guarde isso (quem é filho de quem) no portal_catalog, não é? E, se realmente não, alguém sabe como poderíamos fazer? Tentamos o produto ExtendedPathIndex p/ usarmos depth com um índice path do tipo ExtendedPathIndex - salvo engano, como no Plone 2.1 - mas não deu certo, ainda não conseguimos o resultado esperado (e, de fato, não me parece a solução, já que só reduz a quantidade de níveis a descer). Estamos usando Plone 2.0.5 + Zope 2.7.7. Alguém pode ajudar? Alguém já precisou construir uma estrutura assim? Serve achar quem é o pai de quem ao invés de quem é filho de quem ;o) Experimente algo assim: :: result = context.cancun.portal.portal_catalog(portal_type=AnuncioBalada) for i in result: obj = i.getObject() caminho_genealogico = [] while obj: try: caminho_genealogico.append(obj.getId()) obj = obj.aq_parent except: break # pretty-print caminho_genealogico.reverse() for level,Id in enumerate(caminho_genealogico): print \t*level, Id break # descomente para testar só 1 iteração return printed Abração, Senra Para enviar uma mensagem: zope-pt@yahoogrupos.com.br Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] Links do Yahoo! Grupos -- Fabiano Weimar dos Santos Plone Developer and Consultant 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
Re: [Zope-pt] Estrutura de diretórios pelo portal_catalog
Use o NavTreeIndexNG (CVS Collective). Ele permite buscas no catalogo por path com um nivel apenas e é um pouco mais otimizado do que o ExtendedPathIndex para esse fim especifico (palavras do Sidnei). Essa é uma boa estrategia para substituir o objectValues, na maioria dos casos.On 10/11/05, JJ (Arnaldo Janz Júnior) [EMAIL PROTECTED] wrote: Olá, pessoALL!Estamos montando uma estrutura de diretórios (p/ tentar ilustrar, a idéia é algo como o navtree ou o sitemap) via consulta no portal_catalog. Tudo corria bem exceto o fato de que estamos obtendo TODA a estrutura no mesmo nível, ou seja, ñ conseguimos identificar quem é filho de quem.Pelo que parece, não existe índice que guarde isso (quem é filho de quem) no portal_catalog, não é? E, se realmente não, alguém sabe como poderíamos fazer? Tentamos o produto ExtendedPathIndex p/ usarmos depth com um índice path do tipo ExtendedPathIndex - salvo engano, como no Plone 2.1 - mas não deu certo, ainda não conseguimos o resultado esperado (e, de fato, não me parece a solução, já que só reduz a quantidade de níveis a descer).Estamos usando Plone 2.0.5 + Zope 2.7.7.Alguém pode ajudar? Alguém já precisou construir uma estrutura assim?A consulta atualmente é essa:f=context.portal_catalog (portal_type=types, review_state=estados, path={'query':'/'.join(context.getPhysicalPath())})Muito obrigado. --JJ (|´:¬{)»-Deus escreve certo por linhas certas. Nós é que enxergamos torto.- Para enviar uma mensagem: zope-pt@yahoogrupos.com.br Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: 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 Termos do Serviço do Yahoo!. -- Fabiano Weimar dos SantosPlone Developer and Consultant Para enviar uma mensagem: zope-pt@yahoogrupos.com.br Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: 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 Termos do Serviço do Yahoo!.
Re: [Zope-pt] Estrutura de diretórios pelo portal_catalog
On Tue, 11 Oct 2005 10:04:57 -0300 JJ (Arnaldo Janz Júnior) [EMAIL PROTECTED] wrote: Olá, pessoALL! Estamos montando uma estrutura de diretórios (p/ tentar ilustrar, a idéia é algo como o navtree ou o sitemap) via consulta no portal_catalog. Tudo corria bem exceto o fato de que estamos obtendo TODA a estrutura no mesmo nível, ou seja, ñ conseguimos identificar quem é filho de quem. Pelo que parece, não existe índice que guarde isso (quem é filho de quem) no portal_catalog, não é? E, se realmente não, alguém sabe como poderíamos fazer? Tentamos o produto ExtendedPathIndex p/ usarmos depth com um índice path do tipo ExtendedPathIndex - salvo engano, como no Plone 2.1 - mas não deu certo, ainda não conseguimos o resultado esperado (e, de fato, não me parece a solução, já que só reduz a quantidade de níveis a descer). Estamos usando Plone 2.0.5 + Zope 2.7.7. Alguém pode ajudar? Alguém já precisou construir uma estrutura assim? Serve achar quem é o pai de quem ao invés de quem é filho de quem ;o) Experimente algo assim: :: result = context.cancun.portal.portal_catalog(portal_type=AnuncioBalada) for i in result: obj = i.getObject() caminho_genealogico = [] while obj: try: caminho_genealogico.append(obj.getId()) obj = obj.aq_parent except: break # pretty-print caminho_genealogico.reverse() for level,Id in enumerate(caminho_genealogico): print \t*level, Id break # descomente para testar só 1 iteração return printed Abração, Senra 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