J'ai les classe suivantes ci-dessous. Les actions prises individuellement 
fonctionnent, c'est à dire l'action1 CheckArbre(Wizard) fonctionne seule, 
l'action2 OpenCheckArbre(Wizard) fonctionne parfaitement, elle m'affiche 
bien un wizard avec la sélection. ce que je voudrais c'est lancer d'abord 
l'action2 puis au click sur le bouton *open* de l'action2 que l'action1 se 
lance. Dans la classe *OpenCheckArbre(Wizard)*  je mets bien* open_ = 
StateAction('cg.check_arbre')* mais j'obtiens une erreur qui me dit : 
"reference to check_arbre not found" ??? Une idée de mon erreur ?

class OpenCheckArbreStart(ModelView):
    'Open CheckArbre'
    __name__ = 'cg.check_arbre.open.start'

    typetravaux = fields.Selection(
            TRAVAUX,
            string=u'Travaux',
            help=u'Type de travaux',
            required=True,
            select=True,
            sort=False,
        )

class CheckArbreNoResult(ModelView):
    'Check Arbre'
    __name__ = 'cg.check_arbre.no_result'


class CheckArbreResult(ModelView):
    'Check Arbre'
    __name__ = 'cg.check_arbre.result'
    arbres_succeed = fields.Many2Many(
            'cg.arbre',
            None,
            None,
            string=u'Arbres - Première préconisation',
            readonly=True,
            states={'invisible': ~Eval('arbres_succeed')}
        )
    arbres_failed = fields.Many2Many(
            'cg.arbre',
            None,
            None,
            string=u'Arbres - Déjà préconisé',
            readonly=True,
            states={'invisible': ~Eval('arbres_failed')}
        )

*class OpenCheckArbre(Wizard):*
    'Open TaxonUicnPlace'
    __name__ = 'cg.check_arbre.open'

    start = StateView(
            'cg.check_arbre.open.start',
            'cg.check_arbre_open_start_view_form',
            [Button('Cancel', 'end', 'tryton-cancel'),
             Button('Open', 'open_', 'tryton-ok', default=True)]
        )
    *open_ = StateAction('cg.check_arbre')*

    def do_open_(self, action):
        action['pyson_context'] = PYSONEncoder().encode({'typetravaux': 
self.start.typetravaux})
        return action, {}

    def transition_open_(self):
        return 'end'

class CheckArbre(Wizard):
    'Check Arbre'
    __name__ = 'cg.check_arbre'
    start_state = 'check'

    check = StateTransition()

    result = StateView(
            'cg.check_arbre.result',
            'cg.check_arbre_result',
            [Button('Ok', 'end', 'tryton-ok', True)]
        )
    no_result = StateView(
            'cg.check_arbre.no_result',
            'cg.check_arbre_no_result',
            [Button('Ok', 'end', 'tryton-ok', True)]
        )

    @classmethod
    def __setup__(cls):
        super(CheckArbre, cls).__setup__()
        cls._error_messages.update({'arbre_unavailable': ('Arbre KO !')})

    def transition_check(self):
        Arbres = Pool().get('cg.arbre')

        if not Arbres:
            return 'no_result'

        arbres_succeed = []
        arbres_failed = []
        arbres = Arbres.browse(Transaction().context.get('active_ids'))
        for arbre in arbres:            
            try:
                if arbre.travaux:                    
                    arbres_failed.append(arbre.id)
                else:                    
                    arbres_succeed.append(arbre.id)
            except Exception, e:                
                raise            
        self.result.arbres_succeed = arbres_succeed
        self.result.arbres_failed = arbres_failed
        return 'result'

    def default_result(self, fields):
        return {
            'arbres_succeed': [p.id for p in self.result.arbres_succeed],
            'arbres_failed': [p.id for p in self.result.arbres_failed],
            }

Répondre à