2012-04-13 167 views
0

我在新的新Plone 4.1安裝上使用pas.plugins.sqlalchemy。 我設置Plone將電子郵件地址作爲登錄名。通過電子郵件登錄+ set_own_login_name + pas.plugins.sqlalchemy =更改地址失敗

一切都好,但如果我想通過個人信息面板更改電子郵件地址,我會得到一個錯誤: 您不是Plone會員。您可能已在根用戶文件夾中註冊。如果這是意外的,請通知管理員。

如果我將更改另一個人數據字段,我不會收到錯誤。

問題似乎是Products.CMFPlone(utils.py)的set_own_login_name函數。這裏 詳細http://pastie.org/3780218

感謝的 維託

回答

0

您是否登錄在Zope的根定義的管理員用戶?

如果是這種情況,那麼請轉到Zope根目錄下的acl_users並將其更改爲可以更改登錄名。

否則,暫時關閉emaillogin,更改您的電子郵件並重新打開emaillogin。

注意,有在utils.py代碼中的註釋(由我)這個KeyError異常升高權之前,它指向一個可能的解決方案,我真的不喜歡:

# PLIP9214: For a user in the zope root we could do something like this: 
# userfolder = member.getUser().__parent__.users 
# userfolder.updateUser(member.id, loginname) 
# But it is probably best not to touch root zope users. 
+0

嗨Maurits的,我是一個簡單的用戶(通過pas sql的身份驗證)。 – Vito 2012-04-14 08:35:16

+0

emaillogin代碼嘗試在此處執行的操作是更改您的登錄名。爲此,它會獲取所有IUserManagement插件,並在每個插件上調用'userfolder.updateUser(member.id,loginname)',直到找到插件成功。我猜想pas sql插件沒有註冊爲IUserManagement插件,或者由於某些未知原因導致通話失敗。如果你對Python調試器感到滿意,我建議你在這個set_own_login_name函數中添加一個pdb.set_trace(),看看你是否能從那裏獲得更多的信息。 – maurits 2012-04-14 14:24:22

+0

解決。 Pas.Plugins.SqlAlchemy錯過了「updateUser」方法。我會嘗試修補並通知插件的開發團隊 – Vito 2012-04-16 09:44:00

相關問題