Plone搜索功能在plone.app.search包中实现; 请求中包含的sort_on变量用于控制搜索模板上结果的排序顺序.
默认情况下,当此变量没有值时,Plone使用相关性作为排序顺序.
迄今为止最简单的更改方式是什么(最新的第一个)?
我正在开发一个包含使用plone.app.registry创建的控制面板的包.我按照Timo的教程,但在尝试添加额外的记录时,我面临着臭名昭着的KeyError:一个没有记录的字段.
所以我对最佳实践有几个问题:
我的第一个问题是:一个包必须在卸载时删除它的注册表?
我在我的包的registry.xml中使用了这个:
<registry>
<records interface="collective.nitf.controlpanel.INITFSettings" />
</registry>
Run Code Online (Sandbox Code Playgroud)
这在metadata.xml上:
<metadata>
<version>1</version>
<dependencies>
<dependency>profile-plone.app.registry:default</dependency>
</dependencies>
</metadata>
Run Code Online (Sandbox Code Playgroud)
但是在卸载配置文件中添加delete ="true"似乎不起作用.除了我在ZMI手动运行步骤之外,我还尝试通过名称列出所有记录而没有运气.
所以,我的第二个问题是:如何在卸载时优雅地删除控制面板记录?
要测试记录是否在注册表中,我执行以下操作:
def setUp(self):
self.portal = self.layer['portal']
setRoles(self.portal, TEST_USER_ID, ['Manager'])
# Set up the NITF settings registry
self.registry = Registry()
self.registry.registerInterface(INITFSettings)
def test_record_sections(self):
# Test that the sections record is in the control panel
record_sections = self.registry.records[
'collective.nitf.controlpanel.INITFSettings.sections']
self.failUnless('sections' in INITFSettings)
self.assertEquals(record_sections.value, set([]))
Run Code Online (Sandbox Code Playgroud)
第三个问题可能是如何测试记录是否在无意中被删除.
还有其他推荐吗?
我有一个基于Dexterity的容器,它容纳在一个基于敏捷的项目中.我需要让匿名用户在容器中添加此类型的对象.
我已经创建了一个rolemap.xml包含以下内容的文件:
<?xml version="1.0"?>
<rolemap>
<permissions>
<permission name="my.package: Add My Type" acquire="True">
<role name="Anonymous"/>
</permission>
</permissions>
</rolemap>
Run Code Online (Sandbox Code Playgroud)
我宣布许可configure.zcml:
<permission
id="my.package.AddMyType"
title="my.package: Add My Type"
/>
Run Code Online (Sandbox Code Playgroud)
最后我添加了一个像这样的自定义添加视图:
class MyAddView(dexterity.AddForm):
grok.name('MyType')
grok.require('my.package.AddMyType')
Run Code Online (Sandbox Code Playgroud)
该表单已经显示给匿名用户但是,当我按下保存按钮时,我被重定向到登录表单.
此外,登录用户也可以看到表单,这应该不会发生.
还有什么我需要做的?
在plone.recipe.zope2instance中,有一个名为的选项zodb-temporary-storage,用于替换Zope的默认临时存储定义。
什么时候推荐?有哪些优点和缺点?
我正在研究Plone.
序幕
我安装了:
oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm oracle-instantclient12.1-sqlplus-12.1.0.1. 0-1.x86_64.rpm
还有cx_Oracle.我测试了安装,一切正常:数据库连接成功.
echo $ORACLE_HOME
/usr/lib/oracle/12.1/client64
echo $TNS_ADMIN
/usr/lib/oracle/12.1/client64/admin
echo $LD_LIBRARY_PATH
/usr/lib/oracle/12.1/client64/lib
Run Code Online (Sandbox Code Playgroud)
问题
我编辑了buildout.cfg如下:
[...]
eggs =
Plone
Pillow
collective.documentviewer
Products.OpenXml
Products.AROfficeTransforms
tus
wildcard.foldercontents==2.0a7
**cx_Oracle**
[...]
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Unused options for buildout: 'environment-vars'.
Installing instance.
Getting distribution for 'cx-Oracle'.
error: cannot locate an Oracle software installation
An error occurred when trying to install cx-Oracle 5.1.3. Look above this message for any errors that were output by easy_install.
While:
Installing instance.
Getting distribution for 'cx-Oracle'.
Error: Couldn't …Run Code Online (Sandbox Code Playgroud) 单击“应用”链接时,它会在 Robot 框架中打开一个新浏览器。如何获取该页面的当前网址?这是代码:
Open Server
Set Browser Implicit Wait 60
Go To ${server}/jobs
Element Should Be Visible xpath=.//*[@id='txtjobsearch']
Input Text xpath=.//*[@id='txtjobsearch'] ${job Title search}
Element Should Contain xpath=(.//*[@class='clearfix tit-job']/div)[1] ${Job title}
Element Should Be Visible xpath=(.//*[@class='btn btn-sm btn-primary btnApply'])[1]
Click Element xpath=(.//*[@class='btn btn-sm btn-primary btnApply'])[1]
Run Code Online (Sandbox Code Playgroud)
在这一行之后,它会打开一个新窗口。如何获取新打开页面的 url 并执行输入文本等操作?
Set Browser Implicit Wait 20
Wait Until Page Contains Element xpath=.//*[@class='text-primary']
Run Code Online (Sandbox Code Playgroud) 我正在一个项目中创建一个Plone 4.3站点,该站点安装了plone.app.contenttypes作为默认内容类型.创建网站后,我会看到所有默认内容(首页和一些文件夹和集合)仍然是基于Archetypes的内容.
我想避免创建该内容,我想知道是否有更好的方法来摆脱它在后安装步骤中手动擦除它.
我默认需要一个空站点.
我在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脚本不能?
我知道可以使用GenericSetup和一个XML文件注册浏览器层,但我需要以编程方式进行注册.
这可能吗?
在plone中我只上传了800 GB的数据(主要是pdfs),它已经占用了2 TB的硬盘空间.空间到底在哪里?我正在使用collective.documentviewer及其默认设置.和plone 4.3.documentviewer存储的文件是否已更改为各种图像大小,即缩略图,大图像等,并存储在blobstorage文件夹中?
我假设Plone具有存储在Data.fs文件(Zope DB?)中的基本"系统"消息.这意味着,例如,当您退出时(英文)显示的文字显示"您现在已退出".它存储在Zope DB中的某个位置.
有没有办法改变这些消息的内容?我们有一个俄语翻译的网站,我们想修改"你现在已经注销"的消息 - 但我无法在ZMI或文件系统中的任何地方找到它.
如果我的假设是正确的,并且它们存储在Zope DB中,是否有一个很好的实用程序来浏览/修改这些内容?