+ def _get_name(self, cr, uid, ids, field_name=None, arg=None, context=None):
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ return dict([(i, r.phase_id.name) for i, r in
+ zip(ids, self.browse(cr, uid, ids, context=context))])
+
+
+ def _get_charge_init(self, cr, uid, ids, field, arg, context=None):
+ result = {}
+ for pp in self.browse(cr, uid, ids, context=context):
+ result[pp.id] = sum([p.charge_init for p in pp.phases])
+ return result
+
+
+ def _get_charge_plan(self, cr, uid, ids, field, arg, context=None):
+ result = {}
+ for pp in self.browse(cr, uid, ids, context=context):
+ result[pp.id] = sum([p.charge_plan for p in pp.phases])
+ return result
+
+
+ _columns = {
+ "name": fields.function(_get_name,
+ type='char',
+ store=True,
+ string="Nom de la phase"),
+ "phase_id": fields.many2one("cmmi.projet.phase",
+ string="Phase du projet"),
+ "palier_id": fields.many2one("cmmi.axes.palier",
+ string="Palier"),
+ "charge_init": fields.function(_get_charge_init,
+ type="integer",
+ string="Charge initiale"),
+ "charge_plan": fields.function(_get_charge_plan,
+ type="integer",
+ string="Charge plannifiée"),
+ # backrefs
+ "charges": fields.one2many("cmmi.evolution.charge",
+ "phase_id",
+ string="Charges"),
+ "phases": fields.one2many("cmmi.evolution.phase",
+ "phase_id",
+ string="Phases"),
+# "evolutions": fields.one2many("cmmi.evolution", #Supprimé !
+# "phase_id",
+# string="Evolutions"),
+ }
+
+ def create(self, cr, uid, vals, context=None):
+ # TODO: gérer la création d'une phase de palier.
+ # Vérifier les valeurs contenues dans vals et les modifier / rajouter si nécessaire selon les cas suivants
+
+ # Si description est vide, alors par défaut, recopie de la description du palier et de la phase (concaténés avec un retour à la ligne entre les deux).
+ # Si commentaire est vide, alors par défaut, recopie du commentaire du palier.
+ # Si version est vide, alors par dégaut, recopie de la version du palier.
+
+ return osv.Model.create(self, cr, uid, vals, context=context)
+
+
+# ================================ CHANTIER ================================= #
+class Chantier(osv.Model):
+ _name = "cmmi.axes.chantier"
+
+ _description = "Chantiers d'un projet."
+
+ _inherit = "cmmi.axes.mesurable"
+
+
+ def _get_charge_init(self, cr, uid, ids, field, arg, context=None):
+ result = {}
+ for chantier in self.browse(cr, uid, ids, context=context):
+ result[chantier.id] = sum([e.charge_init for e in chantier.evolutions])
+ return result
+
+
+ def _get_charge_plan(self, cr, uid, ids, field, arg, context=None):
+ result = {}
+ for chantier in self.browse(cr, uid, ids, context=context):
+ result[chantier.id] = sum([e.charge_plan for e in chantier.evolutions])
+ return result
+