Различия между версиями 12 и 13
Версия 12 от 2010-07-05 13:44:35
Размер: 7191
Редактор: RostislavDzinko
Комментарий:
Версия 13 от 2010-07-05 13:49:33
Размер: 7807
Редактор: RostislavDzinko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 70: Строка 70:
You are working in your instance or developing your package and then you discover that there is a package you may find useful, let’s say ‘ldappas’. Edit setup.py and add in install_requires the name of the package: Вы работаете в вашем экземпляре приложения или разрабатываете свой пакет, и понимаете, что он может быть полезным еще где-нибудь, скажем пакет '''ldappas'''. Отредактируйте '''setup.py''' и добавьте имя пакета в '''install_requires''':
Строка 72: Строка 72:
{{{#!highlight python
Строка 79: Строка 80:
Now it is time to rebuild your application: }}}
Строка 81: Строка 82:
Теперь наступает время для перестройки приложения:

{{{#!highlight bash
Строка 82: Строка 86:
Finally, remember to register the new package in etc/site.zcml: }}}
Строка 84: Строка 88:
И наконец, не забудьте зарегистрировать новый пакет в ''etc/site.zcml'':

{{{#!highlight xml
Строка 89: Строка 96:
If there is any new ZCML directive declared in this package, you need to include the configuration file where the directive is registered. Normally the ZCML directives will be registered in meta package. You can use the file option as given below: }}}
Строка 91: Строка 98:
Если в этом пакете есть новая ZCML директива, вам нужно подключить конфигурационный файл, в котором эта директива зарегистрирована. Принято регистрировать ZCML директивы в пакете ''meta''. Используйте опцию '''file''' как показано ниже:

{{{#!highlight xml
Строка 97: Строка 107:
Then restart the application: }}}
Строка 99: Строка 109:
Теперь нужно перезапустить приложение:

{{{#!highlight bash
Строка 100: Строка 113:
}}}

BlueBream How To

Виды по умолчанию для объектов

В BlueBream, вид обозревателя доступен посредством символов @@ перед его именем. Например, если у вас есть зарегистрированный вид с именем testview для контейнера с именем myobject, он доступен следующим образом: myobject/@@testview.

Контейнер

любой объект, реализующий интерфейс zope.content.interfaces.IContainer.

Вид также доступен без использования символов @@, при условии, что контент-объект с тем же именем не существует в рамках данного контейнера. В предыдущем примере, если объекта с именем testview нет в контейнере, то вид доступен через myobject/testview. Но BlueBream рекомендует всегда использовать символы @@ для доступа к видам.

Контент-объект

Если интерфейс предоставляет интерфейсный тип zope.app.content.interfaces.IContentType, то все объекты, предоставляющие этот интерфейс считаются контент-объектами.

В BlueBream index зарегистрирован как вид для интерфейса zope.container.interfaces.IContainer. Следовательно, если вы попытаетесь получить доступ к контейнеру без указания имени вида - BlueBream постарается отобразить вид зарегистрированный под именем index.

Вы можете изменить имя вида по умолчанию для конкретного типа объектов с помощью директивы browser:defaultView, доступной из zope.publisher. Если имя вида по умолчанию не настроено, и вы пытаетесь получить доступ к объекту не указывая имя вида, то получите ошибку ComponentLookupError со следующим сообщением: Couldn't find default view name. Например, если вы пытаетесь получить доступ к корневой папке следующим образом: http://localhost:8080/, а имя вида по умолчанию не настроено, то ошибка будет следующей:

ComponentLookupError: ("Couldn't find default view name",
<zope.site.folder.Folder object at 0xa3a09ac>,
<zope.publisher.browser.BrowserRequest instance
URL=http://localhost:8080>)

In order to use any ZCML except few built-ins like configure and include, you include the ZCML where it is defined the directive, conventionally in BlueBream it will be inside meta.zcml for any package. For example, to use defaultView directive, you need to include meta.zcml file inside zope.publisher:

  • <include package="zope.publisher" file="meta.zcml" />

Если вы создали приложение посредством шаблона проекта bluebream, у вас этой ошибки не возникнет, потому что в этом случае вид по умолчанию с именем index уже есть и настроен в конфигурационном файле application.zcml внутри главного пакета.

Если имя по умолчанию настроено, но вида с таким именем не существует, вы получите ошибку NotFound при попытке получить доступ к объекту прямо без указания имени вида. Например, если вид по умолчанию - index, а такой вид не зарегистрирован для корневой папки, то вы получите примерно следующую ошибку:

NotFound: Object: <zope.site.folder.Folder object at 0xac9b9ec>,
name: u'@@index'

Как упоминалось ранее, директива browser:defaultView определена в zope.publisher. Чтобы ее использовать, нужно включить meta.zcml директивой include:

   1 <include package="zope.publisher" file="meta.zcml" />

Например, вы можете указать вид по молчанию для IContainer следующим образом:

   1 <browser:defaultView
   2    name="index"
   3    for="zope.container.interfaces.IContainer"
   4    />

Если index зарегистрирован как имя вида по умолчанию, а вид явно не указан в URL, BlueBream попытается получить вид @@index для контейнеров. Но вы должны иметь вид, зарегистрированный под таким именем для получения к нему доступа, в противном случае будет вызвано исключение NotFound.

Подробнее о регистрации браузерных видов директивой browser:page рассматривается в документации к браузерным видам.

Добавление новой зависимости (пакета)

Вы работаете в вашем экземпляре приложения или разрабатываете свой пакет, и понимаете, что он может быть полезным еще где-нибудь, скажем пакет ldappas. Отредактируйте setup.py и добавьте имя пакета в install_requires:

   1 setup(name='ticketcollector'
   2       ...
   3       install_requires = ['setuptools',
   4                           ...
   5                           'ldappas',
   6                          ],
   7       ...

Теперь наступает время для перестройки приложения:

   1 $ ./bin/buildout

И наконец, не забудьте зарегистрировать новый пакет в etc/site.zcml:

   1 <configure xmlns="http://namespaces.zope.org/zope"
   2   ...
   3   <include package="ldappas" />
   4   ...
   5 </configure>

Если в этом пакете есть новая ZCML директива, вам нужно подключить конфигурационный файл, в котором эта директива зарегистрирована. Принято регистрировать ZCML директивы в пакете meta. Используйте опцию file как показано ниже:

   1 <configure xmlns="http://namespaces.zope.org/zope"
   2   ...
   3   <include package="some.package" file="meta.zcml" />
   4   <include package="ldappas" />
   5   ...
   6 </configure>

Теперь нужно перезапустить приложение:

   1 $ ./bin/paster serve debug.ini

Документации/Bluebream/BluebreamHowTo (последним исправлял пользователь RostislavDzinko 2010-07-05 14:52:02)