Создание портретов участников для просмотра анонимными пользователями в Plone 4.1 - PullRequest
3 голосов
/ 19 октября 2011

В Plone 4.1 я хотел бы сделать портреты участников (найденные в portal_memberdata / portraits) видимыми для анонимных пользователей.

Даже если я верну правильный URL-адрес изображения в общедоступном представлении, изображениевсегда защищен, и вместо него возвращается значение по умолчанию ('defaultUser.png').

Как я могу сделать это и отображать авторские портреты анонимным пользователям в моих окнах просмотра?

Просто чтобы уточнить:

author.getPersonalPortrait().absolute_url()

вернет правильный URL-адрес изображения.Когда изображение выбирается браузером при обращении к представлению, ресурс защищен.

Ответы [ 2 ]

3 голосов
/ 19 октября 2011

После небольшой работы с 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-адрес изображения.Если вы не укажете идентификатор, каким-то образом он не сможет отработать правильный идентификатор члена, поэтому откроется отображение пользователя по умолчанию.

1 голос
/ 19 октября 2011
def __init__(self):
    BaseTool.__init__(self)
    self.portraits=BTreeFolder2(id='portraits')

вы должны добавить разрешение на просмотр в папку portal_memberdata.portraits.

Это можно сделать, выполнив:и управление разрешениями там :) портреты простые изображения

...