From 5ae2690dc377adbe1de9090aab7d4ffd33c3e42d Mon Sep 17 00:00:00 2001
From: Sebastien Robin <seb@nexedi.com>
Date: Mon, 19 Sep 2005 13:40:12 +0000
Subject: [PATCH] check that fields are editable before editing the cell

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@3800 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Form/MatrixBox.py | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/product/ERP5Form/MatrixBox.py b/product/ERP5Form/MatrixBox.py
index 36270de1c9..261770b01b 100755
--- a/product/ERP5Form/MatrixBox.py
+++ b/product/ERP5Form/MatrixBox.py
@@ -401,20 +401,21 @@ class MatrixBoxValidator(Validator.Validator):
                 my_field_id = '%s_%s' % (field.id, attribute_id)
                 if form.has_field(my_field_id):
                   my_field = form.get_field(my_field_id)
-                  key = 'field_' + my_field.id + '_cell_%s_%s_%s' % (i,j, k)
-                  attribute_value = my_field.get_value('default', cell = cell, cell_index = kw,
-                                                      cell_position = (i,j, k))
-                  value = my_field.validator.validate(my_field, key, REQUEST)
-
-                  if (attribute_value != value or attribute_value not in('',None,(),[])) \
-                     and not my_field.get_value('hidden'):
-                    # Only validate modified values from visible fields
-                    if not result.has_key(kw):
-                       result[kw] = {}
-                    result[kw][attribute_id] = value
-                  else:
-                    if result.has_key(kw):
+                  if my_field.get_value('editable'):
+                    key = 'field_' + my_field.id + '_cell_%s_%s_%s' % (i,j, k)
+                    attribute_value = my_field.get_value('default', cell = cell, cell_index = kw,
+                                                        cell_position = (i,j, k))
+                    value = my_field.validator.validate(my_field, key, REQUEST)
+
+                    if (attribute_value != value or attribute_value not in('',None,(),[])) \
+                       and not my_field.get_value('hidden'):
+                      # Only validate modified values from visible fields
+                      if not result.has_key(kw):
+                         result[kw] = {}
                       result[kw][attribute_id] = value
+                    else:
+                      if result.has_key(kw):
+                        result[kw][attribute_id] = value
               j += 1
             i += 1
           k += 1
-- 
2.30.9