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: >>> for f in view.fields:
... print f.name, f.fieldType, f.required, f.vocabulary ... print f.name, f.fieldType, f.required, f.vocabulary
title text True None title textline True None
description textarea False None description textarea False None
data textarea False None data textarea False None
contentType dropdown True <...SimpleVocabulary object...> 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 The object is changed via a FormController adapter created for
a NodeView. a NodeView.

View file

@ -40,8 +40,10 @@ from zope.security.proxy import isinstance, removeSecurityProxy
from cybertools.ajax import innerHtml from cybertools.ajax import innerHtml
from cybertools.browser.form import FormController from cybertools.browser.form import FormController
from cybertools.composer.interfaces import IInstance
from cybertools.composer.schema.util import getSchemaFromInterface from cybertools.composer.schema.util import getSchemaFromInterface
from cybertools.typology.interfaces import IType, ITypeManager from cybertools.typology.interfaces import IType, ITypeManager
from loops.common import adapted
from loops.concept import ResourceRelation from loops.concept import ResourceRelation
from loops.interfaces import IConcept, IResourceManager, IDocument from loops.interfaces import IConcept, IResourceManager, IDocument
from loops.interfaces import IFile, IExternalFile, INote, ITextDocument from loops.interfaces import IFile, IExternalFile, INote, ITextDocument
@ -107,13 +109,13 @@ class ObjectForm(NodeView):
data = instance.applyTemplate(mode='edit') data = instance.applyTemplate(mode='edit')
for k, v in data.items(): for k, v in data.items():
#overwrite data with values from request.form #overwrite data with values from request.form
if k in form: if k in self.request.form:
data[k] = form[k] data[k] = form[k]
return data return data
@Lazy @Lazy
def instance(self): def instance(self):
return IInstance(self.context) return IInstance(adapted(self.context))
# zope.formlib support # 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.annotatableadapter import ZDCAnnotatableAdapter
from zope.dublincore.interfaces import IZopeDublinCore 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.tests import IntIdsStub
from cybertools.relation.registry import RelationRegistry from cybertools.relation.registry import RelationRegistry
from cybertools.relation.interfaces import IRelation, IRelationRegistry from cybertools.relation.interfaces import IRelation, IRelationRegistry
@ -60,6 +62,10 @@ class TestSite(object):
component.provideAdapter(TypeConcept) component.provideAdapter(TypeConcept)
component.provideAdapter(FileAdapter, provides=IFile) component.provideAdapter(FileAdapter, provides=IFile)
component.provideAdapter(NameChooser) component.provideAdapter(NameChooser)
component.provideAdapter(Instance)
component.provideAdapter(Editor, name='editor')
component.provideAdapter(FieldInstance)
component.provideAdapter(NumberFieldInstance, name='number')
component.getSiteManager().registerHandler(invalidateRelations, component.getSiteManager().registerHandler(invalidateRelations,
(ILoopsObject, IObjectRemovedEvent)) (ILoopsObject, IObjectRemovedEvent))