Версия 29 от 2010-07-01 14:34:02

Убрать это сообщение

Часто задаваемые вопросы

Общее

Что такое BlueBream?

BlueBream - готовый к использованию свободный/с открытым исходным кодом фреймворк для создания веб приложений, написанный на языке программирования Python. BlueBream предоставляет компонентную архитектуру, транзакционную объектную базу данных, хорошо интегрированную модель безопасности и много других возможностей.

BlueBream берет свое начало из сообщества Zope, созданного в 1998 году. Изначально основополагающие технологии Zope были разработаны в Zope Corporation. Разработка BlueBream началась в конце 2001 года. В ноябре 2004 года была выпущена первая версия. BlueBream - полностью переписанный вариант, который сохраняет только объектную базу данных ZODB. Архитектура BlueBream порождена потребностями больших компаний, и нацелена на создание корпоративных (enterprise) веб приложений с использованием новейших парадигм в разработке программного обеспечения. На проект очень сильно повлияла концепция экстремального программирования, поэтому для ускорения процесса разработки BlueBream проводятся спринты. В 2006 году был создан фонд Zope, целью которого стала помощь в организации и создании связей с сообществом Zope.

Почему BlueBream?

Вот несколько особенностей, которые отличают BlueBream от других веб фреймворков языка Python:

BlueBream - свободное/с открытым исходным кодом программное обеспечение, является собственностью Zope Foundation. !Bluebream выпускается под лицензией Zope Public License (BSD-подобная, GPL-совместимая лицензия).

Что такое Zope Foundation?

Из http://foundation.zope.org:

Целью Zope Foundation является продвижение, управление, и разработка
платформы Zope. Достигается цель путем поддержки сообщества Zope.
Наше сообщество включает открытое сообщество вкладчиков в
программное обеспечение Zope, вкладчиков в документацию и веб инфраструктуру,
а также сообщество предприятий и 
организаций, использующих Zope.

Zope Foundation владеет авторскими правами на программное обеспечение Zope,
множества расширений и связанного программного обеспечения.  
Zope Foundation также управляет сайтом ''zope.org'' и инфраструктурой
сотрудничества.

Для более подробной информации обратитесь к: http://foundation.zope.org/about

Как Я могу помочь?

Если вы заинтересованы в оказании помощи сообществу, у вам есть время, - обучитесь компонентной архитектуре и BlueBream, и принимайте участие в любой из областей разработки. Посещайте на IRC канал: #bluebream at irc.freenode.net. Также присоединяйтесь к спискам рассылки: https://mail.zope.org/mailman/listinfo/bluebream. Вот вики страница с более подробной информацией: http://wiki.zope.org/bluebream/ContributingToBlueBream.

Под какой лицензией выпускается BlueBream?

BlueBream выпускается под лицензией Zope Public License (BSD-подобная, GPL-совместимая лицензия).

Стабилен ли BlueBream достаточно для того, чтобы использовать на производственных серверах

Да, он достаточно стабилен для использования в производственном (production) окружении. BlueBream (раньше Zope 3) уже используется в ряде больших проектов. Разработка BlueBream, наверное, никогда не закончится, по крайней мере, пока он соответствует нашим требованиям :)

Какая версия Python необходима для работы BlueBream?

BlueBream 1.0 поддерживает следующие версии языка Python:

Если вы используете 64-битную платформу, рекомендуется использовать Python 2.6.

Что такое KGS (Known Good Set)?

Начиная с версии Zope 3.4, Zope 3 (BlueBream) разделен на маленькие пакеты, называемые "яйцами", которые выпускаются независимо друг от друга. KGS - набор таких яиц, которые известны как хорошо работающие вместе. Их список можно найти в версионном файле Buildout.

Индекс пакета KGS для zope 3.4: http://download.zope.org/zope3.4/ Новые версии файла будут доступны здесь: http://download.zope.org/bluebream/

Как мне создать новый BlueBream проект?

Обратитесь к разделу документации Первые шаги.

Концепции

Что такое компонентная архитектура

Она очень похожа на другие компонентные архитектуры и позволяет приспосабливать маленькие куски программного кода для совместной работы.

Где я могу найти ссылки на ресурсы?

Что такое /@@ и какой его синтаксис?

@@ - сокращенная форма записи для ++view++. (Мнемонически, это выглядит как пара глаз)

Для того, чтобы указать, что вы хотите получить вид с именем bar контент-объекта foo, вам необходимо (в компактной форме) перейти по ссылке .../foo/@@bar вместо .../foo/++view++bar.

