gpt4 book ai didi

Plone 的 portal_catalog(portal_type ="File") 没有返回我在 ZMI portal_catalog 页面中看到的所有对象

转载 作者:行者123 更新时间:2023-12-01 23:02:53 25 4
gpt4 key购买 nike

在很长一段时间没有使用它之后,我又回到使用 Plone 了。我们已经使用 Plone 4.0.5 设置了一个 Intranet。我们已将大量文档(主要是文件)上传到内联网。

该站点是使用带有 ZEO 配置的 Plone Unified Installer 安装的。添加了一些产品(鸡蛋)(如果您需要我们的 buildout.cfg 和/或 versions.cfg 的某些部分;请索取)到我们的 buildout.cfg

ZEO 服务器和客户端都在运行;我正在做:

 $ bin/client1 debug
Starting debugger (the name "app" is bound to the top-level Zope object)
... several warnings ...
>>>

现在,我像这样查询目录:
 >>> len(app.plone.portal_catalog(portal_type="File"))
17

但是,如果转到 ZMI 并遍历portal_catalog/Indexes,转到portal_type 并浏览,"file"项具有更多元素。

这可能是因为我还没有登录:
 >>> from Products.CMFCore.utils import _getAuthenticatedUser
>>> _getAuthenticatedUser(app.ca.portal_catalog)
<SpecialUser 'Anonymous User'>

如何将控制台置于管理员用户的“上下文”中?

最佳答案

目录不返回所有条目可能有多种原因:

  • 他们的许可不允许你看到他们,句号。在这方面,使用匿名用户当然无济于事。 :-)
  • 条目已过期;它们的到期日期已经过去,您无权查看它们。同样,使用非特权用户也无济于事。
  • 您正在使用多语言设置并且项目不是“当前”语言。如果您的查询包含 Language='all'此过滤器已禁用。

  • 要在控制台上设置替代用户(最好是具有 Manager 角色的用户),请使用以下代码:
    from AccessControl.SecurityManagement import newSecurityManager

    site = app['Plone'] # Adjust as needed
    # Assuming your username is 'admin', adjust as needed again:
    user = app.acl_users.getUser('admin').__of__(site.acl_users)
    newSecurityManager(None, user)

    就个人而言,每当我使用控制台时,我都会使用以下代码片段;如果把它放在我的 Quicksilver 架子里,方便取用。首先我输入:
    site_id = '<id of Plone site>' # Adjust as needed

    然后粘贴:
    import transaction, pdb
    from zope.interface import implementedBy
    from zope.component import getUtility, queryUtility, queryAdapter
    from Zope2 import debug
    from Acquisition import aq_inner, aq_parent, aq_chain
    from zope.app.component.hooks import setSite, getSiteManager
    from Testing.makerequest import makerequest
    from AccessControl.SecurityManagement import newSecurityManager, getSecurityManager

    try:
    import readline
    except ImportError:
    print "Module readline not available."
    else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

    app = makerequest(app)
    site = app[site_id]
    setSite(site)
    user = app.acl_users.getUser('admin').__of__(site.acl_users)
    newSecurityManager(None, user)

    现在我已经完成了 readline 以及我需要在我的网站上做一些真正破坏的一切!

    关于Plone 的 portal_catalog(portal_type ="File") 没有返回我在 ZMI portal_catalog 页面中看到的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150401/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com