本文整理汇总了Python中zope.component.queryMultiAdapter函数的典型用法代码示例。如果您正苦于以下问题:Python queryMultiAdapter函数的具体用法?Python queryMultiAdapter怎么用?Python queryMultiAdapter使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了queryMultiAdapter函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: publishTraverse
def publishTraverse(self, request, name):
"""Allow traversal to @@<view>/tilename/tileid
"""
# 1. Look up the view, but keep this view as the traversal context in
# anticipation of an id
if self.view is None:
tile_info = queryUtility(ITileType, name=name)
if tile_info is None:
raise KeyError(name)
self.view = queryMultiAdapter((self.context, self.request,
tile_info), self.targetInterface,
name=name)
if self.view is None:
self.view = queryMultiAdapter((self.context, self.request,
tile_info),
self.targetInterface)
if self.view is None:
raise KeyError(name)
self.view.__name__ = name
self.view.__parent__ = self.context
return self
# 2. Set the id and return the view we looked up in the previous
# traversal step.
elif getattr(self.view, 'tileId', None) is None:
self.view.tileId = name
return self.view
raise KeyError(name)
示例2: __call__
def __call__(self):
alsoProvides(self, IViewView)
manager = queryMultiAdapter(
(self.context, self.request, self),
IViewletManager, name='plone.belowcontent'
)
viewlet = queryMultiAdapter(
(self.context, self.request, self, manager),
IViewlet, name='plone.comments'
)
if viewlet is not None:
viewlet.form = TileCommentForm
viewlet.update()
if isinstance(viewlet.form, TileCommentForm):
viewlet.form.action = self.url
# Fix submit redirect from tile to context
if 'location' in self.request.response.headers:
location = self.request.response.getHeader('location')
self.request.response.redirect(''.join([
self.context.absolute_url(), '#', location.split('#')[-1]
]))
return protect(u'<html><body>%s</body></html>' % viewlet.render())
else:
return u'<html><body></body></html>'
示例3: test_portlet_inheritance
def test_portlet_inheritance(self):
portal = self.layer['portal']
folder = portal.folder2
request = folder.REQUEST
view = folder.restrictedTraverse('@@plone')
alsoProvides(view, IViewView)
self.assertTrue(IViewView.providedBy(view))
viewlet_manager = queryMultiAdapter(
(folder, request, view),
IContentProvider,
'plone.abovecontentbody')
viewlet = queryMultiAdapter(
(folder, request, view, viewlet_manager),
IViewlet,
'collective.calltoaction')
self.assertTrue(viewlet is not None)
viewlet.update()
# The portlet from the test fixture is blocked.
self.assertEqual(len(viewlet.data), 0)
# Show the action globally. This ignores portlet inheritance.
registry = getUtility(IRegistry)
settings = registry.forInterface(
ICollectiveCalltoactionSettings, check=False)
self.assertFalse(settings.show_global)
settings.show_global = True
# Now we should see the portlet
viewlet.update()
self.assertEqual(len(viewlet.data), 1)
示例4: get_previews
def get_previews(self, **kwargs):
catalog = getToolByName(self.context, 'portal_catalog')
result = catalog(self._query(**kwargs))
batch = BaseBatch(result, self.bsize, start=self.bstart)
previews = []
if self.bstart >= batch.end:
return ''
for brain in batch:
obj = brain.getObject()
adapter = queryMultiAdapter((obj, obj.REQUEST), IWorkspacePreview)
# Try to get a specific preview adapter
for extension in self.get_extensions(obj.getContentType()):
specific = queryMultiAdapter(
(obj, obj.REQUEST),
IWorkspacePreview,
name=extension)
if specific is not None:
adapter = specific
break
previews.append(adapter)
return previews
示例5: test_foo
def test_foo(self):
index = queryMultiAdapter((Spionisto(), TestRequest()), name='index')
self.assertNotEqual(index, None)
# There is no view called 'index2'
index2 = queryMultiAdapter((Spionisto(), TestRequest()), name='index2')
self.assertEqual(index2, None)
示例6: __call__
def __call__(self):
support = queryMultiAdapter((self.context, self.request), name="epub.support")
if not getattr(support, "can_download", lambda: False)():
raise NotFound(self.context, self.__name__, self.request)
# Fallback ePub provided
if self.fallback:
return self.request.response.redirect(self.fallback)
epub = queryMultiAdapter((self.context, self.request), name="epub.body")
body = epub()
css = epub.css()
ecover = queryMultiAdapter((self.context, self.request), name="epub.cover")
cover = ecover(header=False, safe=True)
output = StringIO()
html2epub = queryUtility(IHtml2EPub)
html2epub(
body,
cover,
output,
title=self.context.Title(),
base_url=self.context.absolute_url(),
css=css,
cookies=self.request.cookies,
)
response = self.request.response
response.setHeader("Content-Type", "application/xml+epub")
response.setHeader("Content-Disposition", "attachment; filename=%s.epub" % self.context.id)
output.seek(0)
return output.read()
示例7: publishTraverse
def publishTraverse(self, request, name):
# 1. Look for a named traverser plugin.
named_traverser = queryMultiAdapter((self.context, request),
interfaces.ITraverserPlugin,
name=name)
if named_traverser is not None:
try:
return named_traverser.traverse(name)
except NotFound:
pass
# 2. Named traverser plugin was of no use, let's try a generic one.
traverser = queryMultiAdapter((self.context, request),
interfaces.ITraverserPlugin)
if traverser is not None:
try:
return traverser.traverse(name)
except NotFound:
pass
# 3. The traversers did not have an answer, so let's see whether it is
# a view.
view = queryMultiAdapter((self.context, request), name=name)
if view is not None:
return view
raise NotFound(self.context, name, request)
示例8: move
def move(self, pos):
"""
Move the item. x and y are in view coordinates.
"""
super(DropZoneInMotion, self).move(pos)
item = self.item
view = self.view
x, y = pos
current_parent = view.canvas.get_parent(item)
over_item = view.get_item_at_point((x, y), selected=False)
if not over_item:
view.dropzone_item = None
view.window.set_cursor(None)
return
if current_parent and not over_item: # are we going to remove from parent?
adapter = component.queryMultiAdapter((current_parent, item), IGroup)
if adapter:
view.window.set_cursor(OUT_CURSOR)
view.dropzone_item = current_parent
current_parent.request_update(matrix=False)
if over_item:
# are we going to add to parent?
adapter = component.queryMultiAdapter((over_item, item), IGroup)
if adapter and adapter.can_contain():
view.dropzone_item = over_item
view.window.set_cursor(IN_CURSOR)
over_item.request_update(matrix=False)
示例9: subtype
def subtype(obj, evt):
""" Subtype as faceted navigable
"""
context = obj
portal_type = getattr(context, 'portal_type', None)
if portal_type != 'EEARelationsContentType':
return
# Subtype as faceted navigable
subtyper = queryMultiAdapter((context, context.REQUEST),
name=u'faceted_search_subtyper', default=queryMultiAdapter(
(context, context.REQUEST), name=u'faceted_subtyper'))
if subtyper:
subtyper.enable()
# Add default widgets
widgets = queryMultiAdapter((context, context.REQUEST),
name=u'default_widgets.xml')
if not widgets:
return
xml = widgets()
environ = SnapshotImportContext(context, 'utf-8')
importer = queryMultiAdapter((context, environ), IBody)
if not importer:
return
importer.body = xml
示例10: testSchemaDisplayWithWidget
def testSchemaDisplayWithWidget(self):
self.assertEqual(
component.queryMultiAdapter((ob, request), name='view.html'),
None)
xmlconfig(StringIO(template % ('''
<view
type="zope.publisher.interfaces.browser.IBrowserRequest"
for="zope.schema.interfaces.IField"
provides="zope.formlib.interfaces.IDisplayWidget"
factory="zope.app.form.browser.DisplayWidget"
permission="zope.Public"
/>
<browser:schemadisplay
for="zope.app.form.browser.tests.test_directives.IC"
schema="zope.app.form.browser.tests.test_directives.Schema"
name="view.html"
label="View a ZPT page"
fields="text"
permission="zope.Public">
<browser:widget
field="text"
class="zope.app.form.browser.tests.test_directives.SomeWidget"
displayWidth="30"
extra="foo"
/>
</browser:schemadisplay>
''')))
view = component.queryMultiAdapter((ob, request), name='view.html')
self.assert_(hasattr(view, 'text_widget'))
self.assert_(isinstance(view.text_widget, SomeWidget))
self.assertEqual(view.text_widget.extra, u'foo')
self.assertEqual(view.text_widget.displayWidth, 30)
示例11: restful_query_view
def restful_query_view(request, obj, name=""):
method = request.method
target = methods.get(method)
result = queryMultiAdapter((obj, request), target, name=name)
if result is None and method != FALLBACK:
result = queryMultiAdapter((obj, request), target, name=name)
return result
示例12: testSchemaDisplay
def testSchemaDisplay(self):
self.assertEqual(
component.queryMultiAdapter((ob, request), name='view.html'),
None)
xmlconfig(StringIO(template % ('''
<view
type="zope.publisher.interfaces.browser.IBrowserRequest"
for="zope.schema.interfaces.IField"
provides="zope.formlib.interfaces.IDisplayWidget"
factory="zope.app.form.browser.DisplayWidget"
permission="zope.Public"
/>
<browser:schemadisplay
for="zope.app.form.browser.tests.test_directives.IC"
schema="zope.app.form.browser.tests.test_directives.Schema"
name="view.html"
label="View a ZPT page"
fields="text"
permission="zope.Public" />
''')))
v = component.queryMultiAdapter((ob, request), name='view.html')
# expect to fail as standard macros are not configured
self.assertRaises(TraversalError, v)
示例13: testEditFormWithMenu
def testEditFormWithMenu(self):
self.assertEqual(
component.queryMultiAdapter((ob, request), name='edit.html'),
None)
xmlconfig(StringIO(template % ('''
<browser:menu id="test_menu" title="Test menu"/>
<view
type="zope.publisher.interfaces.browser.IBrowserRequest"
for="zope.schema.interfaces.ITextLine"
provides="zope.formlib.interfaces.IInputWidget"
factory="zope.app.form.browser.TextWidget"
permission="zope.Public"
/>
<browser:editform
for="zope.app.form.browser.tests.test_directives.IC"
schema="zope.app.form.browser.tests.test_directives.Schema"
name="edit.html"
label="Edit a ZPT page"
fields="text"
permission="zope.Public"
menu="test_menu"
title="Test View"
/>
''')))
v = component.queryMultiAdapter((ob, request), name='edit.html')
# expect to fail as standard macros are not configured
self.assertRaises(TraversalError, v)
示例14: query
def query(self, default=None):
request = self.request
content = self.getLocation()
if content is None:
return
item = IItem(content, None)
title = u''
description = u''
if item is not None:
title = item.title
description = item.description
view = queryMultiAdapter((content, request), IContentViewView)
if view is not None:
url = '%s/%s'%(absoluteURL(content, request), view.name)
else:
url = '%s/'%absoluteURL(content, request)
return {'url': url,
'title': title or _('[No title]'),
'content': content,
'icon': queryMultiAdapter((content, request), name='zmi_icon'),
'description': description or u''}
示例15: getTileViewByName
def getTileViewByName(self, tile_name):
"""We look up for adapter from ``(context, request, tileType)`` to an
appropriate interface. The default is to use the unnamed adapter, but
this can be overridden by registering a named adapter with the name of
the tile type. This way, a custom add/edit view can be registered for
a particular type of tile.
"""
tile_info = queryUtility(ITileType, name=tile_name)
if tile_info is None:
raise KeyError(tile_name)
view = queryMultiAdapter((self.context, self.request, tile_info),
self.targetInterface, name=tile_name)
if view is None:
view = queryMultiAdapter((self.context, self.request, tile_info),
self.targetInterface)
if view is None:
raise KeyError(tile_name)
view.__name__ = tile_name
view.__parent__ = self.context
return view