4. Получение списка шаблонов
..binpaster create –list-templates - список
доступных швблонов
plone_basic - основной выбор
5. Отвечаем «True» на вопрос о создании
GenericSetup profile.
Пакет GenericSetup позволяет регистрировать
продукт в Plone
6. Возможная ощибка
Пока игнорируем
No egg-info directory found (looked in
.StudentsManager.StudentsManager.egg-info,
.StudentsManagerbootstrap.pyStudentsManager.egg-info,
.StudentsManagerbufgStudentsManager.egg-info,
.StudentsManagerCHANGES.txtStudentsManager.egg-info,
.StudentsManagerCONTRIBUTORS.txtStudentsManager.egg-info,
.StudentsManagerudentsManager.egg-info,
.StudentsManagerREADME.txtStudentsManager.egg-info,
.StudentsManagersetup.pyStudentsManager.egg-info,
.StudentsManagersrcStudentsManager/egg-info)
7. Каталог продукта
В каталог srcStudentManagerStudentManager
располагаем файлы с кодом
В каталог profilesdefault помещаем xml-файлы для
регистрации продукта
8. Файл setup.py
В файле определяем дополнительные
пакеты, которые должны быть
установлены
9. Файл setup.py
Секция install_ requires служит для
добавления зависимых пакетов
install_requires=[ 'setuptools',
'five.grok',
],
Добавляем пакет five.grok для упрощения
регистрации в дальнейшем
10. Составляющие контент-типа
Каждый Dexterity контент-тип состоит из
схемы и конфигурационной записи FTI
Factory Type Information (FTI)–
конфигурационная запись в реестре
типов portal_types в ZMI.
Схема определяет свойства контент типа
Обычно для каждой схемы создается
отдельный файл
11. UML диаграмма продукта
Класс Division
позволяет
строить
иерархическую
структуру
организации.
Факультет->
Поток ->
Группа
12. В Plone свойства класса реализуют поля,
объявленные в схеме интерфейса класса
Схема = интерфейс, в котором определены
поля
Это позволяет использовать схему
интерфейса для разных классов
13. Определение большинства типов полей
находится в zope.schema
Обычно поля наследуют класс
plone.directives.form.Schema, который
позволяет генерировать формы на основе
схемы
14. __init__.py
В файле __init__.py создадим экземпляр
фабрики сообщений
from zope.i18nmessageid import
MessageFactory
_ =
MessageFactory(“StudentManager.StudentMan
ager”)
Фабрика сообщений инкапсулирует
обработку строковых значений в продукте, в
частности обеспечивает поддержку разных
языков переводав формах и страницах
16. Для регистрации типа в папке
profilesdefaulte создадим xml-файл
types.xml и папку type
17. В файле types.xml создается регистр всех
контент – типов продукта с указанием их
FTI
Определение основных свойств контент
типа производится в отдельном для
каждого типа файле в папке type
Имя файла определяется как имя типа.xml
В нашем случае Student.xml
18. Factory Type Information
регистрация в profiles/default/types.xml
<object name="portal_types">
<object
name=“StudentManager.StudentManager.Student"
meta_type="Dexterity FTI" />
</object>
20. <!– имя иконки -->
<property
name="content_icon">user.gif</property>
<!– разрешение на комментирование -->
<property
name="allow_discussion">True</property>
21. <!– указание на schema interface -->
<property name="schema">
StudentManager.StudentManager.IStudent
</property>
<!– определяет что класс не контейнер -->
<property name="klass">plone.dexterity.content.Item
</property>
<!– указание роли пользователя -->
<property
name="add_permission">cmf.AddPortalContent
</property>
37. В Dexterity FTI мы можем определять
схему типа тремя способами:
schema: через имя интерфейса.
model_source: XML строка,
представляющая тип. Генерируется и
сохраняется черезTTW редактор.
model_file: путь к XML файлу,
представляющему тип
38. Экспорт профиля и схемы
Произвести экспорт профиля и экспорт
типа - "Export Schema Profiles" и “Export
Scheme Models” в панели управления
39. Результат экспорта
После экспорта имеем два одноименных файла
presenter.xml
В одном из них схема
в другом ( в папке types )– регистрация типа
41. Перенос модели в файл
поместить полученный файл types.xml и
папку types в папку профиля (profile)
продукта
Очистить свойство model_source property
установить свойство a model_file:
<property name="model_file">путь к файлу
модели</property>
Например
shuttlethread.farmyard.models:animal.xml
43. Модуль plone.supermodel позволяет
добавлять в XML schema набор полей,
также как с использованием интерфейсов
Схема может быть именованной или нет
Именованная схема добавляет на форме
соответствующую вкладку
Обычно имеют дело с единственной
неименованной схемой в файле