Заметьте также, что даже @@ не нужен, если контейнер foo не содержит элемента с именем bar - он служит только для того, чтобы различать виды и содержимое контейнера.

@@ также используется для статических ресурсов. Для получения доступа к зарегистрированному статическому ресурсу с именем logo.png, вы можете использовать /@@/logo.png, или его эквивалент /++resource++logo.png. logo.png - это регистрационное имя файла, при этом физическое имя файла может быть совсем другим.

То же самое касается и папки ресурсов с именем images: /@@/images/logo.png эквивалентно /++resource++images/logo.png. В этом случае, logo.png - реальное имя файла, размещенного в зарегистрированной папке с ресурсами.

Безопасность

Как настроить несколько классов с одинаковыми правами доступа?

Ссылка: http://mail.zope.org/pipermail/zope3-users/2007-June/006291.html

Используйте атрибут like_class тега required, ниже несколько примеров:

   1 <class class=".MyImage">
   2   <implements interface=".interfaces.IGalleryItemContained" />
   3   <require like_class="zope.app.file.interfaces.IImage />
   4 </class>
   5 
   6 <class class=".MySite">
   7   <require like_class="zope.app.folder.Folder" />
   8 </class>

Как в коде определить, имеет ли пользователь нужные права?

Ссылка: http://mail.zope.org/pipermail/zope3-users/2006-August/004201.html

Вопрос: как мне узнать, имеет ли текущий пользователь права на некий вид? Вот примерное решение:

   1 def canEdit(self):
   2     ppal = self.request.principal
   3     return canView('edit', INewsItem, ppal)

Используйте zope.security.canAccess и/или zope.security.canWrite.

Для определения других прав на объект, можно сделать примерно следующее:

   1 from zope.security.management import checkPermission
   2 has_permission = checkPermission('zope.ModifyContent', self.context)

Я зарегистрировал PAU в корне сайта, и теперь не могу войти как zope.Manager. Что мне делать?

Запустите отладочную оболочку и снимите регистрацию с утилиты. Это позволит вам войти в сайт с правами, которые определены в securitypolicy.zcml.

Пример:

   1 $ ./bin/paster shell debug.ini
   2 ...
   3 >>> import transaction
   4 >>> from zope.component import getSiteManager
   5 >>> from zope.app.security.interfaces import IAuthentication
   6 >>> lsm = getSiteManager(root)
   7 >>> lsm.unregisterUtility(lsm.getUtility(IAuthentication), IAuthentication)
   8 >>> transaction.commit()

Когда вы выйдете из отладки и запустите сервер, то получите возможность войти на сайт как пользователь, который определен в principals.zcml. Он должен иметь право zope.Manager.

Во избежание таких ситуаций, либо предоставьте роль менеджера пользователю, который определен в PAU, либо создайте папку глубже корневой, сделайте ее сайтом, и зарегистрируйте PAU в ней. Тогда вы по прежнему сможете входить в корень сайта и иметь полные права.

Как мне настроить аутентификацию (используя PAU)?

   1 site = getSite()
   2 sm = site.getSiteManager()
   3 pau = PluggableAuthentication()
   4 sm['authentication'] = pau
   5 sm.registerUtility(pau, IAuthentication)
   6 users = PrincipalFolder()
   7 sm['authentication']['Users'] = users
   8 sm.registerUtility(users, IAuthenticatorPlugin, name="Users")
   9 pau.authenticatorPlugins = (users.__name__, )
  10 pau.credentialsPlugins = ( "No Challenge if Authenticated", "Session Credentials" )

Как мне выйти из BlueBream?

FIXME: Это правильно ?

Выход доступен со времен Zope 3.3, но по умолчанию он отключен. Для включения - добавьте следующую строчку в etc/site.zcml:

   1 <adapter factory="zope.app.security.LogoutSupported" />

Почему я получаю ошибку адаптации ILoginPassword при использовании login.html?

Ссылка: https://mail.zope.org/pipermail/zope3-users/2010-January/008745.html

Вопрос: Я получаю такую ошибку, когда пытаюсь зайти на вид login.html.

.../eggs/zope.principalregistry-3.7.0-py2.5.egg/zope/principalregistry/principalregistry.py",
line 82, in unauthorized
   a = ILoginPassword(request)
TypeError: ('Could not adapt', <zope.publisher.browser.BrowserRequest
instance URL=http://localhost:9060/@@login.html>, <InterfaceClass
zope.authentication.interfaces.ILoginPassword>)

Вам следует включить пакет zope.login в ZCML конфигурацию (site.zcml), так как регистрация адаптера производится именно там:

<include package="zope.login" />