[Checkins] SVN: z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py Added some open questions as XXX comments.
Roger Ineichen
roger at projekt01.ch
Wed Oct 8 19:47:30 EDT 2008
Log message for revision 91912:
Added some open questions as XXX comments.
I'm not sure if I'm correct. It seems to me
an existing object get replaced with a new one.
But I could be wrong.
Changed:
U z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py
-=-
Modified: z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py
===================================================================
--- z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py 2008-10-08 17:38:28 UTC (rev 91911)
+++ z3c.form/branches/adamg-objectwidget/src/z3c/form/object.py 2008-10-08 23:47:28 UTC (rev 91912)
@@ -66,6 +66,12 @@
self.mode = self.parentWidget.mode
self.ignoreContext = self.parentWidget.ignoreContext
self.ignoreRequest = self.parentWidget.ignoreRequest
+
+# XXX: I recommend to use the existing parent prefix as prefix for the new prefix
+
+# prefix = util.expandPrefix(self.__parent__.prefix)
+# self.prefix = prefix + util.expandPrefix(
+# self.parentWidget.field.__name__)
self.prefix = self.parentWidget.field.__name__
if interfaces.IFormAware.providedBy(self.parentWidget):
@@ -84,6 +90,7 @@
factory = None
+# XXX: was x a debug hook?
def _fields(self):
x = zope.schema.getFields(self.field.schema)
return x
@@ -98,6 +105,11 @@
def createObject(self, value):
#keep value passed, maybe some subclasses want it
+# XXX: Are I'm correct the value is already an object?
+# if so, should we return the value?
+# if self.field.schema.providedBy(value):
+# return value
+
if self.factory is None:
name = self.field.schema.__module__+'.'+self.field.schema.__name__
adapter = zope.component.queryMultiAdapter(
@@ -125,6 +137,18 @@
if value[1]:
raise MultipleErrors(value[1])
+# XXX: check if this allways returns a new object instance. If so we need to
+# ensure that the existing instance doesn't get replaced. Because an existing
+# instance could provide some reference to other things we whould loose.
+
+# probably we should do:
+# if self.field.schema.providedBy(value):
+# obj = value
+# else:
+# obj = self.createObject(value)
+#
+# Or are I'm wrong?
+
obj = self.createObject(value)
for name, f in self._fields().items():
@@ -146,12 +170,21 @@
self.form = form
self.widget = widget
+# XXX: probably we should use __call__ instead of get and skip the value. Isn't
+# the value an existing object instance? Which means if we never replace
+# existing objects this should never get called within an existing value?
+# def __call__():
+# return self.factory()
+
def get(self, value):
return self.factory()
def __repr__(self):
return '<%s %r>' % (self.__class__.__name__, self.__name__)
+# XXX: Probably we should offer an register factrory method which allows to
+# use all discriminators e.g. context, request, form, widget as optional
+# arguments. But can probably do that later in a ZCML directive
def registerFactoryAdapter(for_, klass):
"""register the basic FactoryAdapter for a given interface and class"""
name = for_.__module__+'.'+for_.__name__
More information about the Checkins
mailing list