python - 使用条件规则执行随机 python 脚本 Zope/Plone

标签 python scripting plone zope run-script

我目前正在为 plone 网站添加一些功能,我希望能够使用内容规则运行 python 脚本。例如,我写了一篇文章,我想发表它:使用条件触发的规则我想运行与对象无关的特定脚本。

我已经安装了Runscript但问题是显然脚本必须与触发操作的对象相关。

我有一个简单的脚本,它只打开一个文本文件并在其中写入“Hello World”:

with open("hello.txt", "w") as fichier:
    fichier.write("Hello world")

plone 在我的脚本中出现以下错误(在 plone 之外工作):

Module script, line 1, in hello<br/> <FSPythonScript at /Plone2/hello used for /Plone2/news/azertyazert> Line 1<br/> NameError: global name 'open' is not defined

在其他脚本上我也得到页面我没有足够的权限来更改文章的状态(因此触发条件规则)。

无论如何,那是关于 Runscript 的,有没有人知道另一种在触发规则时执行脚本的方法,或者如何使 runscript 成为任何脚本?

最佳答案

Zope/Plone 中的 Python 脚本在受限 环境中运行。抛出错误是因为您无法从那里的文件系统打开文件。

使用 External Method如果您想执行不受限制的 Python 代码,则改为指向文件系统存储的脚本。

runscript 操作仅使用object 作为上下文。您的脚本可以随意忽略该上下文。

关于python - 使用条件规则执行随机 python 脚本 Zope/Plone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727459/

相关文章:

python - 在正整数的有序列表中找到最大的正增量

python - 2个数字列表之间的余弦相似度

python - 在 SQL Server 中编写从备份创建数据库的脚本

workflow - 在 Plone 工作流的不同阶段分配来自不同组的审阅者

python - 在 Plone 4 的文件夹中限制每个成员一个内容项

plone - 使用 Diazo 即时删除属性

python - sqlite3.操作错误: table test has no column named

python - Jupyter Notebook 不记得我在上面的单元格中创建的变量

linux - 新手 : Script to change directories

c - 自动接触所有使用特定#define (#ifdef foo/#endif) 的文件