+ def onchange_main(self, cr, uid, ids, project, moe, main, context=None):
+ if not main:
+ return {'value': {'main': True},
+ 'warning': {
+ 'title' : "Integrity Warning",
+ 'message' : "Une des MOE doit être la MOE principale",
+ }
+ }
+ ids = self.search(
+ cr,
+ uid,
+ [
+ ('project_id', '=', project),
+ ('moe_id', '!=', moe),
+ ],
+ context=context,
+ )
+ current_id = self.search(
+ cr,
+ uid,
+ [
+ ('project_id', '=', project),
+ ('moe_id', '=', moe),
+ ],
+ context=context,
+ )
+ self.write(cr, uid, ids, {'main': False}, context=context)
+ self.write(cr, uid, current_id, {'main': True}, context=context)
+
+ return {'value': {'main': True}}
+
+
+
+# =============================== PROJET MOA ================================ #
+class ProjetMoa(osv.Model):
+ _name = "cmmi.projet.moa"
+
+ _description = "Rattachement des MOAs a une projet."
+
+ 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.moa_id.name) for i, r in
+ zip(ids, self.browse(cr, uid, ids, context=context))])
+
+ _columns = {
+ "name": fields.function(_get_name,
+ type='char',
+ store=True,
+ string="Nom de la MOA"),
+ "main": fields.boolean(string="MOA principale ?"),
+ "project_id": fields.many2one("cmmi.projet",
+ string="Projet",
+ required=True),
+ "moa_id": fields.many2one("cmmi.mo.moa",
+ string="MOA",
+ required=True),
+ }