我要求将数据从Plone驱动的(现在离线)站点移动到新的Django站点.
这些是我的版本信息:
Zope版本(未发行版本,python 2.1.3)
Python Version 2.1.3(#1,Sep 19 2002,13:15:46)[GCC egcs-2.91.66 19990314/Linux(egcs-1.1.2发布)]
CMFPlone(已安装产品CMFPlone(1.0.1))2003-04-11 01:17
此外,我有完整的Data.fs和几个导出到xml/zexp的Plone文件夹
什么是好的策略?
如何访问六年前的ZODB?
我正试图进入Python,更具体地说,是Zope和Plone.我读过"专业Plone开发"一书,其中一件事就是必须使用版本控制.但是这本书没有进一步扩展这个主题.这导致两个问题.
第一:SVN还是git?(我的研究指向git,如果只是为了学习它.到目前为止我只使用过SVN.)
第二:版本控制应该处理哪些文件?设置和我自己的代码?整个Zope目录?肯定不是data.fs吗?不是.pyc文件,我很确定.这些天我因为这个原因从Plone休息了一段时间,我找不到一个好的指南.简而言之,到目前为止,当我在本地PC和我的Web服务器之间同步数据时,事情就破裂了.厉害.而且我不确定为什么.缺少某些更新,或者某些特定于平台的文件已更新.我的家用电脑是64位Ubuntu,我的远程网络服务器是32位RHEL.感觉像是一团糟,就像这样一个危险的混乱,我有点担心回到它附近.
有没有办法知道版本控制系统应该处理哪些文件,哪些不应该?
谢谢.
我有以下代码片段来修补文件夹:
ATFolderSchema = ATContentTypeSchema.copy() + \
ConstrainTypesMixinSchema.copy() + NextPreviousAwareSchema.copy()
finalizeATCTSchema(ATFolderSchema, folderish=True, moveDiscussion=False)
field = StringField("rafal_shortdescription",
schemata = "default",
widget = StringWidget(
label = _(u"label_shortdescription",
default=u"Short Description"),
description = _(u"help_shortdescription",
default=u"Used in tabs."),
),
),
ATFolderSchema.addField(field)
Run Code Online (Sandbox Code Playgroud)
并且最后一行抛出:
File "/home/rafal/projects/vidensportalen_v2/eggs/Products.Archetypes-1.6.4-py2.6.egg/Products/Archetypes/Schema/__init__.py", line 198, in _validateOnAdd
raise ValueError, "Object doesn't implement IField: %r" % field
zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/home/rafal/projects/vidensportalen_v2/parts/instance/etc/site.zcml", line 12.2-12.39
ZopeXMLConfigurationError: File "/home/rafal/projects/vidensportalen_v2/eggs/Plone-4.0.2-py2.6.egg/Products/CMFPlone/meta.zcml", line 39.4-43.10
ValueError: Object doesn't implement IField: <Field rafal_shortdescription(string:rw)>
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
我有一个源自 ATBTreeFolder 的文件夹内容类型,它在 plone 4(实际上在 Products.Archetypes 中)将排序设置为“无序”。
如果我继续设置要排序的顺序,这只是一个空字符串,则文件夹会混淆并且不会向我显示文件夹的内容。事实上,我会得到这样的错误:
File "buildout-cache/eggs/plone.folder-1.0.1-py2.6.egg/plone/folder/default.py", line 130, in getObjectPosition
raise ValueError('No object with id "%s" exists.' % id)
ValueError: No object with id "someid" exists.
Run Code Online (Sandbox Code Playgroud)
我假设需要运行一些迁移才能在最初无序的文件夹上设置排序,但我在 plone.app.folder 和 plone.folder 中找不到任何可用于这种情况的东西。
我有一个计划的工作(我正在使用apscheduler.schedulerlib),需要访问plone站点对象,但是在这种情况下,我没有上下文。我订阅了IProcessingStart事件,但不幸的是getSite()函数return None。
另外,是否有编程方式从Zope Server根目录获取特定的克隆站点?
附加信息:
我有这样的工作:
from zope.site import hooks
sched = Scheduler()
@sched.cron_schedule(day_of_week="*", hour="9", minute="0")
def myjob():
site = hooks.getSite()
print site
print site.absolute_url()
catalogtool = getToolByName(site, "portal_catalog")
print catalogtool
Run Code Online (Sandbox Code Playgroud)
该site变量始终None位于APScheduler作业中。并且我们需要有关该站点的信息以正确运行该作业。
我们避免使用公共URL执行,因为用户可以直接执行作业。
我正在尝试获取z3c form.Form来填充其信息,而不是在url中创建get参数,我想使用publishTraverse.
所以这是我的代码的一部分:
my_object_view.py:
class EditMyObject(form.Form):
fields = field.Fields(IMyObject)
ignoreContext = False
myObjectID = None
def publishTraverse(self, request, name):
print "Is this firing?"
if self.myObjectID is None:
self.myObjectID = name
return self
else:
raise NotFound()
def updateWidgets(self):
super(EditMyObject,self).updateWidgets()
#set id field's mode to hidden
def getContent(self):
db_utility = queryUtility(IMyObjectDBUtility, name="myObjectDBUtility")
return db_utility.session.query(MyObject).filter(MyObject.My_Object_ID==self.myObjectID).one()
#Button handlers for dealing with form also added
.....
from plone.z3cform.layout import wrap_form
EditMyObjectView = wrap_form(EditMyObject)
Run Code Online (Sandbox Code Playgroud)
在我的浏览器文件夹中的configure.zcml文件中:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
xmlns:zcml="http://namespaces.zope.org/zcml"
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="my.object">
<browser:page
name="myobject-editform"
for="*"
permission="zope2.View" …Run Code Online (Sandbox Code Playgroud) 我在Plone中获取Python脚本以查找外部方法时遇到问题.鉴于三个不同的对象:
CloneList(Id和函数名称)的外部方法使用此成功引用它的DTML文档
<dtml-var "CloneList(PAGE,ORG,STATUS,CGAP_DATA_HOME,BASE)">
Run Code Online (Sandbox Code Playgroud)一个Python脚本,通过这个引用外部方法......
return CloneList(PAGE,ORG,STATUS,CGAP_DATA_HOME,BASE)
Run Code Online (Sandbox Code Playgroud)DTML文档工作正常但Python脚本由于某种原因抛出:
Error Value: global name 'CloneList' is not defined
Run Code Online (Sandbox Code Playgroud)
为什么DTML模板可以看到CloneList,但Python脚本不能?
我遇到了buildout配置的"本地翻译"覆盖问题.我想使用额外的conf参数"zope_i18n_compile_mo_files"覆盖plone的一些标准标签,其中一个文件夹放在buildout的目录中(plone 4.3):"locales/it/LC_MESSAGES/plone.po"在另一个Plone 4.1安装中,它运行良好.这些安装之间的唯一区别是plone版本(4.1对4.3)和架构(独立对比zeo集群).
这是我的构建部分:
[instance-settings]
user = admin:admin
debug-mode = off
verbose-security = off
blob-storage = ${buildout:directory}/var/blobstorage
effective-user = ${config:system-user}
products = ${buildout:directory}/products
eggs =
${plone:eggs}
zcml =
${plone:zcml}
resources = ${buildout:directory}/resources
environment-vars =
PTS_LANGUAGES it en
LANG it_IT.utf8
TZ Europe/Rome
zope_i18n_allowed_languages it en
zope_i18n_compile_mo_files true
Run Code Online (Sandbox Code Playgroud)
有什么问题?
我正在制作一个工作流程,从简单发布工作流作为基础开始(复制并粘贴)并将其重命名为my_personal_workflow
id为my_personal_workflow标题为我的个人工作流程
在我的州,我添加了一个名为draft的状态(title是Draft,id是draft)并将其设置为默认状态,并删除了其他状态.目前我正在尝试添加另一个id为'awaiting_his_approval'的状态,但是当我点击Add时,我收到一条消息,而不是创建状态.
We’re sorry, but there seems to be an error…
Here is the full error message:
Display traceback as text
Traceback (innermost last):
Module ZPublisher.Publish, line 138, in publish
Module ZPublisher.mapply, line 72, in mapply
Module ZPublisher.Publish, line 53, in missing_name
Module ZPublisher.HTTPResponse, line 741, in badRequestError
BadRequest: <h2>Site Error</h2>
<p>An error was encountered while publishing this resource. </p>
<p><strong>Invalid request</strong></p>
The parameter, <em>ids</em>, was omitted from the request.
<p>Make sure to specify all required parameters, and try …Run Code Online (Sandbox Code Playgroud)