5. Проект «ИС медиа-холдинга»
Холдинг «Cinema Group» – фирма,
обладающая несколькими кинотеатрами
Фирма имеет ограниченное
представительство в Интернет, но хотела
бы расширить его с целью:
предоставления возможности
оперативного информирования об идущих
кинофильмах
для предварительного бронирования
билетов на киносеансы
8. Требования
Сайт должен визуально представлять торговую
марку холдинга
Сайт должен отображать информацию о всех
кинотеатрах
Обычные сотрудники кинотеатра должны быть
способны изменять информацию о кинотеатре
Сотрудники кинотеатра должны иметь
возможность вводить и изменять информацию
как о идущих фильмах, так и о предстоящих
событиях
Сотрудник и могут публиковать информацию о
новых фильмах и изменять ее после премьеры
фильма
9. Пользователь должен получать информацию о
месте и времени демонстрации выбранного
фильма
Расписание демонстраций фильмов изменяется
и запрашивается с использованием
существующей реляционной базы данных
Можно просматривать информацию как о
фильмах находящихся в прокате , так и
ожидающих проката в ближайшее время
Пользователь может выбирать в качестве
критерия поиска и просмотра информации о
фильме как расположение кинотеатра, так и
время показа
10. Пользователь может резервировать билеты
через сайт
Пользователь получает и оплачивает билеты в
кинотеатре
Система заказа билетов должна
взаимодействовать с уже существующей
системой заказа, использующую RDBM
Все медиаресурсы на сайте должны быть
снабжены специальным Digital Asset
Management Code, который используется для
предоставления доступа к ресурсам сторонними
система
11. Пользователи не обязаны регистрироваться на сайте,
но регистрационные данные должны требоваться при
заказе билетов
Пользователь может указывать наиболее
предпочтительные для него кинотеатры и получать о
них информацию в личном кабинете
Пользователи могут регистрироваться и
авторизоваться используя свою учетную запись в
Facebook
Пользователи должны иметь возможность посылать
запросы по электронной почте на сайт, если у них есть
вопросы или пожелания
Пользователи должны иметь возможность обсуждать
фильмы и определять их рейтинг
16. Section Purpose Content
types
Видимость
Home Front page, contains general information Folder,
Page
все
About Optilux General information about Optilux
Cinemas
Folder,
Page
все
About
membership
Information about membership benefits Folder,
Page
все
Films Container for films, including film listing Film
Folder
все
First film Information about a film currently
showing
Film все
Unpublished
film
A film not yet visible to the public Film штат
Cinemas Container for cinemas, including listings Cinema
Folder
все
Region one Container for cinemas in one region Cinema
Folder
все
Promotion A promotion specific to Region one Promotion все
17. Видимость
Cinema one A cinema in Region one Cinema все
Screening
times
Listing of screening times for films Screening все
Reserve Form to reserve tickets for a
screening
Reservation Member
Cinema two Another cinema in Region one Cinema все
Promotion A promotion specific to Cinema two Promotion все
Future
promotion
A promotion not yet visible Promotion Staff
Corporate
information
General corporate information Folder, Page все
Project one A project, visible to all staff Folder Staff
Project two Another project, private to one
group
Folder Some staff
20. Генерация скелета продукта
Используем paster установленный для
системного Python 2.6
C:>easy_install "ZopeSkel<2.99“
paster create –t plone example.conference
Выбираем режим создания "easy"
Отвечаем «True» на вопрос о создании
GenericSetup profile.
21. setup.py
Опция install_ requires служит для
добавления зависимых пакетов
install_requires=[ 'setuptools', 'Plone',
'plone.app.dexterity',
'collective.autopermission', ],
entry_points=""" [z3c.autoinclude.plugin]
22. Каждый Dexterity контент-тип состоит из
схемы и FTI
Factory Type Information –
конфигурационная запись в portal_types в
ZMI.
Обычно для каждой схемы создается
отдельный файл
23. Схема = интерфейс, в котором определены
поля
Определение большинства типов полей
находится в zope.schema.
Обычно поля наследуют класс
plone.directives.form.Schema, который
позволяет генерировать формы на основе
схемы
25. __init__.py
from zope.i18nmessageid import
MessageFactory
_ = MessageFactory("example.conference")
Фабрика сообщений инкапсулирует
обработку строковых значений в
продукте, в частности согласование
перевода
26. Presenter type, presenter.py
from five import grok
from zope import schema
from plone.directives import form, dexterity
from plone.app.textfield import RichText
from plone.namedfile.field import
NamedImage
from example.conference import _
27. class IPresenter(form.Schema):
"""A conference presenter. Presenters can be
added anywhere. """
title = schema.TextLine( title=_(u"Name"), )
description = schema.Text( title=_(u"A short
summary"), )
bio = RichText( title=_(u"Bio"), required=False )
picture = NamedImage( title=_(u"Picture"),
description=_(u"Please upload an image"),
required=False, )
28. Program type, program.py
from five import grok
from zope import schema
from plone.directives import form, dexterity
from plone.app.textfield import RichText
from example.conference import _ class
29. IProgram(form.Schema):
"""A conference program. Programs can contain
Sessions. """
title = schema.TextLine( title=_(u"Program name"), )
description = schema.Text( title=_(u"Program
summary"), )
start = schema.Datetime( title=_(u"Start date"),
required=False, ) end = schema.Datetime(
title=_(u"End date"), required=False, )
details = RichText( title=_(u"Details"),
description=_(u"Details about the program"),
required=False)
30. session.py Session type
from five import grok
from zope import schema
from plone.directives import form, dexterity
from plone.app.textfield import RichText
32. Factory Type Information
регистрация в profiles/default/types.xml
<object name="portal_types">
<object name="example.conference.presenter"
meta_type="Dexterity FTI" />
<object name="example.conference.program"
meta_type="Dexterity FTI" />
<object name="example.conference.session"
meta_type="Dexterity FTI" />
</object>
33. Для каждого типа создается XML файл в
profiles/default/types
example.conference.presenter.xml
example.conference.program.xml
example.conference.session.xml
49. В Dexterity FTI мы можем определять
схему типа тремя способами:
schema: через имя интерфейса.
model_source: XML строка,
представляющая тип. Генерируется и
сохраняется черезTTW редактор.
model_file: путь к XML файлу,
представляющему тип
50. Экспорт профиля и схемы
Произвести экспорт профиля и экспорт
типа - "Export Schema Profiles" и “Export
Scheme Models” в панели управления
51. Результат экспорта
После экспорта имеем два одноименных файла
presenter.xml
В одном из них схема
в другом ( в папке types )– регистрация типа
53. Перенос модели в файл
поместить полученный файл types.xml и
папку types в папку профиля (profile)
продукта
Очистить свойство model_source property
установить свойство a model_file:
<property name="model_file">путь к файлу
модели</property>
Например
shuttlethread.farmyard.models:animal.xml
55. Модуль plone.supermodel позволяет
добавлять в XML schema набор полей,
также как с использованием интерфейсов
Схема может быть именованной или нет
Именованная схема добавляет на форме
соответствующую вкладку
Обычно имеют дело с единственной
неименованной схемой в файле