Различия между версиями 19 и 23 (по 4 версиям)
Версия 19 от 2010-07-01 14:05:35
Размер: 10943
Редактор: RostislavDzinko
Комментарий:
Версия 23 от 2010-07-01 14:21:09
Размер: 14266
Редактор: RostislavDzinko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 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)
}}}

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

Общее

Что такое 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)

Документации/Bluebream/Bluebreamfaq (последним исправлял пользователь RostislavDzinko 2010-07-05 11:23:27)