Различия между версиями 5 и 26 (по 21 версиям)
Версия 5 от 2010-07-01 12:52:43
Размер: 4017
Редактор: RostislavDzinko
Комментарий:
Версия 26 от 2010-07-01 14:29:53
Размер: 16361
Редактор: RostislavDzinko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 7: Строка 7:
== Что такое BlueBream == == Что такое BlueBream? ==
Строка 17: Строка 17:
 * BlueBream is built on top of the Zope Tool Kit (ZTK), which has many years of experience proving it meets the demanding requirements for stable, scalable software.
 * BlueBream uses the powerful and familiar Buildout system written in Python.
 * BlueBream employs the Zope Object Database (ZODB), a transactional object database providing extremely powerful and easy to use persistence.
 * BlueBream registers components with Zope Component Markup Language (ZCML), an XML based configuration language, providing limitless flexibility.
 * BlueBream can also register components using GROK, which adds a layer replacing the declarative configuration of ZCML with conventions and declarations in standard Python.
 * BlueBream features the Zope Component Architecture (ZCA) which implements Separation of concerns to create highly cohesive reusable components (zope.component).
 * BlueBream implements Python Web Server Gateway Interface WSGI using Paste, PasteScript, and PasteDeploy.
 * BlueBream includes a number of well tested components to implement common activities. A few are of these are:
    * zope.publisher publishes Python objects on the web, emphasizing WSGI compatibility
    * zope.security provides a generic mechanism for pluggable security policies
    * zope.testing and zope.testbrowser offer unit and functional testing frameworks
    * zope.pagetemplate is an XHTML-compliant language for devloping templates
    * zope.schema is a schema engine
    * zope.formlib is a tool for automatically generating forms
 * !BlueBream построен на базе Zope Tool Kit (ZTK), который разрабатывался много лет и доказал свою надежность и соответствие потребностям к разработки стабильного, масштабируемого программного обеспечения.
 * !BlueBream использует мощную и известную систему сборки Buildout, созданную на языке Python.
 * !BlueBream использует Zope Object Database (ZODB) - транзакционную объектную базу данных, которая обеспечивает мощный и простой в использовании механизм долгосрочного хранения.
 * !BlueBream регистрирует компоненты с помощью Zope Component Markup Language (ZCML) - языка конфигураций, основанном на XML, который обеспечивает безграничную гибкость.
 * !BlueBream может также регистрировать компоненты используя GROK, который добавляет новый слой конфигурации, замещая декларативную конфигурацию ZCML конвенциями и объявлениями в стандартах Python.
 * !BlueBream обладает Zope Component Architecture (ZCA), которая реализует разделение задач для создания высоко-связуемых компонентов повторного использования (''zope.component'').
 * !BlueBream реализует Python Web Server Gateway Interface WSGI путем использования Paste, !PasteScript, и !PasteDeploy.
 * !BlueBream включает множество хорошо оттестированных компонентов, которые реализуют общие задачи. Вот несколько из них:
    * ''zope.publisher'' публикует объекты Python в веб окружении, поддерживая совместимость с WSGI
    * ''zope.security'' предоставляет общий механизм подключаемых политик безопасности policies
    * ''zope.testing'' и ''zope.testbrowser'' предлагают фреймворки для unit- и функционального тестирования
    * ''zope.pagetemplate'' - XHTML-совместимый язык разработки шаблонов
    * ''zope.schema'' - механизм схем
    * ''zope.formlib'' - инструмент для автоматической генерации форм
