Создание портретов участников для просмотра анонимными пользователями в 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
и управление разрешениями там:) портреты простые изображения