在我的 plone 插件的 setup.py 中,我定义了一个控制台脚本
do_something
:
entry_points="""
...
[console_scripts]
do_something = my.addon.scripts.do_something
...
现在,在我的脚本中我想访问克隆站点。我怎样才能在 Plone 6 中做到这一点?
我需要类似于我们在 Plone 4 中使用的 get_plone_site 的东西。
这里由erral回答。我复制了他的答案:
控制台脚本在构建中创建脚本,但它们无权访问 zope 实例本身。它们独立于 Zope 进程运行,因此如果您需要与 Plone 站点交互,您应该使用 REST API。
相反,您可以在 setup.py 中定义 [zopectl.command] 部分,这将创建额外的 bin/instance XXXX 命令,这些命令将可以通过 app.Plone 变量访问 Zope 数据库。
这是一些演示代码:
设置.py
[zopectl.command]
reindex_catalog_indexes = addon.scripts.reindex_catalog_indexes:main
addon.scripts.reindex_catalog_indexes.py
from plone import api
from zope.component.hooks import setSite
import transaction
def main(app, *args):
setSite(app.Plone)
# ...
transaction.commit()