3 from openerp.osv import osv, fields
5 #TODO: A la place de modifier le contexte pour ajouter projet_id,
6 # Pourrait-on se fier à active_id ou active_ids ?
8 #TODO: Il faut que si l'on coche une autre case, le rafraichissement se fasse.
10 #TODO: erreur inexpliquée à corriger.
12 class ProjetDomaineWizard(osv.TransientModel):
14 _name = "cmmi.projet.domain.wizard"
16 def default_get(self, cr, uid, fields, context=None):
17 ret = osv.TransientModel.default_get(self, cr, uid, fields, context=context)
18 project_id = context.get('project_id', False)
20 ret['project_id'] = project_id
23 def _domaines_selection(self, cr, uid, context=None):
24 model_base = self.pool.get("cmmi.description.domaine")
25 model_proj = self.pool.get("cmmi.projet.domaine")
27 if context is None or not context.has_key("project_id"):
30 # recherche des lien entre le projet et les domaines
31 links_ids = model_proj.search(
34 [('project_id', '=', context["project_id"])],
38 # récupérations des domaines déjà sélectionnés pour le projet
39 excluded_ids = list(set([r['domaine_id'][0] for r in model_proj.read(
43 fields=["domaine_id"],
47 # recherche des domaines autres que ceux déjà sélectionnés
48 domaines_ids = model_base.search(
51 [('id', 'not in', excluded_ids)],
55 # renvoi des 2 uplets (id, name)
56 print [(r["id"], r["name"]) for r in model_base.read(
60 fields=["id", "name"],
63 return [(r["id"], r["name"]) for r in model_base.read(
67 fields=["id", "name"],
71 def action_add_domain_to_project(self, cr, uid, ids, context=None):
72 # Récupération du modèle utile pour écrire les données
73 model = self.pool.get("cmmi.projet.domaine")
75 # Un wizard, donc un seul identifiant
78 # Récupération des informations mises dans l'assistant
79 result = self.read(cr, uid, id, context=context)
81 # Si on a coché principal, on vire principal des autres domaines
89 [('project_id', '=', result["project_id"][0])],
96 # Création de la donnée à partir de la donnée du magicien
97 model.create(cr, uid, {
98 "main": result["main"],
99 "project_id": result["project_id"][0],
100 "domaine_id": result["domaine_id"],
103 # Fermer simplement la fenêtre
104 return {'type': 'ir.actions.act_window_close'}
106 #======================================================================
107 # # Renvoi vers la vue du modèle
109 # "type": 'ir.actions.act_window',
110 # "res_model": "cmmi.projet",
111 # 'view_type': 'form',
112 # 'view_mode': 'form',
113 # 'res_id': result["project_id"][0],
114 # #'target': 'new', = pop-up
115 # 'context': context,
117 #======================================================================
120 "main": fields.boolean(string="Domaine principal ?"),
121 "project_id": fields.many2one("cmmi.projet",
124 "domaine_id": fields.selection(_domaines_selection,