首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python导出zope文件夹

使用python导出zope文件夹
EN

Stack Overflow用户
提问于 2009-05-28 17:55:42
回答 3查看 1.3K关注 0票数 5

我们有两个zope服务器运行我们公司的内部站点。一个是实时站点,另一个是开发站点。我正在编写一个python脚本,用于将所有内容从开发服务器移动到实时服务器。现在,这个过程涉及到在zope管理界面中完成的一系列步骤。我需要让所有这些都自动化,这样运行一个脚本就可以处理所有的事情。我需要做的一件事是从实时服务器导出一个文件夹,以便我可以在更新后将其重新导入到实时站点中。我如何在python脚本中做到这一点?

我们使用的是Zope2.8和python 2.3.4

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-06 16:03:15

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

假设我们安装两个Zope2.8实例,位于:

开发服务器的

  • /tmp/instance/dev (生产服务器的端口8080)
  • /tmp/instance/prod (端口9090)

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

代码语言:javascript
复制
#!/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')
票数 4
EN

Stack Overflow用户

发布于 2009-06-15 17:17:58

为了使其更通用,并允许复制不在根目录中的文件夹,我将执行以下操作:

代码语言:javascript
复制
#!/usr/bin/python
import urllib
import shutil

username_dev = 'admin'
username_prod = 'admin'
password_dev = 'password_dev'
password_prod = 'password_prod'
url_dev = 'localhost:8080'
url_prod = 'localhost:9090'

paths_and_ids_to_transfer = [('level1/level2/','MyFolder1'), ('level1/','MyFolder2')]

for path, id in ids_to_transfer:
    urllib.urlopen('http://%s:%s@%s/%smanage_exportObject?id=%s' % (username_dev, password_dev, url_dev, path, id))

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

    urllib.urlopen('http://%s:%s@%s/%smanage_delObjects?ids=%s' % (username_prod, password_prod, url_prod, path, id))
    urllib.urlopen('http://%s:%s@%s/%smanage_importObject?file=%s.zexp' % (username_prod, password_prod, url_prod, path, id))

如果我有代表的话,我会把这个加到另一个答案里,但是……如果有人想合并它们,请继续。

票数 3
EN

Stack Overflow用户

发布于 2009-06-20 17:21:05

如果您真的移动了所有内容,您可能只需移动Data.fs即可。但除此之外,上面的导入/导出是一个很好的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/922319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档