diff --git a/README.txt b/README.txt index 69ccea1..f133887 100755 --- a/README.txt +++ b/README.txt @@ -710,11 +710,15 @@ The new technique uses the ``fields`` and ``data`` attributes... >>> for f in view.fields: ... print f.name, f.fieldType, f.required, f.vocabulary - title text True None + title textline True None description textarea False None data textarea False None contentType dropdown True <...SimpleVocabulary object...> - linkUrl text False None + linkUrl textline False None + + >>> view.data + {'linkUrl': None, 'contentType': u'', 'data': '', 'description': '', + 'title': u'Test Note'} The object is changed via a FormController adapter created for a NodeView. diff --git a/browser/form.py b/browser/form.py index da33207..2711f15 100644 --- a/browser/form.py +++ b/browser/form.py @@ -40,8 +40,10 @@ from zope.security.proxy import isinstance, removeSecurityProxy from cybertools.ajax import innerHtml from cybertools.browser.form import FormController +from cybertools.composer.interfaces import IInstance from cybertools.composer.schema.util import getSchemaFromInterface from cybertools.typology.interfaces import IType, ITypeManager +from loops.common import adapted from loops.concept import ResourceRelation from loops.interfaces import IConcept, IResourceManager, IDocument from loops.interfaces import IFile, IExternalFile, INote, ITextDocument @@ -107,13 +109,13 @@ class ObjectForm(NodeView): data = instance.applyTemplate(mode='edit') for k, v in data.items(): #overwrite data with values from request.form - if k in form: + if k in self.request.form: data[k] = form[k] return data @Lazy def instance(self): - return IInstance(self.context) + return IInstance(adapted(self.context)) # zope.formlib support diff --git a/tests/setup.py b/tests/setup.py index 74efc15..d11758d 100644 --- a/tests/setup.py +++ b/tests/setup.py @@ -16,6 +16,8 @@ from zope.app.security.interfaces import IAuthentication from zope.dublincore.annotatableadapter import ZDCAnnotatableAdapter from zope.dublincore.interfaces import IZopeDublinCore +from cybertools.composer.schema.field import FieldInstance, NumberFieldInstance +from cybertools.composer.schema.instance import Instance, Editor from cybertools.relation.tests import IntIdsStub from cybertools.relation.registry import RelationRegistry from cybertools.relation.interfaces import IRelation, IRelationRegistry @@ -60,6 +62,10 @@ class TestSite(object): component.provideAdapter(TypeConcept) component.provideAdapter(FileAdapter, provides=IFile) component.provideAdapter(NameChooser) + component.provideAdapter(Instance) + component.provideAdapter(Editor, name='editor') + component.provideAdapter(FieldInstance) + component.provideAdapter(NumberFieldInstance, name='number') component.getSiteManager().registerHandler(invalidateRelations, (ILoopsObject, IObjectRemovedEvent))