Example #1
0
    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")
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
 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__)
Example #6
0
    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))
Example #7
0
 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
Example #8
0
    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))
Example #9
0
    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)
Example #10
0
    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))
Example #11
0
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)
Example #13
0
    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
Example #14
0
    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
Example #15
0
    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
Example #16
0
    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)
Example #18
0
    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
Example #19
0
    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)
Example #20
0
 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
Example #21
0
    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)
Example #22
0
    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')
Example #23
0
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
Example #24
0
    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')
Example #25
0
    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())
Example #26
0
    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
Example #27
0
    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)
Example #28
0
 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
Example #29
0
    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')
Example #30
0
    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')
Example #31
0
    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)
Example #32
0
    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')
Example #33
0
    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')
Example #34
0
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
Example #35
0
    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
Example #36
0
 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
Example #37
0
 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
Example #38
0
    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()
Example #39
0
    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))
Example #40
0
 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
Example #41
0
 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
Example #42
0
 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
Example #43
0
 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
Example #44
0
 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)
Example #45
0
 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)
Example #46
0
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)
Example #47
0
    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
Example #48
0
 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()
Example #49
0
 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
Example #50
0
    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
Example #51
0
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.')
Example #52
0
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)
Example #53
0
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
Example #54
0
 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''
Example #55
0
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)
Example #56
0
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
Example #57
0
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.')
Example #58
0
    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
Example #59
0
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