[Checkins] SVN: z3c.form/branches/adamg-objectwidget/src/z3c/form/ slight refactors

Adam Groszer agroszer at gmail.com
Tue Oct 28 04:20:46 EDT 2008


Log message for revision 92652:
  slight refactors
  

Changed:
  U   z3c.form/branches/adamg-objectwidget/src/z3c/form/browser/object.txt
  U   z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py

-=-
Modified: z3c.form/branches/adamg-objectwidget/src/z3c/form/browser/object.txt
===================================================================
--- z3c.form/branches/adamg-objectwidget/src/z3c/form/browser/object.txt	2008-10-28 05:35:23 UTC (rev 92651)
+++ z3c.form/branches/adamg-objectwidget/src/z3c/form/browser/object.txt	2008-10-28 08:20:44 UTC (rev 92652)
@@ -69,7 +69,7 @@
   >>> widget.update()
   Traceback (most recent call last):
   ...
-  AttributeError: 'NoneType' object has no attribute 'schema'
+  ValueError: <ObjectWidget 'widget.name'> .field is None, that's a blocking point
 
 This schema is specified by the field:
 

Modified: z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py
===================================================================
--- z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py	2008-10-28 05:35:23 UTC (rev 92651)
+++ z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py	2008-10-28 08:20:44 UTC (rev 92652)
@@ -65,9 +65,12 @@
                 view.update()
                 widget.error = view
 
-    def update(self, ignoreContext=None, setErrors=True):
+    def setupFields(self):
         self.fields = Fields(self.__parent__.field.schema)
 
+    def update(self, ignoreContext=None, setErrors=True):
+        if self.__parent__.field is None:
+            raise ValueError("%r .field is None, that's a blocking point" % self.__parent__)
         #update stuff from parent to be sure
         self.mode = self.__parent__.mode
         if ignoreContext is not None:
@@ -85,6 +88,8 @@
 
         self.prefix = prefix+self.__parent__.field.__name__
 
+        self.setupFields()
+
         super(ObjectSubForm, self).update()
 
         if setErrors:
@@ -142,7 +147,10 @@
         else:
             dm = zope.component.getMultiAdapter(
                 (self.widget.context, self.field), interfaces.IDataManager)
-            obj = dm.get()
+            try:
+                obj = dm.get()
+            except KeyError:
+                obj = self.createObject(value)
 
         obj = self.field.schema(obj)
 
@@ -181,9 +189,6 @@
     _updating = False
 
     def _getForm(self, content):
-        #self.subform = ObjectSubForm(content, self)
-        #from pub.dbgpclient import brk; brk('192.168.32.1')
-
         form = getattr(self, 'form', None)
         self.subform = zope.component.getMultiAdapter(
             (content, self.request,



More information about the Checkins mailing list