看着我的ZEO工作人员,我会看到很多:
2013-10-18T11:59:54 INFO ZPublisher.Conflict ConflictError at
/VirtualHostBase/http/www.domain.com:80/Plone/VirtualHostRoot/:
database conflict error (oid 0x533cd5, class
persistent.mapping.PersistentMapping) (78 conflicts (0 unresolved)
since startup at Mon Oct 14 04:09:45 2013)
Run Code Online (Sandbox Code Playgroud)
因为他们被记录,INFO我认为这根本不是有害的吗?
而且我想如果发生冲突是因为ZODB上的写入太多了?
在工作中,我们时不时地要求返回那么久,当它们完成时,前端(nginx)已经杀死了连接,因此用户将看不到输出(无论是好还是坏).
最糟糕的是,平衡器(haproxy)也将终止连接,然后假设服务器可以自由处理另一个请求,这意味着当服务器仍在处理旧请求时,新的请求会进入并争夺资源.
理想情况下,服务器应该一次只处理一个请求以尽可能多地重用与ZEO数据库的连接线程,因此同时运行两个请求会使服务器更慢,然后我们的一个监控系统正确地重新启动plone因为假人证明它发送时间.
所以给定一些逻辑(可能重用我们已经使用的Products.LongRequestLogger)有没有办法告诉线程处理请求停止这样做?
我开始玩Seleniumlibrary测试(使用robotframework运行),因为我们的网站有广告和指标等,每次我运行测试时,这些网址都会被加载.
有没有办法告诉selenium/robotframework不加载某些类型的URL或阻止它加载外部资源(即所有不是来自localhost的).
我需要在archetypes.querywidget上修复它,它的buildout不是创建bin/test脚本.
我应该使用buildout.coredev吗?我需要更改它的结帐才能运行测试吗?
我在Plone 5上,我想修改默认显示的列数/folder_contents.
如果我没记错的话,整个表是一个模式,在相应的标签上使用相当大的JSON data-xxx参数进行初始化.
那么,我应该深入研究JSON还是把注意力集中在JS模式上?
有没有关于如何在任何地方自定义它的文档?快速谷歌搜索没有显示任何与我相关的内容: - /
我正在关注collective.examples.userdata以在注册表单上添加一些自定义字段.
一个字段是cecepdata也有的"接受条款"和文件,并且如包装描述(或至少我理解的那样),特殊的"接受条款"字段只应在注册表上显示,但不能在@@个人信息视图中.
我还尝试在我的buildout上添加ceuserdata和一个全新的Plone站点,它也显示在@@ personal-information上,所以我想知道它是否被我误解或者那里有一个bug.
任何人都知道如何在@@注册表上显示一个字段,但将其隐藏在@@ personal-information上?
我正在尝试在我的Plone站点上创建一个控制面板加载项,用于编辑作为字典类型的注册表记录.
我的目的是将"供应商类型"存储为注册表中的字典.
我在profiles/default中的registry.xml:
<registry>
<record interface="gpcl.assets.suppliertypes.ISupplierTypes" field="supplier_types">
<value>
<element key="1">Distributor</element>
<element key="2">Manufacturer</element>
<element key="3">Service Provider</element>
</value>
</record>
</registry>
Run Code Online (Sandbox Code Playgroud)
我的界面和形式:
class ISupplierTypes(form.Schema):
""" Define settings data structure
"""
supplier_types = schema.Dict(title=u"Types of Suppliers",
key_type=schema.Int(title=u"supplier_type_id"),
value_type=schema.TextLine(title=u"supplier_type_name",
required=False),
required=False,
)
class SupplierTypesEditForm(RegistryEditForm):
"""
Define form logic
"""
schema = ISupplierTypes
label = u"Types of Suppliers"
description = u"Please enter types of suppliers"
class SupplierTypesView(grok.View):
"""
View class
"""
grok.name("supplier-types")
grok.context(ISiteRoot)
def render(self):
view_factor = layout.wrap_form(SupplierTypesEditForm, ControlPanelFormWrapper)
view = view_factor(self.context, self.request)
return view()
Run Code Online (Sandbox Code Playgroud)
我将它添加到我的profiles/default中的controlpanels.xml和portal_quickinstaller中,我安装了产品,控制面板确实显示在附加组件中并显示显示默认值的字段.不幸的是,当我尝试添加,编辑或删除时,会显示一条错误消息,指出"包含的类型错误".我认为我在创建控制面板的方法上错了. …
在我的一个项目的buildout.cfg文件中,我有这样的东西:
[buildout]
...
zcml =
my.package
plone.reload
...
Run Code Online (Sandbox Code Playgroud)
一切正常,但我仍然感到困惑的是,一些包需要在这里列出的原因是什么,以及其他人为什么不这样做.
它的目的是什么?
在进行一些研究时,我最终得到了https://pypi.python.org/pypi/munin.zope/2.1,其中说如果使用z3c.autoinclude和plone(+3.3),则不需要它.
这是否意味着如果分布上有z3c.autoinclude slug setup.py,即
entry_points="""
# -*- Entry points: -*-
[z3c.autoinclude.plugin]
target = plone
""",
Run Code Online (Sandbox Code Playgroud)
你不必关心buildout:zcml?
我正在创建相当多的Dexterity内容类型(感谢zopeskel.dexterity devs !!)但是即使我需要它们是不同的内容类型(搜索,集合......),它们中的一些将被平等地呈现.
那么,有没有办法为不同的内容类型重用相同的模板?
好吧,我让它工作但我想知道这是否是正确的方法:
from my.product.parent_type import IParentType, ParentType, TwoColumnsView
... code omitted ...
# Common folder for templates
grok.templatedir('parent_type_templates')
class SameTwoColumnsView(TwoColumnsView):
grok.context(CustomClass)
grok.require('zope2.View')
grok.template("twocolumnsview")
Run Code Online (Sandbox Code Playgroud)
任何想法?如何跨内容类型重用模板?
我有很多Dexterity内容类型,其中一些只是容器,只剩下标题和描述(来自plone.app.dexterity.behaviors.metadata.IBasic行为).
我可以通过搜索标题或描述中的文字找到它们.
但对于一些复杂的内容类型我使用collective.dexteritytextindexer来索引更多的字段并且它工作正常,我可以在我标记为要编制索引的字段上找到该文本.
但是标题和说明不再可用于搜索.我尝试过类似的东西:
class IMyContent(form.Schema):
"""My content type description
"""
dexteritytextindexer.searchable('title')
dexteritytextindexer.searchable('description')
dexteritytextindexer.searchable('long_desc')
form.widget(long_desc = WysiwygFieldWidget)
long_desc = schema.Text (
title = _(u"Rich description"),
description = _(u"Complete description"),
required = False,
)
...
Run Code Online (Sandbox Code Playgroud)
但是我无法在portal_catalog中的SearchableText列上看到标题和描述的内容,因此结果不会显示它们.
知道我错过了什么吗?
干杯,
我们有一个实用程序(collective.contentalerts),用于检查对象(比如文章)的内容是否足够(不包含坏词).
到目前为止,我们一直在使用它plone.app.contentrules来发送电子邮件.
现在我们想更进一步:
普通用户仍然可以创建他们的文章,但是当他们试图将它们公开时,如果该实用程序在其上发现了可疑内容,则应将它们置于另一种状态(即改为进行另一个工作流转换).
所以问题是:有没有办法拦截工作流转换,并且给定一些逻辑(我们的实用程序)将预期的工作流转换到另一个?
额外的好处是,常规用户不应该在工作流转换下拉列表中看到这种向审核状态的转换.
我开始创建一个需要使用Plone用户的iPhone/Android应用程序(即在网站上注册然后在手机上欣赏应用程序).
这样做的最佳方法是什么?我见过一些使用OAuth或其他技术的应用程序,这些技术目前支持Plone4(完全是4.0.3).
我有LDAP服务器(OpenLDAP)上的用户,但即使我仍然需要在Plone上记录它们,以便能够从那里向移动电话发送和检索数据.