Re: [zope-pt] Re: ArgoUML/ArchegenXML

2009-07-24 Por tôpico Rodrigo Castardo
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.brzope-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.brzope-pt%
 40yahoogrupos.com.brzope-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 

Re: [zope-pt] Re: ArgoUML/ArchegenXML

2009-07-22 Por tôpico Rodrigo Castardo
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 henri...@pgr.mpf.gov.br



 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, Rodrigo
 Castardo rodrigocasta...@... 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 henri...@...
 
  
  
   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.brzope-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 

Re: [zope-pt] Re: ArgoUML/ArchegenXML

2009-07-22 Por tôpico Rodrigo Castardo
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...@pgr.mpf.gov.br



 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, Rodrigo
 Castardo rodrigocasta...@... 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 henri...@...
 
  
  
   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.brzope-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.brzope-pt%
 40yahoogrupos.com.brzope-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 = {
  

Re: [zope-pt] Re: ArgoUML/ArchegenXML

2009-07-21 Por tôpico Rodrigo Castardo
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 henri...@pgr.mpf.gov.br



 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, Rodrigo
 Castardo rodrigocasta...@... 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 henri...@...
 
  
  
   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
  rodrigocasta...@...
  +55 61 9123-7847
  +55 61 3468-2662
 

  




-- 



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