Olá Diego,

2010/4/28 Diego Rubert <dprub...@prms.mpf.gov.br>

>
> Olá pessoal!
>
>  Estou escrevendo um produto, com um tipo chamado "Portaria". E algo
> assustador acontece quando eu redefino o campo description (também acontece
> com o title)
>
>  Adicionei alguns itens "Portaria" (cada um com uma descrição diferente), e
> quando fui olhar no site, a descrição estava igual à da pasta pai... E mais
> estranho ainda: usando o pdb, percebi que diferentes métodos retornam
> diferentes descrições:
>
>
> (Pdb) portaria_item.description
> 'minha descrição do item portaria'
>

Aqui você tá usando o attributo description direto, isso não é recomendado.


>
> (Pdb) portaria_item.Description()
> 'descricao da pasta pai'
>

Aqui você está usando o accessor do campo description original.


>
> (Pdb) portaria_item.getDescription()
> 'minha descrição do item portaria'
>

Aqui você está usando o accessor do campo description que você criou.


>
> Alguma idéia? Um pouco do código abaixo:
>
>
> content/portaria.py
>
>
> .
> .
> .
> PortariaSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((
>
>    atapi.TextField(
>        'description',
>        storage=atapi.AnnotationStorage(),
>        widget=atapi.TextAreaWidget(
>            label=_(u"Descri\xe7\xe3o"),
>            description=_(u"Resumo da portaria"),
>        ),
>        required=True,
>    ),
>

Aqui quando você faz:
schemata.ATContentTypeSchema.copy()

Você já copiou o campo description padrão dos tipos de conteúdos do
Archetype.

Depois você colocou mais um novo campo description no seu schema.

Ficando com 2 campos description no mesmo schema.

O accessor do Description do Archetype é o "Description()", já o que você
criou, por você não ter indicado o accessor, ele usou o padrão
getDescription.

A grande questão é: Porque você quer adicionar um campo description ? Só
para mudar o descrição do widget para "Resumo da portaria" ?

Você pode mudar isso assim:
PortariaSchema['description'].widget.description=_(u'Resumo da portaria')


> .
> ))
>
> PortariaSchema['description'].storage = atapi.AnnotationStorage()
>

Espero ter ajudado.

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

Responder a