File Formulator-1.6.1-editable-xml.patch of Package erp5-Formulator

diff -ru erp5-Formulator-1.6.1/Formulator/Field.py erp5-Formulator-1.6.1.final/Formulator/Field.py
--- erp5-Formulator-1.6.1/Formulator/Field.py 2004-01-21 17:06:17.000000000 +0100
+++ erp5-Formulator-1.6.1.final/Formulator/Field.py 2004-01-22 16:22:21.000000000 +0100
@@ -177,12 +177,14 @@
                 return getattr(self.validator, name)
             else:
                 return "Unknown error: %s" % name
-    
+
     security.declarePrivate('_render_helper')
     def _render_helper(self, key, value, REQUEST):
         value = self._get_default(key, value, REQUEST)
         if self.get_value('hidden'):
             return self.widget.render_hidden(self, key, value, REQUEST)
+        elif (not self.get_value('editable')):
+            return self.widget.render_view(self, value)
         else:
             return self.widget.render(self, key, value, REQUEST)
 
diff -ru erp5-Formulator-1.6.1/Formulator/Form.py erp5-Formulator-1.6.1.final/Formulator/Form.py
--- erp5-Formulator-1.6.1/Formulator/Form.py  2004-01-21 17:06:17.000000000 +0100
+++ erp5-Formulator-1.6.1.final/Formulator/Form.py  2004-01-22 16:22:21.000000000 +0100
@@ -20,6 +20,8 @@
 from FormToXML import formToXML
 from XMLToForm import XMLToForm
 
+from ComputedAttribute import ComputedAttribute
+
 # FIXME: manage_renameObject hack needs these imports
 from Acquisition import aq_base
 from App.Dialogs import MessageDialog
@@ -469,16 +471,15 @@
         """change form according to xml"""
         XMLToForm(xml, self, override_encoding)
 
-    security.declareProtected('Access contents information',
-                              'management_page_charset')
-    def management_page_charset(self):
-        """manage_before_header calls this to determine management
-        screen encodings.
-        """
+    def _management_page_charset(self):
         if not self.unicode_mode:
             return self.stored_encoding
         else:
             return 'UTF-8'
+
+    security.declareProtected('Access contents information',
+                              'management_page_charset')
+    management_page_charset = ComputedAttribute(_management_page_charset)
         
     security.declareProtected('View', 'set_encoding_header')
     def set_encoding_header(self):
diff -ru erp5-Formulator-1.6.1/Formulator/FormToXML.py erp5-Formulator-1.6.1.final/Formulator/FormToXML.py
--- erp5-Formulator-1.6.1/Formulator/FormToXML.py 2004-01-21 17:06:17.000000000 +0100
+++ erp5-Formulator-1.6.1.final/Formulator/FormToXML.py 2004-01-22 16:29:27.000000000 +0100
@@ -41,9 +41,16 @@
             for key, value in items:
                 if value is None:
                     continue
-                if type(value) == type(1.1):
+                if value==True: # XXX Patch
+                    value = 1 # XXX Patch
+                if value==False: # XXX Patch
+                    value = 0 # XXX Patch
+                if callable(value): # XXX Patch
+                    write('          <%s type="method">%s</%s>\n' % # XXX Patch
+                        (key, escape(str(value.method_name)), key)) # XXX Patch
+                elif type(value) == type(1.1):
                     write('          <%s type="float">%s</%s>\n' % (key, escape(str(value)), key))
-                if type(value) == type(1):
+                elif type(value) == type(1):
                     write('          <%s type="int">%s</%s>\n' % (key, escape(str(value)), key))
                 elif type(value) == type([]):
                     write('          <%s type="list">%s</%s>\n' % (key, escape(str(value)), key))
diff -ru erp5-Formulator-1.6.1/Formulator/Validator.py erp5-Formulator-1.6.1.final/Formulator/Validator.py
--- erp5-Formulator-1.6.1/Formulator/Validator.py 2004-01-21 17:06:17.000000000 +0100
+++ erp5-Formulator-1.6.1.final/Formulator/Validator.py 2004-01-22 16:22:21.000000000 +0100
@@ -10,7 +10,7 @@
 class ValidatorBase:
     """Even more minimalistic base class for validators.
     """
-    property_names = ['enabled']
+    property_names = ['enabled','editable']
 
     message_names = []
 
@@ -24,10 +24,18 @@
         "get a validation error as a field suddenly got enabled that "
         "wasn't there when the form was drawn."),
                                    default=1)
-    
+
+    editable = fields.CheckBoxField('editable',
+                                   title="Editable",
+                                   description=(
+        "If a field is not editable, then the user can only see"
+        "the value. This allows to drawn very different forms depending"
+        "on use permissions."),
+                                   default=1)
+
     def raise_error(self, error_key, field):
         raise ValidationError(error_key, field)
-    
+
     def validate(self, field, key, REQUEST):    
         pass # override in subclass
 
diff -ru erp5-Formulator-1.6.1/Formulator/XMLToForm.py erp5-Formulator-1.6.1.final/Formulator/XMLToForm.py
--- erp5-Formulator-1.6.1/Formulator/XMLToForm.py 2004-01-21 17:06:17.000000000 +0100
+++ erp5-Formulator-1.6.1.final/Formulator/XMLToForm.py 2004-01-22 16:22:21.000000000 +0100
@@ -1,5 +1,6 @@
 import XMLObjects
 from Products.Formulator.TALESField import TALESMethod
+from Products.Formulator.MethodField import Method
 
 def XMLToForm(s, form, override_encoding=None):
     """Takes an xml string and changes formulator form accordingly.
@@ -80,6 +81,8 @@
                     field.values[name] = float(value.text)
                 elif value.attributes.get('type') == 'int':
                     field.values[name] = int(value.text)
+                elif value.attributes.get('type') == 'method': # XXX Patch
+                    field.values[name] = Method(value.text) # XXX Patch
                 elif value.attributes.get('type') == 'list':
                     # XXX bare eval here (this may be a security leak ?)
                     field.values[name] = eval(
openSUSE Build Service is sponsored by