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

Responder a