1. Скачиваем http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi и устанавливаем Python2.4.4.
2. Скачиваем файл ez_setup.py
3. Помещаем этот файл в C:\Python24 и запускаем python ez_setup.py. Этот скрипт установит пакет setuptools.После этого в Python24\Scripts должен появиться файл easy_instal.exe. Во все время выполнения должен быть обеспечен доступ в интернет.
4. Из папки С:\Python24\Scripts запускаем easy_install.exe archgenxml
и ждем, пока через Интернет будет устанавливаться Archgenxml и все дополнительные пакеты. После установки в C:\Python24\Scripts должен появиться файл archgenxml.exe, его и надо будет использовать для генерации продуктов из модели.
5. В Python24 найдите файл ArchGenXMLprofile.xmi - это профиль для генерации продукта.
6. Создаем папку для хранения профиля profiles (например C:\profiles) и помещаем ArchGenXMLprofile.xmi туда.
7. Создаем файл с именем .agx_zope_path и содержимым:
C:\Plone3\Zope\lib\python
8. Этот файл помещаем в свою личную папку - C:\Documents and Settings\имя пользователя\ При необходимости в этом файле скорректируйте путь в соответствии с Вашей инсталяции Plone.
9. Для удобства в папке C:\Plone3\Data\Products создаем файл generate.bat c содержимым:
C:\Pythin24\Scripts\archgenxml.exe --profile-dir=C:\profiles %1.zargo -o 1%
В файле generate.bat должны быть указаны пути, указывающие на реальное положение archgenxml.exe и папки с ArchGenXMLprofile.xmi
10. Помещаем файл модели тоже в C:\Plone3\Data\Products.
Генерация продукта производится вызовом generate.bat модель.zargo, где модель - имя файла модели. При удачной генерации в папке Products появится папка с именем Вашей модели.
вторник, 25 мая 2010 г.
воскресенье, 16 мая 2010 г.
Получение значения поля объекта
Вопрос:Во всех шаблонах, встроенных в Plone используется работа с полями. Как получить значение по полю, зная имя поля? Нужно ли для этого обращаться к самому созданному объекту?
Ответ:
К полю можно обратиться и отобразить его в шаблоне можно несколькими способами, это зависит от задачи.
Если нужно отобразить поле с его виджетом, определенным в схеме, то
<metal:field use-macro="python:here.widget('title', mode='view')"> Title </metal:field> отображает виджет со значением поля как в форм просмотра,
<metal:field use-macro="python:here.widget('title', mode='edit')"> Title </metal:field> отображает виджет со значением поля как в форме редактирования
Получение значения поля в шаблоне:
obj python:item.getObject(); - получение самого объекта.
К объекту обращаться нужно всегда, просто часто это делается неявно. В шаблоне и классе шаблона мы обращаемся к объекту как context. Если используется предварительная обработка в классе шаблона, то обращение к классу шаблона происходит через view:
tal:content="view/myprop",
tal:content="python:view.myMethod()"
В классе (и в шаблоне тоже) можно получить значение поля объекта:
context.getTitle(), в общем случае context/getИмя_поля_с_заглавной буквы(): context.getMyprop() - это получение значения через accessor. Accessor - автоматически создаваемый метод доступа к полю (аналог get метода в С++)
context используем в шаблоне и в классе шаблона. В классе конитент-типа используем self.
Общий способ получения значения поля:
password= self.getField('password').get(self).
Используется при переопределении accessor. Так при создании класса генерируется метод getPassword(), но его можно переопределить:
class myClass():
......
security.declarePublic('getPassword') # объявление режима доступа к методу
def getPassword(self):
mypass=self.getField('password').get(self)
..... # что-то делаем
return mypassword
Ответ:
К полю можно обратиться и отобразить его в шаблоне можно несколькими способами, это зависит от задачи.
Если нужно отобразить поле с его виджетом, определенным в схеме, то
<metal:field use-macro="python:here.widget('title', mode='view')"> Title </metal:field> отображает виджет со значением поля как в форм просмотра,
<metal:field use-macro="python:here.widget('title', mode='edit')"> Title </metal:field> отображает виджет со значением поля как в форме редактирования
Получение значения поля в шаблоне:
<tal:entry tal:repeat="item folderContents">
<tal:block tal:define="item_url item/getURL|item/absolute_url;
item_id item/getId|item/id;
item_title_or_id item/pretty_title_or_id;
item_description item/Description;
item_type item/portal_type;
item_type_title item/Type;
item_modified item/ModificationDate;
item_created item/CreationDate;
item_icon python:plone_view.getIcon(item);
item_type_class python:'contenttype-' + normalizeString(item_type);
item_wf_state item/review_state|python: wtool.getInfoFor(item, review_state', '');
item_wf_state_class python:'state-' + normalizeString(item_wf_state);
item_creator item/Creator;
item_start item/start/ISO|item/StartDate|nothing;
item_end item/end/ISO|item/EndDate|nothing;
obj python:item.getObject();
">
..............
</tal:block>
</tal:entry>
В этом примере различные формы получения значений.obj python:item.getObject(); - получение самого объекта.
К объекту обращаться нужно всегда, просто часто это делается неявно. В шаблоне и классе шаблона мы обращаемся к объекту как context. Если используется предварительная обработка в классе шаблона, то обращение к классу шаблона происходит через view:
tal:content="view/myprop",
tal:content="python:view.myMethod()"
В классе (и в шаблоне тоже) можно получить значение поля объекта:
context.getTitle(), в общем случае context/getИмя_поля_с_заглавной буквы(): context.getMyprop() - это получение значения через accessor. Accessor - автоматически создаваемый метод доступа к полю (аналог get метода в С++)
context используем в шаблоне и в классе шаблона. В классе конитент-типа используем self.
Общий способ получения значения поля:
password= self.getField('password').get(self).
Используется при переопределении accessor. Так при создании класса генерируется метод getPassword(), но его можно переопределить:
class myClass():
......
security.declarePublic('getPassword') # объявление режима доступа к методу
def getPassword(self):
mypass=self.getField('password').get(self)
..... # что-то делаем
return mypassword
Подписаться на:
Комментарии (Atom)
Всероссийский конкурс научно-технологических проектов страница конкурса https://dm-centre.ru/sirius-konkurs-projectov Цель конкурс...
-
PyKnow - библиотека Python для разработки экспертных систем, реализующая подход CLIPS . Реализует продукционный подход к построению экспе...
-
Темы для обсуждения в блоге Предлагаю оставить в комментарии темы для обсуждения по вопросам использования Plone и проектированию web-си...
-
Список охватывает лишь малую часть ВУЗов, используюших Plone. Для зарубежных университетов расширенный список доступен по адресу: http://www...