prepare for using cybertools.composer.schema instead of zope.formlib

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1996 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2007-09-03 20:17:58 +00:00
parent a049b73f0e
commit d131771839
3 changed files with 16 additions and 4 deletions

View file

@ -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.

View file

@ -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

View file

@ -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))