3 from openerp.osv import osv, fields
5 class ProjetMoeWizard(osv.TransientModel):
7 _name = "cmmi.projet.moe.wizard"
9 def default_get(self, cr, uid, fields, context=None):
10 ret = osv.TransientModel.default_get(self, cr, uid, fields, context=context)
11 project_id = context.get('project_id', False)
13 ret['project_id'] = project_id
16 def _moes_selection(self, cr, uid, context=None):
17 model_base = self.pool.get("cmmi.mo.moe")
18 model_proj = self.pool.get("cmmi.projet.moe")
20 if context is None or not context.has_key("project_id"):
23 # recherche des lien entre le projet et les moes
24 links_ids = model_proj.search(
27 [('project_id', '=', context["project_id"])],
31 # récupérations des moes déjà sélectionnés pour le projet
32 excluded_ids = list(set([r['moe_id'][0] for r in model_proj.read(
40 # recherche des moes autres que ceux déjà sélectionnés
41 moe_ids = model_base.search(
44 [('id', 'not in', excluded_ids)],
48 # renvoi des 2 uplets (id, name)
49 print [(r["id"], r["name"]) for r in model_base.read(
53 fields=["id", "name"],
56 return [(r["id"], r["name"]) for r in model_base.read(
60 fields=["id", "name"],
65 def action_add_moe_to_project(self, cr, uid, ids, context=None):
66 # Récupération du modèle utile pour écrire les données
67 model = self.pool.get("cmmi.projet.moe")
69 # Un wizard, donc un seul identifiant
72 # Récupération des informations mises dans l'assistant
73 result = self.read(cr, uid, id, context=context)
75 # Si on a coché principal, on vire principal des autres moes
83 [('project_id', '=', result["project_id"][0])],
90 # Création de la donnée à partir de la donnée du magicien
91 model.create(cr, uid, {
92 "main": result["main"],
93 "project_id": result["project_id"][0],
94 "moe_id": result["moe_id"],
97 # Fermer simplement la fenêtre
98 return {'type': 'ir.actions.act_window_close'}
100 #-----------------------------------------------------------------------
101 # # Renvoi vers la vue du modèle
103 # "type": 'ir.actions.act_window',
104 # "res_model": "cmmi.projet",
105 # 'view_type': 'form',
106 # 'view_mode': 'form',
107 # 'res_id': result["project_id"][0],
108 # 'context': context,
110 #-----------------------------------------------------------------------
113 "main": fields.boolean(string="MOE principale ?"),
114 "project_id": fields.many2one("cmmi.projet",
117 "moe_id": fields.selection(_moes_selection,