2011-10-19 57 views
3

在Plone 4.1中,我想使匿名用戶可以查看成員肖像(可在portal_memberdata/portraits中找到)。使Plone 4.1中的匿名用戶可以看到成員肖像

即使我將正確的url返回給公共視圖中的圖像,圖像也會始終受到保護,而返回默認值('defaultUser.png')。

我該如何做到這一點,並將作者肖像顯示給我的Viewlets中的匿名用戶?

只是爲了澄清:

author.getPersonalPortrait().absolute_url() 

將正確的網址返回圖像。當訪問視圖時,當瀏覽器獲取圖像時,該資源將受到保護。

+0

如果verifyPermission而不是_checkPermission(「查看」,縱向): #不要返回肖像,如果用戶無法找到它 這是getPersonalPortrait做了檢查。 – Yuri

+1

但是,verifyPermission kwarg總是以0作爲默認值調用,所以此檢查從不強制執行。 – zedr

回答

3

一點與PDB周圍催促後,我解決了這個問題方式:

def get_author_image(self, member_id): 
    """ 
    Fetch the author portrait image url accoding to member_id 
    """ 
    mtool = getToolByName(self.context, 'portal_membership') 
    mtool.getPersonalPortrait(id=member.id) 

祕密是通過id kwarg。奇怪的,但它的作品。

這不是一個權限問題,而是getPersonalPortrait將正確的url返回給圖像的方式上的一個問題。如果你沒有指定id,那麼它將無法解決正確的成員id,因此可以回退顯示默認的用戶圖像。

+1

這是因爲成員對象沒有getPersonalPortrait方法。它是從portal_membership工具獲得的,該工具返回當前經過身份驗證的成員肖像,如果沒有給出id。 您應該相應地更新您的代碼以避免混淆: return mtool.getPersonalPortrait(id = member.id) – quyetnd

1
def __init__(self): 
    BaseTool.__init__(self) 
    self.portraits=BTreeFolder2(id='portraits') 

您必須將查看權限添加到portal_memberdata.portraits文件夾。

您可以通過要做到這一點:

http://mysite.xx/portal_memberdata/portraits/manage_main

和管理權限,有:)畫像簡單的圖像

相關問題