Fala Roberson,
o mutator é o método que atualiza a informação do Field, se você usar o
mutator o valor será mantido sempre o mesmo, porém como o usuário pode
digitar no campo ele vai ficar correndo atrás do rabo, digitando uma coisa e
vendo outra na view do objeto (o mutator vai sobrescrever o que o usuário
digitar).

O defalut_method vai simplesmente fazer o que o Carlos precisa, já preencher
o campo com algum valor, imagino que para facilitar a vida do usuário.

Um abraço.

2009/7/24 roberson.duarte <roberson.dua...@yahoo.com.br>

>
>
> Rodrigo ,
>
> eu conseguiria fazer isso usando o mutator? E implementando o metodo na
> classe.py ? Ou a tagged value default seria a melhor saída ?
>
> []´s
>
> --- Em zope-pt@yahoogrupos.com.br <zope-pt%40yahoogrupos.com.br>, Rodrigo
> Castardo <rodrigocasta...@...> escreveu
> >
> > Carlos,
> > lembro de um filme onde a mãe do protagonista falava q td era o diabo, e
> > script python aqui pra nós eh o diabo =)
> >
> > São várias checagens de segurança que entram em ação quando você usa um
> > desses scripts, e isto deixa o acesso lento.
> >
> > Como estamos falando de classe, vamos usar um método! Em outros casos
> > poderíamos usar uma view em zope 3.
> >
> > E no caso, ao invés da propriedade default, você pode usar o
> default_method
> > ... e pendurar um método na classe que implementa este tipo.
> >
> > Olha a definição da classe Field que você entende, ou então olhe a classe
> > que implementa o evento padrão do Plone (fica dentro do
> > ATContentTypes/content).
> >
> > Abraços.
> >
> > 2009/7/22 chgcj <henri...@...>
> >
> > >
> > >
> > > acho que estamos nos entendendo...
> > > mas como faço para que no atributo default='o valor que vai preencher o
> > > campo na leitura do formulario de criacao do objeto' seja mostrado o
> > > resultado de um script.
> > > Algo do tipo...
> > > StringField(
> > > name='url_video',
> > > default='context.montaUrl()',
> > > Widget=StringWidget(
> > > ...
> > > )
> > > )
> > >
> > > onde montaUrl seria um script python do tipo
> > > url='http://midia.pgr.mpf.gov.br/radio/programas/questaojustica/qj
> > > '+ano_atual
> > > return url
> > >
> > >
> > > --- Em zope-pt@yahoogrupos.com.br <zope-pt%40yahoogrupos.com.br><zope-pt%
> 40yahoogrupos.com.br>, Rodrigo
> > > Castardo <rodrigocastardo@> escreveu
> > > >
> > > > Carlos,
> > > > então é a primeira coisa que sugeri, imagino que não ficou claro para
> > > você.
> > > >
> > > > Vamos por partes, olhe novamente as referências que mandei.
> > > >
> > > > Eu não costumo pendurar todas as características no modelo UML, ele
> não
> > > tem
> > > > suporte a algumas questões e lá na frente você vai precisar fazer
> alguma
> > > > coisa na mão e vai perder o sincrinismo inicial entre code e modelo.
> > > >
> > > > O teu field fica algo assim:
> > > >
> > > > StringField(
> > > > name='url_video',
> > > > default='o valor que vai preencher o campo na leitura do formulario
> de
> > > > criacao do objeto',
> > > > Widget=StringWidget(
> > > > ...
> > > > )
> > > > )
> > > >
> > > > Tenta por ai, veja se resolve teu problema.
> > > >
> > > > Um abraço.
> > > >
> > > > 2009/7/22 chgcj <HENRIQUE@>
> > > >
> > > > >
> > > > >
> > > > > Vamos lá... vou tentar explicar.
> > > > > No ArgoUML criei uma classe com o nome QuestaoJustica que é um
> programa
> > > de
> > > > > rádio que temos aqui na PGR.
> > > > > Essa classe têm os atributos resumo, descricao e urlAudio. Os
> atributos
> > > > > resumo e descricao estão ok. No atributo urlAudio gostaria que
> quando o
> > > > > usuário fosse inserir uma instancia do objeto QuestaoJustica já
> viesse
> > > > > previamente preenchido com um endereço de uma url padrão da PGR,
> como
> > > por
> > > > > exemplo
> > > > >
> > >
> http://midia.pgr.mpf.gov.br/radio/programas/questaojustica/qj2009/julho/programaDia22.mp3queé
> o audio do Programa Questão de Justiça do dia 22 de julho de 2009.
> > > > > Gostaria simplesmente de montar essa url dinamicamente para que o
> > > usuário
> > > > > não precise digitar o caminho todo. Além disso o campo deve ser
> > > editável, ou
> > > > > seja, deve aparecer previamente preenchido com o caminho sugerido
> mas
> > > deve
> > > > > ser possível a edição deste campo.
> > > > > Agora ficou claro ????
> > > > > Estou usando ARGOUML e ARCHEGENXML para gerar esse produto.
> > > > >
> > > > > mais uma vez obrigado...
> > > > >
> > > > > Carlos henrique
> > > > >
> > > > > --- Em zope-pt@yahoogrupos.com.br 
> > > > > <zope-pt%40yahoogrupos.com.br><zope-pt%
> 40yahoogrupos.com.br><zope-pt%
>
> > > 40yahoogrupos.com.br>, Rodrigo
> > > > > Castardo <rodrigocastardo@> escreveu
> > > > > >
> > > > > > Fala Carlos,
> > > > > > bom entendi errado, pensei que fosse um novo content type.
> > > > > >
> > > > > > Na realidade não entendi ainda, mas vamos lá ... se você criou o
> > > objeto
> > > > > via
> > > > > > API Plone, você pode instanciar o objeto após a criação e editar,
> por
> > > > > > exemplo:
> > > > > >
> > > > > > context.invokeFactory('Seu Tipo',
> > > > > > id=uniq_id,
> > > > > > title=title,)
> > > > > >
> > > > > > context[uniq_id].edit(remoteUrl='http://www.pgr.mpf.gov.br')
> > > > > >
> > > > > > Onde uniq_id é o id que você utilizou para criar seu objeto.
> > > > > >
> > > > > > Agora se eu não entendi novamente, então explica melhor ;)
> > > > > >
> > > > > > Abraços.
> > > > > >
> > > > > > 2009/7/21 chgcj <HENRIQUE@>
> > > > > >
> > > > > > >
> > > > > > >
> > > > > > > valeu Rodrigo...
> > > > > > > mas o que estou querendo fazer é simplesmente preencher um
> > > determinado
> > > > > > > campo de um tipo que criei com o resultado de script python.
> Como
> > > devo
> > > > > > > proceder para fazer isso ???
> > > > > > >
> > > > > > > desde já obrigado,
> > > > > > > Carlos Henrique
> > > > > > >
> > > > > > > --- Em 
> > > > > > > zope-pt@yahoogrupos.com.br<zope-pt%40yahoogrupos.com.br><zope-pt%
> 40yahoogrupos.com.br><zope-pt%
> > > 40yahoogrupos.com.br><zope-pt%
> > >
> > > > > 40yahoogrupos.com.br>, Rodrigo
> > > > >
> > > > > > > Castardo <rodrigocastardo@> escreveu
> > > > > > >
> > > > > > > >
> > > > > > > > Fala Carlos,
> > > > > > > > no ArcheTypes você pode setar com o default (valor padrão) ou
> o
> > > > > > > > default_method (método que retorna o valor padrão), depende
> do
> > > caso.
> > > > > > > >
> > > > > > > > Dê uma olhada em: ArcheTypes/Field.py (é onde são definidos
> os
> > > fields
> > > > > que
> > > > > > > > podem ser usados).
> > > > > > > >
> > > > > > > > Lá você vai encontrar esse trecho de código:
> > > > > > > >
> > > > > > > > class Field(DefaultLayerContainer):
> > > > > > > > """
> > > > > > > > Extend `DefaultLayerContainer`.
> > > > > > > > Implements `IField` and `ILayerContainer` interfaces.
> > > > > > > > Class security = public with default access = allow.
> > > > > > > > Class attribute _properties is a dictionary containing all of
> a
> > > > > > > > field's property values.
> > > > > > > > """
> > > > > > > >
> > > > > > > > __implements__ = IField, ILayerContainer
> > > > > > > >
> > > > > > > > security = ClassSecurityInfo()
> > > > > > > >
> > > > > > > > _properties = {
> > > > > > > > 'old_field_name':None,
> > > > > > > > 'required' : False,
> > > > > > > > 'default' : None,
> > > > > > > > 'default_method' : None,
> > > > > > > > 'vocabulary' : (),
> > > > > > > > 'vocabulary_factory' : None,
> > > > > > > > 'enforceVocabulary' : False,
> > > > > > > > 'multiValued' : False,
> > > > > > > > 'searchable' : False,
> > > > > > > > 'isMetadata' : False,
> > > > > > > >
> > > > > > > > 'accessor' : None,
> > > > > > > > 'edit_accessor' : None,
> > > > > > > > 'mutator' : None,
> > > > > > > > 'mode' : 'rw',
> > > > > > > >
> > > > > > > > 'read_permission' : permissions.View,
> > > > > > > > 'write_permission' : permissions.ModifyPortalContent,
> > > > > > > >
> > > > > > > > 'storage' : AttributeStorage(),
> > > > > > > >
> > > > > > > > 'generateMode' : 'veVc',
> > > > > > > > 'force' : '',
> > > > > > > > 'type' : None,
> > > > > > > > 'widget': StringWidget,
> > > > > > > > 'validators' : (),
> > > > > > > > 'index' : None, # "KeywordIndex" or "<index_type>:schema"
> > > > > > > > 'index_method' : '_at_accessor', # method used for the index
> > > > > > > > # _at_accessor an _at_edit_accessor
> > > > > > > > # are the accessor and edit
> > > > > > > > accessor
> > > > > > > > 'schemata' : 'default',
> > > > > > > > 'languageIndependent' : False,
> > > > > > > > }
> > > > > > > >
> > > > > > > > E no ATContentTypes/content você encontra a classe que
> implementa
> > > o
> > > > > > > evento
> > > > > > > > do Plone, ele por exemplo seta a data de início (pelo
> > > > > default_method).
> > > > > > > >
> > > > > > > > Como pelo que pude entender você criou um novo tipo, pode
> > > pendurar o
> > > > > > > método
> > > > > > > > neste tipo e chamar no default_method.
> > > > > > > >
> > > > > > > > Bom, dá uma olhada nisso, vai te ajudar.
> > > > > > > >
> > > > > > > > Boa sorte, um abraço.
> > > > > > > >
> > > > > > > > 2009/7/17 chgcj <HENRIQUE@>
> > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Pessoal,
> > > > > > > > > preciso coocar em um campo text o resultado de um script
> > > python.
> > > > > > > Coloquei
> > > > > > > > > no ARGOUML, em Valores Marcados (Tagged Values) o campo
> > > expression
> > > > > com
> > > > > > > o
> > > > > > > > > valor context.montaURL(). Aí criei um script python no zope
> > > dando
> > > > > um
> > > > > > > return
> > > > > > > > > 'teste' mas não funcionou.
> > > > > > > > >
> > > > > > > > > Alguém sabe como faze isso.
> > > > > > > > > Desde já obrigado.
> > > > > > > > >
> > > > > > > > > Carlos Henrique
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > Rodrigo Castardo
> > > > > > > > Liberiun
> > > > > > > > COO
> > > > > > > > rodrigocastardo@
> > > > > > > > +55 61 9123-7847
> > > > > > > > +55 61 3468-2662
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Rodrigo Castardo
> > > > > > Liberiun
> > > > > > COO
> > > > > > rodrigocastardo@
> > > > > > +55 61 9123-7847
> > > > > > +55 61 3468-2662
> > > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > >
> > > >
> > > >
> > > > --
> > > > Rodrigo Castardo
> > > > Liberiun
> > > > COO
> > > > rodrigocastardo@
> > > > +55 61 9123-7847
> > > > +55 61 3468-2662
> > > >
> > >
> > >
> > >
> >
> >
> >
> > --
> >
> >
> >
> > --
> > Rodrigo Castardo
> > Liberiun
> > COO
> > rodrigocasta...@...
> > +55 61 9123-7847
> > +55 61 3468-2662
> >
>
>  
>



-- 



-- 
Rodrigo Castardo
Liberiun
COO
rodrigocasta...@liberiun.com
+55 61 9123-7847
+55 61 3468-2662

Responder a