我正在尝试使用Domain Auth插件根据用户的IP地址为网站访问者分配会员角色.
我可以配置插件OK,但是我发现所有的请求都来自localhost,而不是"真正的"IP地址.
在这种情况下,我正在使用NGINX,所以我尝试通过proxy_set_header(例如http://wiki.nginx.org/HttpProxyModule)将X-Real-IP设置为$ remote_addr ,但据我所知,只是使IP成为IP标题中可用的地址.
如何将从NGINX发送到Plone的请求似乎来自远程IP地址?
我正在使用NGINX,但我也很乐意接受适用于Apache的答案.
我希望我的对象显示在ZMI左侧导航框架上的Plone站点下.找不到明显的方法来做到这一点.我怎么能做到这一点?
我们正在运行一个Zope服务器,最终有大量的Plone(4)站点.有时会出现扩展产品更新,需要重新安装才能获取配置文件设置中的更改,例如新内容类型.
手动,这意味着点击每个Plone网站portal_quickinstaller,勾选产品,按更新.如果我们谈论几十个网站,这是不太可行的,所以我试图自动化这个.基本上到目前为止,我有以下生活作为Zope根目录中的脚本(Python):
a = context.restrictedTraverse('/')
p = a['Plone']
print p.getSiteManager()
qi = p.restrictedTraverse('portal_quickinstaller')
print qi
qi.reinstallProducts('LinguaPlone')
Run Code Online (Sandbox Code Playgroud)
(简化;实际上我有一个更长的列表而不是单个Plone实例,我可能想重新安装更长的产品列表.)这会失败,并带有以下内容:
Module Products.CMFQuickInstallerTool.QuickInstallerTool, line 613, in uninstallProducts
Module Products.CMFQuickInstallerTool.InstalledProduct, line 272, in uninstall
Module Products.CMFQuickInstallerTool.InstalledProduct, line 351, in _cascadeRemove
AttributeError: 'BaseGlobalComponents' object has no attribute 'objectItems'
Run Code Online (Sandbox Code Playgroud)
从我到目前为止的调试尝试来看,BaseGlobalComponents是由Zope SiteManager返回的zope.component.getSiteManager.我如何说服快速安装程序选择正确的安装程序,即它所居住的Plone站点中的那个?
或者,我如何以一种对大型安装仍然模糊可行的方式自动重新安装产品?(ETA:我知道这不是你用cronjob自动做的事情,但我担心内部开发产品的更新是无法避免的.)
我想重新定义stock folder_contents浏览器View的安全性,以便只有具有Reviewer角色的成员才能访问它.
该类在plone.app.content.browser.foldercontents.FolderContentsView中定义
在我的custom.policy产品中,我有
浏览器/ configure.zcml中:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="custom.policy">
<browser:page
for="*"
class=".overrides.FolderContentsView"
name="folder_contents"
template="folder_contents.pt"
permission="cmf.ReviewPortalContent"
/>
</configure>
Run Code Online (Sandbox Code Playgroud)
在browser/overrides.py中
from plone.app.content.browser.foldercontents import FolderContentsView
class ProtectedFolderContentsView(FolderContentsView):
""" Customized FolderContentsView """
Run Code Online (Sandbox Code Playgroud)
但是,当我启动实例时,我得到:
zope.configuration.config.ConfigurationConflictError: Conflicting configuration actions
For: ('view', None, u'folder_contents', <InterfaceClass zope.publisher.interfaces.browser.IBrowserRequest>, <InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>)
File "src/custom.policy/custom/policy/browser/configure.zcml", line 30.2-36.6
<browser:page
for="*"
class=".overrides.FolderContentsView"
name="folder_contents"
template="folder_contents.pt"
permission="cmf.ReviewPortalContent"
/>
File "eggs/plone.app.content-2.0.7-py2.6.egg/plone/app/content/browser/configure.zcml", line 15.4-20.46
<browser:page
for="*"
class=".foldercontents.FolderContentsView"
name="folder_contents"
template="folder_contents.pt"
permission="cmf.ListFolderContents" />
Run Code Online (Sandbox Code Playgroud)
如何通过遇到冲突来完成此覆盖?
我有一个自定义注册BrowserView,你必须扩展一些userdata(z3c.form与一些字段,包括密码).成功保存这些数据后,我希望用户自动登录并重定向到站点中的其他页面.
提前感谢提示
在服务器上有几个独立的Plone buildout安装,在不同的UNIX帐户下运行.
在这个服务器上跨所有这些不同的UNIX用户共享buildout-cache文件夹是否有任何可靠的意义?由于一个Plone鸡蛋/安装量为250 - 500 MB,这将是一个小小的胜利.
访问共享文件夹的所有UNIX用户仍然可以运行buildout,这会添加新的鸡蛋
磁盘上的新蛋将可供其他用户使用,无需重新拉动,复制它们
用户是值得信赖的; 不用担心他们会为其他用户做蛋/腐败
目前的问题是,由一个UNIX用户的扩建引入的egg /不会被另一个用户写入.
我的猜测是,每次构建运行后都可能会有一些自定义sudo脚本修复鸡蛋权限.
还有其他建议的鸡蛋分享方法吗?
zope.schema提供的开箱即用的字段是否存在人类可读的文档?
并且因为可能没有任何内容覆盖整个zope.schema,下一个最佳参考是什么,不包括源代码?
在plone中,如果修改了4次,文件(或任何内容)的实际副本数量是多少?我正在使用plone 4.1,其中文件和图像存储在文件系统中.
在Plone 4中,我有一个自定义Dexterity内容类型,它有一个名为audio_artifact的NamedBlobFile字段.使用默认编辑视图编辑类型时,我看到如下URL:

这里发生了什么?我一般熟悉Zope 3资源,但在这里它看起来小部件资源正在作为参数传递@@ download视图.那是对的吗?或者我只是困惑.我怀疑后者.
我正在为基于plone的网站创建页面模板.我使用模板属性语言定义了一些变量:
<tal:macro metal:define-macro="sample" tal:define="var python: here.getThisVar();">
Run Code Online (Sandbox Code Playgroud)
现在我想var在extern javascript文件中使用,我通过单击模板中的按钮来调用.如何传输我的变量,我可以在我的javascript文件中使用它?