使用python导出zope文件夹

Hec*_*out 5 python zope

我们有两台运行公司内部网站的zope服务器.一个是实时网站,一个是开发网站.我正在编写一个python脚本,可以将所有内容从开发服务器移动到实时服务器.现在,该过程涉及在zope管理界面中完成的一系列步骤.我需要自动完成所有操作,以便运行一个脚本来处理所有这些.我需要做的一件事是从实时服务器导出一个文件夹,以便我可以在更新后将其重新导入实时站点.我怎么能从python脚本中做到这一点?

我们使用的是Zope 2.8和python 2.3.4

小智 5

您可以尝试使用该文件中的函数manage_exportObjectmanage_importObject$ZOPE_HOME/lib/python/OFS/ObjectManager.py

假设我们安装了两个 Zope 2.8 实例,位于:

  • /tmp/instance/dev用于开发服务器(端口 8080)
  • /tmp/instance/prod用于生产服务器(端口 9090)

在开发服务器的ZMI中,我创建了两个文件夹/MyFolder1/MyFolder2包含一些页面模板。以下 Python 脚本导出 .zexp 文件中的每个文件夹,并将它们导入生产实例的 ZMI 中:

#!/usr/bin/python
import urllib
import shutil

ids_to_transfer = ['MyFolder1', 'MyFolder2']

for id in ids_to_transfer:
    urllib.urlopen('http://admin:password_dev@localhost:8080/manage_exportObject?id=' + id)

    shutil.move('/tmp/instance/dev/var/' + id + '.zexp', '/tmp/instance/prod/import/' + id + '.zexp')

    urllib.urlopen('http://admin:password_prod@localhost:9090/manage_delObjects?ids=' + id)
    urllib.urlopen('http://admin:password_prod@localhost:9090/manage_importObject?file=' + id + '.zexp')
Run Code Online (Sandbox Code Playgroud)