2011-10-19 2 views
3

Plone 4.1에서 익명 사용자가 볼 수있는 구성원 초상화 (portal_memberdata/portraits에 있음)를 만들고 싶습니다.Plone 4.1의 익명 사용자가 구성원 초상화를 볼 수있게 만들기

공용보기에서 올바른 URL을 반환하더라도 이미지는 항상 보호되며 기본 이미지 ('defaultUser.png')가 대신 반환됩니다.

내 뷰렛 내의 익명 사용자에게이 작업을 수행하고 작성자 인물을 표시하려면 어떻게해야합니까?

그냥 명확하게 :

author.getPersonalPortrait().absolute_url() 

이미지에 올바른 URL을 반환합니다. 보기에 액세스 할 때 브라우저에서 이미지를 가져 오면 리소스가 보호됩니다.

+0

: 사용자가 이 얻을 수없는 경우 #은 초상화를 반환하지 마세요 getPersonalPortrait에서 수행 검사입니다. – Yuri

+1

그러나 verifyPermission kwarg는 항상 기본값 0으로 호출되므로이 검사는 적용되지 않습니다. – zedr

답변

3

는,이의 문제를 해결 way :

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를 찾을 수 없으므로 기본 사용자 이미지가 표시됩니다. verifyPermission하지 _checkPermission ('보기', 세로) 경우

+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

거기 권한을 관리 : 초상화는 PDB와 주변 괴롭히는 조금 후에 간단한 이미지

관련 문제