Galera consegui fazer o MasterSelectWidget FUNCIONAR!!! EHAIUHEAIUHEAIUE.... so to com um pequeno probleminha....
Eu faço as atribuições de valores nos selections feitos com o MasterSelectWidget, blz ele salva e tudo bem! Mas quando entro para editar o MASTER pega o valor salvo mas o SLAVE não pega... o que pode ser ??? sera que definir o vocabulario errado?? ou tem algum parametro faltando no produto (Bug)... Estou passando o codigo que eu fiz, e se encontrarem alguma coisa estranha ou uma forma melhor para fazer, você me passam... *CODIGO:* StringField( name='vinculo', widget=MasterSelectWidget(label='Vínculo', description='Informe o vínculo do profissional com o MDS.', slave_fields = ({'name':'tp_vinc', 'action': 'vocabulary', 'vocab_method': 'getSlavesClassificacao', 'control_param': 'master'}, {'name': 'tp_vinc', 'action': 'hide', 'hide_values': (''), },) ), required=1, schemata="Vínculo", vocabulary='getVinculos', searchable=1, enforceVocabulary=1 ), StringField( name='tp_vinc', widget=SelectionWidget( label="Classificação", description="Informe a classificação do vínculo.", format="select", label_msgid='SGRH_label_tp_vinc', description_msgid='SGRH_help_tp_vinc', i18n_domain='SGRH', ), required=1, schemata="Vínculo", vocabulary='getClassificacao', searchable=1, enforceVocabulary=1 ), *Definições* def getVinculos(self): """Retorna a lista de vínculos.""" portal_sgrh = getToolByName(self, 'portal_sgrh') result = [["","Selecione um Vínculo"]] vocabulary = portal_sgrh.getVocab_vinculo() for item in vocabulary: idd = item.get('id') valor = item.get('valor') result.append([idd, valor]) return DisplayList(tuple(result)) security.declarePublic('getSlavesClassificacao') def getSlavesClassificacao(self,master): portal_sgrh = getToolByName(self, 'portal_sgrh') result = [["","Selecione uma Classificação"]] vocabulary = portal_sgrh.getVocab_classificacao() if master == "": pass for item in vocabulary: vinculo = item.get('vinculo') if master == vinculo: idd = item.get('id') valor = item.get('valor') result.append([idd, valor]) return DisplayList(tuple(result)) 2008/9/9 Felipe Toscano <[EMAIL PROTECTED]> > Cara to tentando impor um dependência assim: > > quando o cara selecionao valor "Terceirizado" no selection "VINCULO" quero > que no selection "CLASSIFICAÇÃO" ele utilize o vocabulário no > "getClassTerceirizado". > > Ou > > quando o cara seleciona o valor "Servidor" no selection "VINCULO" quero que > no selection "CLASSIFICAÇÃO" ele utilize o vocabulário no > "getClassServidor". > > > Eu fiz desta forma que encontrei de exemplo na net, mas o mesmo estava > incompleto... > > > *WIDGETS* > > StringField( > name='vinculo', > #widget=SelectionWidget( > #label="*Vínculo*", > #description="Informe o vínculo do profissional com o MDS.", > #format="select", > #label_msgid='SGRH_label_vinculo', > #description_msgid='SGRH_help_vinculo', > #i18n_domain='SGRH', > #), > widget=MasterSelectWidget(label='Vínculo', > description='Informe o vínculo do > profissional com o MDS.', > slave_fields = ({'name':'tp_vinc', > 'action': > 'vocabulary', > 'vocab_method': > 'getTypeClassificacao', > 'control_param': > 'master'},) > ), > required=1, > schemata="Vínculo", > vocabulary='getVinculos', > searchable=1, > enforceVocabulary=1 > ), > > StringField( > name='tp_vinc', > widget=SelectionWidget( > label="*Classificação*", > description="Informe a classificação do vínculo.", > format="select", > label_msgid='SGRH_label_tp_vinc', > description_msgid='SGRH_help_tp_vinc', > i18n_domain='SGRH', > ), > required=1, > schemata="Vínculo", > #vocabulary='getTypeClassificacao', > searchable=1, > enforceVocabulary=1 > ), > > > > *DEFINIÇÕES* > > > def getVinculos(self): > """ > """ > return DisplayList(( > ["", "Selecione um Vínculo"], > ["terceirizado", "Terceirizado"], > ["servidor", "Servidor"], > )) > > > def getClassTerceirizado(self): > """ > """ > return DisplayList(( > ["consultor", "Consultor"], > ["informatica", "Informática"], > )) > > def getClassServidor(self): > """ > """ > return DisplayList(( > ["pgpe", "PGPE"], > ["pss", "PSS"], > ["cedido", "Cedido"], > )) > > > security.declarePublic('getTypeClassificacao') > def getTypeClassificacao(self,master): > """ > """ > if (master in ('terceirizado')): vocab = getClassTerceirizado > if (master in ('servidor')): vocab = getClassServidor > return vocab > > > > > > > > > > > 2008/9/9 Davi Medeiros <[EMAIL PROTECTED]> > > Infelizmente não tenho à mão. Veja se acha no Google ou coloca aqui a >> parte do código onde você tá emperrando (copie o código do demo e vá >> modificando). >> >> Abraço, >> Davi >> >> >> --- Em zope-pt@yahoogrupos.com.br <zope-pt%40yahoogrupos.com.br>, "Felipe >> Toscano" >> <[EMAIL PROTECTED]> escreveu >> > >> > Ja olhei a documentação, mas ainda não consegui aplicar no meu >> produto, se >> > você tiver mais alguns exemplos alem do demo que você ja tenha >> aplicado em >> > algum produto, poooo vai me ajudar pra caramba... você tem ??? >> > >> > 2008/9/9 Davi Medeiros <[EMAIL PROTECTED]> >> > >> > > Felipe, a documentação que acompanha o produto é muito boa, >> inclusive >> > > vem com um Demo, que cairá como uma luva para sua necessidade. >> > > >> > > []s >> > > Davi Lima >> > > >> > > --- Em zope-pt@yahoogrupos.com.br <zope-pt%40yahoogrupos.com.br><zope-pt% >> 40yahoogrupos.com.br>, >> "Felipe >> > > Toscano" >> > > <felipe.toscano@> escreveu >> > > >> > > > >> > > > Fala ae pessoal, >> > > > >> > > > Estou fazendo um produto de Rh, e gostaria de impor uma >> dependência nas >> > > > widget de selection. Pesquisei na net e vi que este produto >> > > > (MasterSelectWidget) faz esta necessidade, porem não entendi como >> > > aplica-lo. >> > > > >> > > > Gostaria de fazer com que um selection "Vinculo" que tem como opções >> > > > "terceirizado" e "servidor", quando selecionado a opção >> "terceirizado" o >> > > > outro selection que vem logo abaixo traga o vocabulario referente as >> > > > classificações de "terceirizado" ou se eu selecionar "servidor", no >> > > > selection abaixo traga so o vocabulario referente a classificação de >> > > > servidor. >> > > > >> > > > Alguem ja utilizou este produto??? >> > > > >> > > > Poderia me passar algum codigo de exemplo ?? >> > > > >> > > > Att.. >> > > > >> > > > Felipe Toscano >> > > > >> > > >> > > >> > > >> > >> > >> > >> > -- >> > Felipe Toscano >> > >> >> >> > > > > -- > Felipe Toscano > -- Felipe Toscano