def testPageInPagesWithClassWithMenu(self): self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) testtemplate = os.path.join(tests_path, 'testfiles', 'test.pt') xmlconfig(StringIO(template % ( ''' <browser:menu id="test_menu" title="Test menu" /> <browser:pages for="zope.app.component.tests.views.IC" class="zope.app.component.tests.views.V1" permission="zope.Public"> <browser:page name="test" template="%s" menu="test_menu" title="Test View" /> </browser:pages> ''' % testtemplate ))) menuItem = getFirstMenuItem('test_menu', ob, TestRequest()) self.assertEqual(menuItem["title"], "Test View") self.assertEqual(menuItem["action"], "@@test") v = zapi.queryMultiAdapter((ob, request), name='test') self.assertEqual(v(), "<html><body><p>test</p></body></html>\n")
def testSchemaDisplay(self): self.assertEqual( zapi.queryMultiAdapter((ob, request), name='view.html'), None) xmlconfig(StringIO(template % (''' <view type="zope.publisher.interfaces.browser.IBrowserRequest" for="zope.schema.interfaces.IField" provides="zope.app.form.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 = zapi.queryMultiAdapter((ob, request), name='view.html') # expect to fail as standard macros are not configured self.assertRaises(TraversalError, v)
def testSchemaDisplayWithWidget(self): self.assertEqual( zapi.queryMultiAdapter((ob, request), name='view.html'), None) xmlconfig(StringIO(template % (''' <view type="zope.publisher.interfaces.browser.IBrowserRequest" for="zope.schema.interfaces.IField" provides="zope.app.form.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 = zapi.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)
def anchor(value, item, formatter): """ anchor method will return a html formated anchor""" if value is None: return u'' if type(item) is dict: item = item['obj'] if ISuperclass.providedBy(value): item = value value = item.ikName try: myAdapter = zapi.queryMultiAdapter((item, formatter.request), name=view) if myAdapter is not None and canAccess(myAdapter,'render'): url = absoluteURL(item, formatter.request) + '/' + view return u'<a href="%s">%s</a>' % (url, value) else: # view = "details.html" myAdapter = zapi.queryMultiAdapter((item, formatter.request), name="details.html") if myAdapter is not None and canAccess(myAdapter,'render'): url = absoluteURL(item, formatter.request) + '/' + "details.html" return u'<a href="%s">%s</a>' % (url, value) else: return u'%s' % (value) except Exception: return u'%s' % (value)
def testView(self): self.assertEqual( zapi.queryMultiAdapter((ob, request), name='test'), None) xmlconfig.file("xmlrpc.zcml", xmlrpc.tests) view = zapi.queryMultiAdapter((ob, request), name='test') self.assert_(V1 in view.__class__.__bases__) self.assert_(xmlrpc.MethodPublisher in view.__class__.__bases__)
def testUnnamedViewThatProvidesAnInterface(self): request = TestRequest() self.assertEqual(zapi.queryMultiAdapter((ob, request), IV), None) xmlconfig(StringIO(template % ''' <browser:view class="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" permission="zope.Public" /> ''' )) v = zapi.queryMultiAdapter((ob, request), IV) self.assertEqual(v, None) xmlconfig(StringIO(template % ''' <browser:view class="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" provides="zope.app.component.tests.views.IV" permission="zope.Public" /> ''' )) v = zapi.queryMultiAdapter((ob, request), IV) self.assert_(isinstance(v, V1))
def actions(self): """ gives us the action dict of the object """ try: objId = getUtility(IIntIds).getId(self.context) except KeyError: objId = 1000 retList = [] if checkPermission('org.ict_ok.admin_utils.esx_vim.Admin', self.context) and\ zapi.queryMultiAdapter((self.context, self.request), name='shutdown.html') is not None: tmpDict = {} tmpDict['oid'] = u"c%sshutdown" % objId tmpDict['title'] = _(u"shutdown") tmpDict['href'] = u"%s/@@shutdown.html" % \ zapi.getPath(self.context) tmpDict['tooltip'] = _(u"shutdow the virtual machine") retList.append(tmpDict) if checkPermission('org.ict_ok.admin_utils.esx_vim.Admin', self.context) and\ zapi.queryMultiAdapter((self.context, self.request), name='convertobj.html') is not None: tmpDict = {} tmpDict['oid'] = u"c%sconvertobj" % objId tmpDict['title'] = _(u"convert to intern") tmpDict['href'] = u"%s/@@convertobj.html" % \ zapi.getPath(self.context) tmpDict['tooltip'] = _(u"convert to internal object") retList.append(tmpDict) return retList
def testDefaultSkin(self): request = TestRequest() self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) xmlconfig(StringIO(template % ( ''' <browser:layer name="zmi" /> <browser:skin name="zmi" layers="zmi" /> <browser:defaultSkin name="zmi" /> <browser:page name="test" class="zope.app.component.tests.views.VZMI" layer="zmi" for="zope.app.component.tests.views.IC" permission="zope.Public" attribute="index" /> <browser:page name="test" class="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" permission="zope.Public" attribute="index" /> ''' ))) # Simulate Zope Publication behavior in beforeTraversal() adapters = zapi.getSiteManager().adapters skin = adapters.lookup((providedBy(request),), IDefaultSkin, '') directlyProvides(request, skin) v = zapi.queryMultiAdapter((ob, request), name='test') self.assert_(issubclass(v.__class__, VZMI))
def testEditFormWithMenu(self): self.assertEqual( zapi.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.app.form.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 = zapi.queryMultiAdapter((ob, request), name='edit.html') # expect to fail as standard macros are not configured self.assertRaises(TraversalError, v)
def testSkinPage(self): self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) xmlconfig(StringIO(template % ( ''' <browser:layer name="zmi" /> <browser:skin name="zmi" layers="zmi" /> <browser:page name="test" class="zope.app.component.tests.views.VZMI" layer="zmi" for="zope.app.component.tests.views.IC" permission="zope.Public" attribute="index" /> <browser:page name="test" class="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" permission="zope.Public" attribute="index" /> ''' ))) v = zapi.queryMultiAdapter((ob, request), name='test') self.assert_(issubclass(v.__class__, V1)) zmi = zapi.getUtility(ISkin, 'zmi') v = zapi.queryMultiAdapter((ob, TestRequest(skin=zmi)), name='test') self.assert_(issubclass(v.__class__, VZMI))
def getActionBotton_UpDown(item, formatter): """Action Buttons for Overview in Web-Browser """ if type(item) is dict: item = item["obj"] retHtml = u"" parentIsOrderd = IOrderedContainer.providedBy(item.__parent__) resource_path = getAdapter(formatter.request, name='pics')() if parentIsOrderd: up_url = absoluteURL(item, formatter.request) + '/@@moveup.html' myAdapter = zapi.queryMultiAdapter((item, formatter.request), name='moveup.html') if myAdapter is not None and canAccess(myAdapter,'render') and \ item.__parent__.keys()[0] != item.objectID: # not the first element up_html = u'<a href="%s">' % (up_url) + \ u'<img alt="Up" src="%s/Up.png" /></a>' % \ (resource_path) else: up_html = u'<img alt="Up" src="%s/Up_gray.png" />' % \ (resource_path) retHtml += up_html down_url = absoluteURL(item, formatter.request) + '/@@movedown.html' myAdapter = zapi.queryMultiAdapter((item, formatter.request), name='movedown.html') if myAdapter is not None and canAccess(myAdapter,'render') and \ item.__parent__.keys()[-1] != item.objectID: # not the last element down_html = u'<a href="%s">' % (down_url) + \ u'<img alt="Down" src="%s/Down.png" /></a>' % \ (resource_path) else: down_html = u'<img alt="Down" src="%s/Down_gray.png" />' %\ (resource_path) retHtml += down_html return retHtml
def testUnnamedViewThatProvidesAnInterface(self): ob = Ob() self.assertEqual( zapi.queryMultiAdapter((ob, Request(IR)), IV), None) xmlconfig(StringIO(template % ''' <view factory="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" type="zope.app.component.tests.views.IR" /> ''' )) v = zapi.queryMultiAdapter((ob, Request(IR)), IV) self.assertEqual(v, None) xmlconfig(StringIO(template % ''' <view factory="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" type="zope.app.component.tests.views.IR" provides="zope.app.component.tests.views.IV" /> ''' )) v = zapi.queryMultiAdapter((ob, Request(IR)), IV) self.assertEqual(v.__class__, V1)
def _initSettings(self, obj, profile_id, obj_path): stool = getToolByName(self, 'portal_setup', None) if stool is None: return context = stool._getImportContext(profile_id) body = context.readDataFile('actions.xml') if body is None: return settings_node = None root = parseString(body).documentElement for node in root.childNodes: if node.nodeName != 'object': continue for obj_id in obj_path: for child in node.childNodes: if child.nodeName != 'object': continue if child.getAttribute('name') != obj_id: continue if child.getAttribute('meta_type') == self.klass.meta_type: settings_node = child else: node = child break importer = zapi.queryMultiAdapter((obj, context), INode) if importer is None: return importer.node = settings_node return
def _initSettings(self, obj, profile_id, obj_path): stool = getToolByName(self, 'portal_setup', None) if stool is None: return context = stool._getImportContext(profile_id) file_ids = context.listDirectory('types') for file_id in file_ids or (): filename = 'types/%s' % file_id body = context.readDataFile(filename) if body is None: continue root = parseString(body).documentElement new_id = str(root.getAttribute('name')) if not new_id: # BBB: for CMF 1.5 profiles new_id = str(root.getAttribute('id')) if new_id != obj_path[0]: continue # BBB: for CMF 1.5 profiles meta_type = str(root.getAttribute('kind')) if not meta_type: meta_type = str(root.getAttribute('meta_type')) if meta_type != self.klass.meta_type: continue importer = zapi.queryMultiAdapter((obj, context), IBody) if importer is None: continue importer.body = body return
def _initIndexes(self, node): for child in node.childNodes: if child.nodeName != 'index': continue if child.hasAttribute('deprecated'): continue zcatalog = self.context idx_id = str(child.getAttribute('name')) if idx_id not in zcatalog.indexes(): extra = _extra() for sub in child.childNodes: if sub.nodeName == 'extra': name = str(sub.getAttribute('name')) value = str(sub.getAttribute('value')) setattr(extra, name, value) extra = extra.__dict__ and extra or None meta_type = str(child.getAttribute('meta_type')) zcatalog.addIndex(idx_id, meta_type, extra) idx = zcatalog._catalog.getIndex(idx_id) importer = zapi.queryMultiAdapter((idx, self.environ), INode) if importer: importer.node = child
def traverseName(self, request, ob, name): nm = name # the name to look up the object with if name and name[:1] in '@+': # Process URI segment parameters. ns, nm = nsParse(name) if ns: try: ob2 = namespaceLookup(ns, nm, ob, request) except TraversalError: raise NotFound(ob, name) return ProxyFactory(ob2) if nm == '.': return ob if IPublishTraverse.providedBy(ob): ob2 = ob.publishTraverse(request, nm) else: # self is marker adapter = zapi.queryMultiAdapter((ob, request), IPublishTraverse, default=self) if adapter is not self: ob2 = adapter.publishTraverse(request, nm) else: raise NotFound(ob, name, request) return ProxyFactory(ob2)
def testView_w_multiple_factories(self): xmlconfig(StringIO(template % ''' <view name="test" factory="zope.app.component.tests.adapter.A1 zope.app.component.tests.adapter.A2 zope.app.component.tests.adapter.A3 zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" type="zope.app.component.tests.views.IV"/> ''' )) ob = Ob() # The view should be a V1 around an A3, around an A2, around # an A1, anround ob: view = zapi.queryMultiAdapter((ob, Request(IV)), name=u'test') self.assertEqual(view.__class__, V1) a3 = view.context self.assertEqual(a3.__class__, A3) a2 = a3.context[0] self.assertEqual(a2.__class__, A2) a1 = a2.context[0] self.assertEqual(a1.__class__, A1) self.assertEqual(a1.context[0], ob)
def testAddForm(self): self.assertEqual( zapi.queryMultiAdapter((ob, request), name='add.html'), None) xmlconfig(StringIO(template % (""" <view type="zope.publisher.interfaces.browser.IBrowserRequest" for="zope.schema.interfaces.ITextLine" provides="zope.app.form.interfaces.IInputWidget" factory="zope.app.form.browser.TextWidget" permission="zope.Public" /> <browser:addform for="zope.app.form.browser.tests.test_directives.IC" schema="zope.app.form.browser.tests.test_directives.Schema" name="add.html" label="Add a ZPT page" fields="text" permission="zope.Public" /> """))) v = zapi.getMultiAdapter((ob, request), name='add.html') # expect to fail as standard macros are not configured self.assertRaises(TraversalError, v)
def _extractCachingPolicies(self): fragment = self._doc.createDocumentFragment() for policy_id, policy in self.context.listPolicies(): exporter = zapi.queryMultiAdapter((policy, self.environ), INode) if exporter: fragment.appendChild(exporter.node) return fragment
def testResourceErrors(self): self.assertEqual( zapi.queryMultiAdapter((ob, request), name='zmi_icon'), None) import zope.app.publisher.browser.tests as p path = os.path.dirname(p.__file__) path = os.path.join(path, 'testfiles', 'test.gif') config = StringIO(template % ( ''' <browser:resource name="zmi_icon_res" image="%s" /> <browser:icon name="zmi_icon" for="zope.app.component.tests.views.IC" file="%s" resource="zmi_icon_res" /> ''' % (path, path) )) self.assertRaises(ConfigurationError, xmlconfig, config) config = StringIO(template % ( """ <browser:icon name="zmi_icon" for="zope.app.component.tests.views.IC" /> """ )) self.assertRaises(ConfigurationError, xmlconfig, config)
def testNamedViewPageViewsCustomTraversr(self): self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) xmlconfig(StringIO(template % ''' <browser:view name="test" class="zope.app.publisher.browser.tests.test_directives.V1" for="zope.app.component.tests.views.IC" permission="zope.Public" > <browser:page name="index.html" attribute="index" /> <browser:page name="action.html" attribute="action" /> </browser:view> ''' )) view = zapi.getMultiAdapter((ob, request), name='test') view = removeSecurityProxy(view) self.assertEqual(view.browserDefault(request)[1], (u'index.html', )) v = view.publishTraverse(request, 'index.html') v = removeSecurityProxy(v) self.assertEqual(v(), 'V1 here') v = view.publishTraverse(request, 'action.html') v = removeSecurityProxy(v) self.assertEqual(v(), 'done')
def getActionBotton_Delete(item, formatter): """Action Buttons for Overview in Web-Browser """ if type(item) is dict: item = item["obj"] resource_path = getAdapter(formatter.request, name='pics')() ttid = u"delete" + item.getObjectId() trash_url = absoluteURL(item, formatter.request) + '/@@delete.html' myAdapter = zapi.queryMultiAdapter((item, formatter.request), name='delete.html') if myAdapter is not None and canAccess(myAdapter,'render') \ and item.canBeDeleted(): trash_html = u'<a href="%s">' % (trash_url) + \ u'<img id="%s" alt="Trash" src="%s/Trash.png" /></a>' % \ (ttid, resource_path) tooltip_text = _(u'delete this object') else: trash_html = u'<img id="%s" alt="Trash" src="%s/Trash_gr.png" />' % \ (ttid, resource_path) tooltip_text = _(u'deleting this object is not permitted') if not item.canBeDeleted(): tooltip_text += _(u',<br/>referenced by other objects') tooltip = u"<script type=\"text/javascript\">tt_%s = new YAHOO." \ u"widget.Tooltip('tt_%s', { autodismissdelay:'15000', " \ u"context:'%s', text:'%s' });</script>" \ % (ttid, ttid, ttid, tooltip_text) return trash_html + tooltip
def testNamedViewPageViewsNoDefault(self): self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) test3 = os.path.join(tests_path, 'testfiles', 'test3.pt') xmlconfig(StringIO(template % ''' <browser:view name="test" class="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" permission="zope.Public" > <browser:page name="index.html" attribute="index" /> <browser:page name="action.html" attribute="action" /> <browser:page name="test.html" template="%s" /> </browser:view> ''' % test3 )) view = zapi.getMultiAdapter((ob, request), name='test') view = removeSecurityProxy(view) self.assertEqual(view.browserDefault(request)[1], (u'index.html', )) v = view.publishTraverse(request, 'index.html') v = removeSecurityProxy(v) self.assertEqual(v(), 'V1 here') v = view.publishTraverse(request, 'action.html') v = removeSecurityProxy(v) self.assertEqual(v(), 'done') v = view.publishTraverse(request, 'test.html') v = removeSecurityProxy(v) self.assertEqual(str(v()), '<html><body><p>done</p></body></html>\n')
def testResource(self): self.assertEqual( zapi.queryMultiAdapter((ob, request), name='zmi_icon'), None) import zope.app.publisher.browser.tests as p path = os.path.dirname(p.__file__) path = os.path.join(path, 'testfiles', 'test.gif') xmlconfig(StringIO(template % ( ''' <browser:resource name="zmi_icon_res" image="%s" /> <browser:icon name="zmi_icon" for="zope.app.component.tests.views.IC" resource="zmi_icon_res" /> ''' % path ))) view = zapi.getMultiAdapter((ob, request), name='zmi_icon') rname = "zmi_icon_res" self.assertEqual( view(), '<img src="http://127.0.0.1/@@/%s" alt="IC" width="16" ' 'height="16" border="0" />' % rname) resource = ProxyFactory(zapi.getAdapter(request, name=rname)) self.assertRaises(Forbidden, getattr, resource, '_testData') resource = removeSecurityProxy(resource) self.assertEqual(resource._testData(), open(path, 'rb').read())
def callObject(self, request, ob): method = request['command'] view = zapi.queryMultiAdapter((ob, request), name=method, default=self) if view is self: raise NotFound(ob, method, request) return mapply(getattr(view, method), (), request)
def testProtectedNamedViewPageViews(self): self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) xmlconfig(StringIO(template % ''' <include package="zope.app.security" file="meta.zcml" /> <permission id="zope.TestPermission" title="Test permission" /> <browser:view name="test" class="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" permission="zope.Public" > <browser:page name="index.html" attribute="index" /> <browser:page name="action.html" attribute="action" /> </browser:view> ''' )) view = zapi.getMultiAdapter((ob, request), name='test') self.assertEqual(view.browserDefault(request)[1], (u'index.html', )) v = view.publishTraverse(request, 'index.html') self.assertEqual(v(), 'V1 here')
def testPageViews(self): self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) test3 = os.path.join(tests_path, 'testfiles', 'test3.pt') xmlconfig(StringIO(template % ''' <browser:pages class="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" permission="zope.Public" > <browser:page name="index.html" attribute="index" /> <browser:page name="action.html" attribute="action" /> <browser:page name="test.html" template="%s" /> </browser:pages> ''' % test3 )) v = zapi.getMultiAdapter((ob, request), name='index.html') self.assertEqual(v(), 'V1 here') v = zapi.getMultiAdapter((ob, request), name='action.html') self.assertEqual(v(), 'done') v = zapi.getMultiAdapter((ob, request), name='test.html') self.assertEqual(str(v()), '<html><body><p>done</p></body></html>\n')
def testProtectedPageViews(self): ztapi.provideUtility(IPermission, Permission('p', 'P'), 'p') request = TestRequest() self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) xmlconfig(StringIO(template % ''' <include package="zope.app.security" file="meta.zcml" /> <permission id="zope.TestPermission" title="Test permission" /> <browser:pages class="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" permission="zope.TestPermission" > <browser:page name="index.html" attribute="index" /> <browser:page name="action.html" attribute="action" /> </browser:pages> ''' )) v = zapi.getMultiAdapter((ob, request), name='index.html') v = ProxyFactory(v) zope.security.management.getInteraction().add(request) self.assertRaises(Exception, v) v = zapi.getMultiAdapter((ob, request), name='action.html') v = ProxyFactory(v) self.assertRaises(Exception, v)
def testSkinnedPageView(self): self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) xmlconfig(StringIO(template % ''' <browser:layer name="layer" /> <browser:skin name="skinny" layers="layer" /> <browser:pages for="*" class="zope.app.component.tests.views.V1" permission="zope.Public" > <browser:page name="index.html" attribute="index" /> </browser:pages> <browser:pages for="*" class="zope.app.component.tests.views.V1" layer="layer" permission="zope.Public" > <browser:page name="index.html" attribute="action" /> </browser:pages> ''' )) v = zapi.getMultiAdapter((ob, request), name='index.html') self.assertEqual(v(), 'V1 here') skinny = zapi.getUtility(ISkin, 'skinny') v = zapi.getMultiAdapter((ob, TestRequest(skin=skinny)), name='index.html') self.assertEqual(v(), 'done')
def testDefaultViewWithLayer(self): class FakeRequest(TestRequest): implements(ITestLayer) request2 = FakeRequest() self.assertEqual( zapi.queryMultiAdapter((ob, request2), IDefaultViewName), None) xmlconfig(StringIO(template % ( ''' <browser:defaultView name="test" for="zope.app.component.tests.views.IC" /> <browser:defaultView name="test2" for="zope.app.component.tests.views.IC" layer=" zope.app.publisher.browser.tests.test_directives.ITestLayer" /> ''' ))) self.assertEqual(zapi.getDefaultViewName(ob, request2), 'test2') self.assertEqual(zapi.getDefaultViewName(ob, request), 'test')
def getActionBotton_Detail(item, formatter, isRequirement=False): """Action Buttons for Overview in Web-Browser """ if type(item) is dict: item = item["obj"] resource_path = getAdapter(formatter.request, name='pics')() ttid = u"details" + item.getObjectId() view_url = absoluteURL(item, formatter.request) + '/@@details.html' myAdapter = zapi.queryMultiAdapter((item, formatter.request), name='details.html') if myAdapter is not None and canAccess(myAdapter,'render'): view_html = u'<a href="%s">' % (view_url) + \ u'<img id="%s" alt="Info" src="%s/Info.png" /></a>' % \ (ttid, resource_path) if isRequirement and item.ikComment is not None: tooltip_text = item.ikComment.replace("\r\n", "<br />") else: tooltip_text = _(u'details of this object') else: view_html = u'<img id="%s" alt="Details" src="%s/Info_gr.png" />' % \ (ttid, resource_path) tooltip_text = _(u'viewing details is not permitted') tooltip = u"<script type=\"text/javascript\">tt_%s = new YAHOO." \ u"widget.Tooltip('tt_%s', { autodismissdelay:'15000', " \ u"context:'%s', text:'%s' });</script>" \ % (ttid, ttid, ttid, tooltip_text) return view_html + tooltip
def _extractContentInfo(self, item): request = self.request rename_ids = {} if "container_rename_button" in request: for rename_id in request.get('ids', ()): rename_ids[rename_id] = rename_id elif "rename_ids" in request: for rename_id in request.get('rename_ids', ()): rename_ids[rename_id] = rename_id retitle_id = request.get('retitle_id') id, obj = item info = {} info['id'] = info['cb_id'] = id info['object'] = obj info['url'] = urllib.quote(id.encode('utf-8')) info['rename'] = rename_ids.get(id) info['retitle'] = id == retitle_id zmi_icon = zapi.queryMultiAdapter((obj, self.request), name='zmi_icon') if zmi_icon is None: info['icon'] = None else: info['icon'] = zmi_icon() dc = IZopeDublinCore(obj, None) if dc is not None: info['retitleable'] = canWrite(dc, 'title') info['plaintitle'] = not info['retitleable'] title = self.safe_getattr(dc, 'title', None) if title: info['title'] = title formatter = self.request.locale.dates.getFormatter( 'dateTime', 'short') created = self.safe_getattr(dc, 'created', None) if created is not None: info['created'] = formatter.format(created) modified = self.safe_getattr(dc, 'modified', None) if modified is not None: info['modified'] = formatter.format(modified) else: info['retitleable'] = 0 info['plaintitle'] = 1 sized_adapter = ISized(obj, None) if sized_adapter is not None: info['size'] = sized_adapter return info
def _exportNode(self): """Export the object as a DOM node. """ node = self._getObjectNode('index') for set in self.context.filteredSets.values(): exporter = zapi.queryMultiAdapter((set, self.environ), INode) node.appendChild(exporter.node) return node
def nextURL(self): v = zapi.queryMultiAdapter( (self.added_object, self.request), name="addRegistration.html") if v is not None: url = zapi.absoluteURL(self.added_object, self.request) return url + "/addRegistration.html" return super(UtilityAdding, self).nextURL()
def testPage(self): self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'), None) xmlconfig(StringIO(template % ( ''' <browser:page name="test" class="zope.app.component.tests.views.V1" for="zope.app.component.tests.views.IC" permission="zope.Public" attribute="index" /> ''' ))) v = zapi.queryMultiAdapter((ob, request), name='test') self.assert_(issubclass(v.__class__, V1))
def _extractIndexes(self): fragment = self._doc.createDocumentFragment() indexes = self.context.getIndexObjects()[:] indexes.sort(lambda x,y: cmp(x.getId(), y.getId())) for idx in indexes: exporter = zapi.queryMultiAdapter((idx, self.environ), INode) if exporter: fragment.appendChild(exporter.node) return fragment
def objs(self): """List of Content objects""" objWithPermisson = [] allObj = getAllUtilitiesRegisteredFor(ISuperclass) for obj in allObj: myAdapter = zapi.queryMultiAdapter((obj, self.request), name='details.html') if myAdapter is not None and canAccess(myAdapter, 'render'): objWithPermisson.append(obj) return objWithPermisson
def getStateIconUrl(self, item): result = '' icon = None try: stateAdapter = getAdapter(item, IState) if stateAdapter: icon_name = u"state_%s" % (stateAdapter.getStateOverview()) icon = zapi.queryMultiAdapter((item, self.request), name=icon_name) except ComponentLookupError, err: pass
def _extractObjects(self): fragment = self._doc.createDocumentFragment() objects = self.context.objectValues() if not IOrderedContainer.providedBy(self.context): objects = list(objects) objects.sort(lambda x, y: cmp(x.getId(), y.getId())) for obj in objects: exporter = zapi.queryMultiAdapter((obj, self.environ), INode) if exporter: fragment.appendChild(exporter.node) return fragment
def publishTraverse(self, request, name): adapter = ITraversable(self.context) if adapter is not None: try: return adapter.traverse(name, ()) except TraversalError: pass view = zapi.queryMultiAdapter((self.context, request), name=name) if view is not None: return view return getResource(self.context, name, request)
def anchor(value, item, formatter): """ anchor method will return a html formated anchor""" try: myAdapter = zapi.queryMultiAdapter((item, formatter.request), name=view) if myAdapter is not None and canAccess(myAdapter, 'render'): url = absoluteURL(item, formatter.request) + '/' + view return u'<a href="%s">%s</a>' % (url, value) else: return u'%s' % (value) except Exception: return u'%s' % (value)
def exportSiteProperties(context): """ Export site properties as an XML file. """ site = context.getSite() logger = context.getLogger('properties') exporter = zapi.queryMultiAdapter((site, context), IBody) if exporter is None: logger.warning('Export adapter misssing.') return context.writeDataFile(_FILENAME, exporter.body, exporter.mime_type)
def _initObjects(self, node): for child in node.childNodes: if child.nodeName != 'object': continue if child.hasAttribute('deprecated'): continue parent = self.context obj_id = str(child.getAttribute('name')) if child.hasAttribute('remove'): parent._delObject(obj_id) continue if obj_id not in parent.objectIds(): meta_type = str(child.getAttribute('meta_type')) __traceback_info__ = obj_id, meta_type for mt_info in Products.meta_types: if mt_info['name'] == meta_type: parent._setObject(obj_id, mt_info['instance'](obj_id)) break else: raise ValueError("unknown meta_type '%s'" % meta_type) if child.hasAttribute('insert-before'): insert_before = child.getAttribute('insert-before') if insert_before == '*': parent.moveObjectsToTop(obj_id) else: try: position = parent.getObjectPosition(insert_before) if parent.getObjectPosition(obj_id) < position: position -= 1 parent.moveObjectToPosition(obj_id, position) except ValueError: pass elif child.hasAttribute('insert-after'): insert_after = child.getAttribute('insert-after') if insert_after == '*': parent.moveObjectsToBottom(obj_id) else: try: position = parent.getObjectPosition(insert_after) if parent.getObjectPosition(obj_id) < position: position -= 1 parent.moveObjectToPosition(obj_id, position + 1) except ValueError: pass obj = getattr(self.context, obj_id) importer = zapi.queryMultiAdapter((obj, self.environ), INode) if importer: importer.node = child
def _importNode(self, node): """Import the object from the DOM node. """ for child in node.childNodes: if child.nodeName == 'filtered_set': set_id = str(child.getAttribute('name')) if set_id not in self.context.filteredSets: set_meta_type = str(child.getAttribute('meta_type')) self.context.addFilteredSet(set_id, set_meta_type, '') set = self.context.filteredSets[set_id] importer = zapi.queryMultiAdapter((set, self.environ), INode) importer.node = child self.context.clear()
def objs(self): """List of Content objects""" objWithPermisson = [] # allObj = getAllUtilitiesRegisteredFor(ISuperclass) # allObj = getAllUtilitiesRegisteredFor(Interface, context=self.context) smFolder = self.context.getParent() allObj = smFolder.values() for obj in allObj: if ISuperclass.providedBy(obj): myAdapter = zapi.queryMultiAdapter((obj, self.request), name='details.html') if myAdapter is not None and canAccess(myAdapter, 'render'): objWithPermisson.append(obj) return objWithPermisson
def _initCachingPolicies(self, node): for child in node.childNodes: if child.nodeName != 'caching-policy': continue parent = self.context policy_id = str(child.getAttribute('name')) if policy_id not in parent._policy_ids: parent.addPolicy(policy_id, 'python:1', 'object/modified', 0, 0, 0, 0, '', '') policy = self.context._policies[policy_id] importer = zapi.queryMultiAdapter((policy, self.environ), INode) if importer: importer.node = child
def exportBugTrackingTool(context): portal = context.getSite() logger = context.getLogger('bugtracker') tool = getToolByName(portal, 'portal_bugtracking', None) if tool is None: logger.info('Nothing to export.') return exporter = zapi.queryMultiAdapter((tool, context), IBody) if exporter is None: logger.warning('Export adapter missing.') return context.writeDataFile(filename, exporter.body, exporter.mime_type) logger.info('Bug tracking tool exported.')
def exportObjects(obj, parent_path, context): """ Export subobjects recursively. """ exporter = zapi.queryMultiAdapter((obj, context), IBody) path = '%s%s' % (parent_path, obj.getId().replace(' ', '_')) if exporter: if exporter.name: path = '%s%s' % (parent_path, exporter.name) filename = '%s%s' % (path, exporter.suffix) body = exporter.body if body is not None: context.writeDataFile(filename, body, exporter.mime_type) if getattr(obj, 'objectValues', False): for sub in obj.objectValues(): exportObjects(sub, path + '/', context)
def importSiteProperties(context): """ Import site properties from an XML file. """ site = context.getSite() logger = context.getLogger('properties') body = context.readDataFile(_FILENAME) if body is None: logger.info('Nothing to import.') return importer = zapi.queryMultiAdapter((site, context), IBody) if importer is None: logger.warning('Import adapter misssing.') return importer.body = body
def render(self): """Return the template with the option 'menus'""" objWithPermisson = [] utilManager = getUtility(IUtilManager) smFolder = utilManager.getParent() allObj = smFolder.values() for obj in allObj: if ISuperclass.providedBy(obj): if canAccess(obj, 'ikName'): myAdapter = zapi.queryMultiAdapter((obj, self.request), name='details.html') if myAdapter is not None and canAccess( myAdapter, 'render'): objWithPermisson.append(obj) if len(objWithPermisson) > 0: return self.template() else: return u''
def importObjects(obj, parent_path, context): """ Import subobjects recursively. """ importer = zapi.queryMultiAdapter((obj, context), IBody) path = '%s%s' % (parent_path, obj.getId().replace(' ', '_')) __traceback_info__ = path if importer: if importer.name: path = '%s%s' % (parent_path, importer.name) filename = '%s%s' % (path, importer.suffix) body = context.readDataFile(filename) if body is None and filename == 'types.xml': # BBB: for CMF 1.5 profiles body = context.readDataFile('typestool.xml') if body is not None: importer.filename = filename # for error reporting importer.body = body if getattr(obj, 'objectValues', False): for sub in obj.objectValues(): importObjects(sub, path + '/', context)
def getActionBotton_History(item, formatter): """Action Buttons for Overview in Web-Browser """ resource_path = getAdapter(formatter.request, name='pics')() ttid = u"history" + item.getObjectId() hist_url = absoluteURL(item, formatter.request) + '/@@history.html' myAdapter = zapi.queryMultiAdapter((item, formatter.request), name='history.html') if myAdapter is not None and canAccess(myAdapter, 'render'): hist_html = u'<a href="%s">' % (hist_url) + \ u'<img id="%s" alt="History" src="%s/Doc.png" /></a>' % \ (ttid, resource_path) tooltip_text = _(u'history this object') else: hist_html = u'<img id="%s" alt="History" src="%s/Doc_gr.png" />' % \ (ttid, resource_path) tooltip_text = _(u'viewing the history is not permitted') tooltip = u"<script type=\"text/javascript\">tt_%s = new YAHOO." \ u"widget.Tooltip('tt_%s', { autodismissdelay:'15000', " \ u"context:'%s', text:'%s' });</script>" \ % (ttid, ttid, ttid, tooltip_text) return hist_html + tooltip
def importBugTrackingTool(context): portal = context.getSite() logger = context.getLogger('bugtracker') if not hasattr(portal, 'portal_bugtracking'): addTool = portal.manage_addProduct['RhaptosBugTrackingTool'].manage_addTool addTool('BugTracking Tool') tool = getToolByName(portal, 'portal_bugtracking') body = context.readDataFile(filename) if body is None: logger.info('Nothing to import.') return importer = zapi.queryMultiAdapter((tool, context), IBody) if importer is None: logger.warning('Import adapter missing.') return importer.body = body logger.info('Bug tracking tool imported.')
def _initSettings(self, obj, profile_id, obj_path): stool = getToolByName(self, 'portal_setup', None) if stool is None: return context = stool._getImportContext(profile_id) file_ids = context.listDirectory('workflows') for file_id in file_ids or (): filename = 'workflows/%s/definition.xml' % file_id body = context.readDataFile(filename) if body is None: continue root = parseString(body).documentElement if not root.getAttribute('workflow_id') == obj_path[0]: continue importer = zapi.queryMultiAdapter((obj, context), IBody) if importer is None: continue importer.body = body return
def getActionBotton_Edit(item, formatter): """Action Buttons for Overview in Web-Browser """ if type(item) is dict: item = item["obj"] resource_path = getAdapter(formatter.request, name='pics')() ttid = u"edit" + item.getObjectId() edit_url = absoluteURL(item, formatter.request) + '/@@edit.html' myAdapter = zapi.queryMultiAdapter((item, formatter.request), name='edit.html') if myAdapter is not None and canAccess(myAdapter,'render'): edit_html = u'<a href="%s">' % (edit_url) + \ u'<img id="%s" alt="Edit" src="%s/Hand.png" /></a>' % \ (ttid, resource_path) tooltip_text = _(u'edit this object') else: edit_html = u'<img id="%s" alt="Edit" src="%s/Hand_gr.png" />' % \ (ttid, resource_path) tooltip_text = _(u'editing is not permitted') tooltip = u"<script type=\"text/javascript\">tt_%s = new YAHOO." \ u"widget.Tooltip('tt_%s', { autodismissdelay:'15000', " \ u"context:'%s', text:'%s' });</script>" \ % (ttid, ttid, ttid, tooltip_text) return edit_html + tooltip