[zope-pt] Re: ordenar objetos dentro de um Folder

2008-01-11 Por tôpico Dorneles Treméa
Opa Walter,

 Há uns meses atrás, eu migrei as noticias de um mambo para o plone.
 
 Ontem, migrei o resto das notícias.
 
 Porém, a ordenação delas ficou errada dentro da pasta.
 
 Dá pra arrastar e soltar, mas isso é contraproducente.
 
 Tem alguma API do zope pra reordenar o conteúdo da pasta, baseado nos
 atributos dos objetos dentro dela?

tem sim, desde que implemente a interface IAutoSortSupport, que
é o que o Folder padrão do Plone faz. Confere a API da coisa:

http://dev.plone.org/collective/browser/ATContentTypes/trunk/lib/autosort.py#L41

Se quiseres ordenar manualmente, mas por código, confere:

http://dev.plone.org/archetypes/browser/Archetypes/branches/1.5/interfaces/_orderedfolder.py#L36

HTH,

-- 

Dorneles Treméa
X3ng Web Technology
http://nosleepforyou.blogspot.com



Re: [zope-pt] Re: ordenar objetos dentro de um Folder

2008-01-11 Por tôpico Walter Cruz
cidades é o nome do portal

Dentro da pasta destaques, tenho tres noticias.. ,
BB e CC

a ordem que eu coloquei na interface do Plone é: BCA, que é como mostra.

Dentro do zopectl debug:

 import transaction
 from AccessControl.SecurityManagement import newSecurityManager
 t = transaction.get()
 portal = app.cidades
 admin= app.acl_users.getUser('admin').__of__(app.acl_users)
 newSecurityManager(None, admin)
 portal['ministerio-das-cidades']['destaques'].getSortAuto()
True
 portal['ministerio-das-cidades']['destaques'].setDefaultSorting('Title',True)
 t.commit()


Mas ao acessar a pasta, continua a ordem B,C,A

[]'s
- Walter


[zope-pt] Re: ordenar objetos dentro de um Folder

2008-01-11 Por tôpico Dorneles Treméa
Opa Walter,

 Segui o procedimento: zopectl debug
 
 lá dentro, alkgo do tipo: pasta.setDefaultSorting('atributo')
 
 Mas não é ordenado ainda na visualização.
 
 Precisa reindexar ou algo a mais?

3 perguntas:

- qual o nome do atributo que passaste para o setDefaultSorting?

- verificaste com o pasta.getSortAuto() para ver se o autosort
  está ativo (e caso não estiver: pasta.setSortAuto(True))

- por acaso não esqueceste de comitar a transação pelo zopectl
  debug (import transaction; transaction.commit())? :-)

HTH,

-- 

Dorneles Treméa
X3ng Web Technology
http://nosleepforyou.blogspot.com



Re: [zope-pt] Re: ordenar objetos dentro de um Folder

2008-01-11 Por tôpico Walter Cruz
Valeu Dornéles e Wesley!

O conteúdo é um Folder padrão do plone mesmo.

Segui o procedimento: zopectl debug

lá dentro, alkgo do tipo: pasta.setDefaultSorting('atributo')

Mas não é ordenado ainda na visualização.

Precisa reindexar ou algo a mais?

[]'s
- Walter

2008/1/11 Dorneles Treméa [EMAIL PROTECTED]:






 Opa Walter,



   Há uns meses atrás, eu migrei as noticias de um mambo para o plone.
  
   Ontem, migrei o resto das notícias.
  
   Porém, a ordenação delas ficou errada dentro da pasta.
  
   Dá pra arrastar e soltar, mas isso é contraproducente.
  
   Tem alguma API do zope pra reordenar o conteúdo da pasta, baseado nos
   atributos dos objetos dentro dela?

  tem sim, desde que implemente a interface IAutoSortSupport, que
  é o que o Folder padrão do Plone faz. Confere a API da coisa:


 http://dev.plone.org/collective/browser/ATContentTypes/trunk/lib/autosort.py#L41

  Se quiseres ordenar manualmente, mas por código, confere:


 http://dev.plone.org/archetypes/browser/Archetypes/branches/1.5/interfaces/_orderedfolder.py#L36

  HTH,

  --

  Dorneles Treméa
  X3ng Web Technology
  http://nosleepforyou.blogspot.com

  


Re: [zope-pt] Re: ordenar objetos dentro de um Folder

2008-01-11 Por tôpico Walter Cruz
Isso é apenas um passo.. quero ordenar pelo atributo data_noticia
(temos um tipo de Noticia que estende o News padrão)

[]'s
- Walter

On Jan 11, 2008 2:54 PM, Walter Cruz [EMAIL PROTECTED] wrote:
 cidades é o nome do portal

 Dentro da pasta destaques, tenho tres noticias.. ,
 BB e CC

 a ordem que eu coloquei na interface do Plone é: BCA, que é como mostra.

 Dentro do zopectl debug:

  import transaction
  from AccessControl.SecurityManagement import newSecurityManager
  t = transaction.get()
  portal = app.cidades
  admin= app.acl_users.getUser('admin').__of__(app.acl_users)
  newSecurityManager(None, admin)
  portal['ministerio-das-cidades']['destaques'].getSortAuto()
 True
  portal['ministerio-das-cidades']['destaques'].setDefaultSorting('Title',True)
  t.commit()


 Mas ao acessar a pasta, continua a ordem B,C,A

 []'s
 - Walter



[zope-pt] Re: ordenar objetos dentro de um Folder

2008-01-11 Por tôpico Dorneles Treméa
Opa Walter,

  import transaction
  from AccessControl.SecurityManagement import newSecurityManager
  t = transaction.get()
  portal = app.cidades
  admin= app.acl_users.getUser('admin').__of__(app.acl_users)
  newSecurityManager(None, admin)
  portal['ministerio-das-cidades']['destaques'].getSortAuto()
 True
 
 portal['ministerio-das-cidades']['destaques'].setDefaultSorting('Title',True)
  t.commit()
 
 Mas ao acessar a pasta, continua a ordem B,C,A

pelo que eu percebi, aparentemente em algum lugar do Plone está
faltando uma chamada ao método autoOrderItems:

http://dev.plone.org/collective/browser/ATContentTypes/trunk/lib/autosort.py#L113

E mesmo se você chamar manualmente ele dentro do zopectl debug,
a pasta ainda não ficará ordenada, pois esse método não está
atualizando o cátalogo, você teria que fazer isso também...

Resumindo: aparentemente ninguém usou esse recurso até hoje... :-)

Eu diria que para isso funcionar como o esperado, ao adicionar
novos items na pasta o autoOrderItems deveria ser chamado, e
ele deveria atualizar o catálogo. Pesquisando um pouco achei
esse ticket:

http://dev.plone.org/plone/ticket/5262

É algo relativamente simples de ser feito... :-)

-- 

Dorneles Treméa
X3ng Web Technology
http://nosleepforyou.blogspot.com