Строка 32: Строка 32:
BlueBream is free/open source software, owned by the Zope Foundation. Bluebream is licensed under the Zope Public License (BSD like, GPL compatible license). !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 выпускается под лицензией [[http://bluebream.zope.org/doc/1.0/glossary.html#term-zope-public-license|Zope Public License]] (BSD-подобная, GPL-совместимая лицензия).

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

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

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

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

 * Python 2.4
 * Python 2.5
 * Python 2.6

Если вы используете 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 проект? ==

Обратитесь к разделу документации [[http://wiki.python.su/%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8/Bluebream/Bluebream-%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B5-%D0%A8%D0%B0%D0%B3%D0%B8|Первые шаги]].

= Концепции =

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

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

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

 * [[http://bluebream.zope.org/|Официальный сайт]] (обновляется один раз в день)
 * [[http://bluebream.muthukadan.net/|Зеркало]] (Обновляется раз в 30 минут)
 * [[http://pypi.python.org/pypi/bluebream|Страница PyPI]]
 * [[https://mail.zope.org/mailman/listinfo/bluebream|Списки рассылки]]
 * [[http://twitter.com/bluebream|Twitter]]
 * [[http://bluebream.posterous.com/|Блог]]
 * IRC Канал: [[http://webchat.freenode.net/?randomnick=1&channels=bluebream|#bluebream на freenode.net]]
 * Ohloh.net: https://www.ohloh.net/p/bluebream
 * Buildbots: http://buildbot.afpy.org/bluebream/ http://bluebream.buildbot.securactive.org/
 * Вики страницы сообщества

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

'''@@''' - сокращенная форма записи для '''++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, ниже несколько примеров:

{{{#!highlight xml
<class class=".MyImage">
  <implements interface=".interfaces.IGalleryItemContained" />
  <require like_class="zope.app.file.interfaces.IImage />
</class>

<class class=".MySite">
  <require like_class="zope.app.folder.Folder" />
</class>
}}}

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

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

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

{{{#!highlight python
def canEdit(self):
    ppal = self.request.principal
    return canView('edit', INewsItem, ppal)
}}}

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

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

{{{#!highlight python
from zope.security.management import checkPermission
has_permission = checkPermission('zope.ModifyContent', self.context)
}}}

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

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

Пример:

{{{#!highlight python
$ ./bin/paster shell debug.ini
...
>>> import transaction
>>> from zope.component import getSiteManager
>>> from zope.app.security.interfaces import IAuthentication
>>> lsm = getSiteManager(root)
>>> lsm.unregisterUtility(lsm.getUtility(IAuthentication), IAuthentication)
>>> transaction.commit()
}}}

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

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

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

{{{#!highlight python
site = getSite()
sm = site.getSiteManager()
pau = PluggableAuthentication()
sm['authentication'] = pau
sm.registerUtility(pau, IAuthentication)
users = PrincipalFolder()
sm['authentication']['Users'] = users
sm.registerUtility(users, IAuthenticatorPlugin, name="Users")
pau.authenticatorPlugins = (users.__name__, )
pau.credentialsPlugins = ( "No Challenge if Authenticated", "Session Credentials" )
}}}

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

Общее

Что такое 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 Tool Kit (ZTK), который разрабатывался много лет и доказал свою надежность и соответствие потребностям к разработки стабильного, масштабируемого программного обеспечения.

  • BlueBream использует мощную и известную систему сборки Buildout, созданную на языке Python.

  • BlueBream использует Zope Object Database (ZODB) - транзакционную объектную базу данных, которая обеспечивает мощный и простой в использовании механизм долгосрочного хранения.

  • BlueBream регистрирует компоненты с помощью Zope Component Markup Language (ZCML) - языка конфигураций, основанном на XML, который обеспечивает безграничную гибкость.

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

  • BlueBream обладает Zope Component Architecture (ZCA), которая реализует разделение задач для создания высоко-связуемых компонентов повторного использования (zope.component).

  • BlueBream реализует Python Web Server Gateway Interface WSGI путем использования Paste, PasteScript, и PasteDeploy.

  • BlueBream включает множество хорошо оттестированных компонентов, которые реализуют общие задачи. Вот несколько из них:

    • zope.publisher публикует объекты Python в веб окружении, поддерживая совместимость с WSGI

    • zope.security предоставляет общий механизм подключаемых политик безопасности policies

    • zope.testing и zope.testbrowser предлагают фреймворки для unit- и функционального тестирования

    • zope.pagetemplate - XHTML-совместимый язык разработки шаблонов

    • zope.schema - механизм схем

    • zope.formlib - инструмент для автоматической генерации форм

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:

  • Python 2.4
  • Python 2.5
  • Python 2.6

Если вы используете 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/Bluebreamfaq (последним исправлял пользователь RostislavDzinko 2010-07-05 11:23:27)