10943
Комментарий:
|
16746
|
Удаления помечены так. | Добавления помечены так. |
Строка 105: | Строка 105: |
== Что такое /@@ и какой его синтаксис? == '''@@''' - сокращенная форма записи для '''++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? == FIXME: Это правильно ? Выход доступен со времен Zope 3.3, но по умолчанию он отключен. Для включения - добавьте следующую строчку в ''etc/site.zcml''': {{{#!highlight xml <adapter factory="zope.app.security.LogoutSupported" /> }}} |
Часто задаваемые вопросы
Содержание
-
Общее
- Что такое BlueBream?
- Почему BlueBream?
- Что такое Zope Foundation?
- Как Я могу помочь?
- Под какой лицензией выпускается BlueBream?
- Стабилен ли BlueBream достаточно для того, чтобы использовать на производственных серверах
- Какая версия Python необходима для работы BlueBream?
- Что такое KGS (Known Good Set)?
- Как мне создать новый BlueBream проект?
- Концепции
- Безопасность
Общее
Что такое 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 проект?
Обратитесь к разделу документации Первые шаги.
Концепции
Что такое компонентная архитектура
Она очень похожа на другие компонентные архитектуры и позволяет приспосабливать маленькие куски программного кода для совместной работы.
Где я могу найти ссылки на ресурсы?
Официальный сайт (обновляется один раз в день)
Зеркало (Обновляется раз в 30 минут)
IRC Канал: #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, ниже несколько примеров:
Как в коде определить, имеет ли пользователь нужные права?
Ссылка: http://mail.zope.org/pipermail/zope3-users/2006-August/004201.html
Вопрос: как мне узнать, имеет ли текущий пользователь права на некий вид? Вот примерное решение:
Используйте zope.security.canAccess и/или zope.security.canWrite.
Для определения других прав на объект, можно сделать примерно следующее:
Я зарегистрировал 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" />