如果我想用Folder翻译一个原型内容类型(例如plone.app.multilingual ),我会有一种非常奇怪的行为。
错误信息:
Insufficient Privileges
You do not have sufficient privileges to view this page. If you believe you are
receiving this message in error, contact the site administration.我的环境:
我的用例:
我可以通过首先在网站的英文部分创建一个内容(文件夹)来重现这个问题。内容是私有的,因为这是新内容的默认状态。
然后,通过单击“翻译”菜单-> create German,尝试将内容翻译成德语。完成了..。出现错误Insufficient Privileges。
如果我安装了一个普通的Plone 4.3.2和plone.app.multilingial,而没有我的大量插件,一切都很好。我很确定其中一个加载项有问题,但我需要了解是什么导致了这个问题。这不重要,哪个插件破坏了这个网站。
更远..。
由于这是一个权限问题,我首先尝试发布所有内容,然后将内容翻译成德语。效果很好!
下一步是调试到plone.app.multilingual中。我最后进了add.py AddTraverser
如果url的某一部分不是公共访问的(匿名的?),那么这个问题就出现在redirect on line 37上。错误就会发生。
奇怪的是,DX部件和AT部件的实现是不同的。
我将AT部件实现更改为:
self.context.REQUEST.set('type', name)
view = queryMultiAdapter((self.context, self.context.REQUEST),
name="add_at_translation")
return view.__of__(self.context)而不是:
baseUrl = self.context.absolute_url()
url = '%s/@@add_at_translation?type=%s' % (baseUrl, name)
return self.request.response.redirect(url)这个完全解决了我的案子。而且所有的plone.app.multilingual测试都还在工作。
但我不能解释为什么?如果没有定制,它为什么不能工作?
任何提示都是非常感谢的!
发布于 2014-08-09 05:14:52
您的修补程序为什么工作,可能与用户在遍历过程中可能没有经过身份验证有关。这类似于为什么在浏览器视图的__init__期间用户可能没有经过身份验证。
这可能是一个错误,并使用您的修补程序的拉请求,以及通过失败来证明您的观点的测试,这将是首选的。
您应该能够从/Plone/error_log (通过ZMI)中的过滤错误中删除未经授权的错误消息,从而获得更好的错误消息。我不确定,absolute_url在任何情况下都是如何引发未经授权的。
https://stackoverflow.com/questions/23109624
复制相似问题