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],
}