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(