Создание портретов участников для просмотра анонимными пользователями в Plone 4.1

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

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

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

Просто для ясности:

author.getPersonalPortrait().absolute_url()

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

2 ответа

Решение

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

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

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

Вы можете сделать это, перейдя в:

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

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

Другие вопросы по тегам