[WIZARD] +manual member identification number attribution
[burette/cyclofficine_pantin.git] / res_partner.py
index f06e714..e221350 100644 (file)
@@ -33,4 +33,29 @@ class Partner(orm.Model):
 
     _order = 'member_ident,name asc'
 
+    def _check_member_ident_length(self, cr, uid, ids, context=None):
+        # Check if member ident length is equal to sequence padding.
+        sequences = self.pool.get('ir.sequence')
+        id_mb_seq = sequences.search(cr, uid,
+                                     [('name', '=', 'Member identifier')],
+                                     limit=1, context=context)
+        mb_sequences = sequences.browse(cr, uid, id_mb_seq, context=context)
+
+        partners = self.browse(cr, uid, ids, context=context)
+        for mb_seq in mb_sequences:
+            padding = mb_seq.padding
+
+        for partner in partners:
+            if partner.member_ident:
+                mb_ident_length = len(partner.member_ident)
+                if not mb_ident_length == padding:
+                    return False
+
+        return True
+
+    _constraints = [
+        (_check_member_ident_length,
+         'This member indentifier has not a good length.', ['member_ident']),
+    ]
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: