如果我想用plone.app.multilingual翻译Archetype contenttype(例如Folder
),我会有一个非常奇怪的行为。
错误消息:
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
问题出现在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测试仍然有效。
但我无法解释为什么? 为什么没有自定义它就无法工作?
任何提示都非常感谢!
答案 0 :(得分:1)
为什么您的修复有效,可能与用户在遍历期间无法进行身份验证有关。这与用户在浏览器视图“__init__
”中可能无法进行身份验证的原因类似。
这可能是一个错误,一个带有你的修复程序的pull请求,以及一个通过没有它来证明你的观点的测试,将是首选。
通过从/Plone/error_log
中的过滤错误中删除Unauthorized(通过ZMI),您应该能够获得更好的错误消息。我不确定,absolute_url
如何在任何条件下提出未经授权。