First steps towards creating resources via a node object

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1034 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2006-01-26 18:54:55 +00:00
parent 2f8d17e0f7
commit dedd7d8736
3 changed files with 28 additions and 11 deletions

View file

@ -300,6 +300,16 @@ application uses a subclass that does all the other stuff for form handling.)
>>> from loops.browser.node import ConfigureBaseView
>>> view = ConfigureBaseView(INodeConfigSchema(m111), TestRequest())
>>> view.checkCreateTarget()
>>> sorted(resources.keys())
[u'doc1']
>>> form = {'field.createTarget': True,
... 'field.targetUri': '.loops/resources/ma07',
... 'field.targetType': 'loops.resource.MediaAsset'}
>>> view = ConfigureBaseView(INodeConfigSchema(m111), TestRequest(form=form))
>>> view = ConfigureBaseView(m111, TestRequest(form=form))
>>> view.checkCreateTarget()
>>> sorted(resources.keys())
[u'doc1', u'ma07']
It is also possible to edit a target's attributes directly in an
edit form provided by the node:

View file

@ -30,6 +30,7 @@ from zope.proxy import removeAllProxies
from zope.security import canAccess, canWrite
from zope.security.proxy import removeSecurityProxy
from loops.resource import MediaAsset
class NodeView(object):
@ -95,17 +96,26 @@ class NodeView(object):
class ConfigureBaseView(object):
""" Helper view object for editing/configuring a node, providing the
""" Helper view class for editing/configuring a node, providing the
stuff needed for creating a target object.
"""
def __init__(self, context, request):
self.context = context
self.context = removeSecurityProxy(context)
self.request = request
def checkCreateTarget(self):
pass
form = self.request.form
if 'field.createTarget' in form:
type = self.request.form.get('field.targetType',
'loops.resource.MediaAsset')
# TODO: find class (better: factory) from type name
uri = self.request.form.get('field.targetUri', None)
# TODO: generate uri/__name__ if not given
if uri:
# TODO: find container
self.context.getLoopsRoot()['resources']['ma07'] = MediaAsset()
#self.context.loopsRoot['resources']['ma07'] = MediaAsset()
class ConfigureView(object):
""" An editing view for configuring a node, optionally creating
@ -117,6 +127,8 @@ class ConfigureView(object):
self.delegate = ConfigureBaseView(context, request)
def update(self):
if self.update_status is not None:
return self.update_status
self.delegate.checkCreateTarget()
return super(ConfigureView, self).update()

View file

@ -212,13 +212,8 @@ class NodeConfigAdapter(object):
return '%s.%s' % (target.__module__, target.__class__.__name__)
return None
def setTargetType(self, tt):
self._targetType = tt # to be able to use it in setCreateTarget()
pass # only used whe a new target object is created
targetType = property(getTargetType, setTargetType)
def setCreateTarget(self, value):
if value:
print 'targetType:', self._targetType or self.targetType
def getCreateTarget(self): return False
createTarget = property(getCreateTarget, setCreateTarget)
createTarget = False # not used