Commit 96940308 authored by Bartek Górny's avatar Bartek Górny

a HUGE commit after a major refactoring; use with caution.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@12353 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 48c50120
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.ActionInformation</string>
<string>ActionInformation</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_action</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>contribute_content</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Contribute Content</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/ContributionTool_viewContributeFileDialog</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.ActionInformation</string>
<string>ActionInformation</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_view</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>latest</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>2.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Latest</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/ContributionTool_viewLatestContentList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.ActionInformation</string>
<string>ActionInformation</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_view</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>view</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>View</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/ContributionTool_viewMyContentList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -54,11 +54,11 @@
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>2.0</float> </value>
<value> <float>4.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Document Search</string> </value>
<value> <string>Advanced Search</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
......@@ -81,7 +81,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Base_searchDialog</string> </value>
<value> <string>string:${object_url}/Base_viewAdvancedSearchDialog</string> </value>
</item>
</dictionary>
</pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.ActionInformation</string>
<string>ActionInformation</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_search</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>search</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>2.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Document Search</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Base_viewSearchDialog</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -30,7 +30,9 @@
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -86,4 +88,23 @@
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>python:object.hasFile()</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -81,7 +81,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/File_UploadDialog</string> </value>
<value> <string>string:${object_url}/File_viewUploadDialog</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/DMS_htmlRepresentation</string> </value>
<value> <string>string:${object_url}/Document_viewHTMLPreview</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/DMS_jumpToRelatedDocuments?what=all</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=all&listbox_title=All related documents
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/DMS_jumpToRelatedDocuments?what=related_predecessor</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=related_predecessor&listbox_title=Reference documents
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/DMS_jumpToRelatedDocuments?what=related_similar</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=related_similar&listbox_title=Similar documents
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/DMS_jumpToRelatedDocuments?what=cloud</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=cloud&listbox_title=Similarity Cloud
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/DMS_jumpToRelatedDocuments?what=related_successor</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=related_successor&listbox_title=Related documents
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/DMS_jumpToRelatedDocuments?what=wiki_predecessor</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=wiki_predecessor&listbox_title=Wiki predecessors
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/DMS_jumpToRelatedDocuments?what=wiki_successor</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=wiki_successor&listbox_title=Wiki successors
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Base_viewLocalPermission</string> </value>
<value> <string>string:${object_url}/Base_viewLocalPermissionList</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Preference_viewDMS</string> </value>
<value> <string>string:${object_url}/Preference_viewDocument</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -83,7 +83,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/OOoDocument_convert</string> </value>
<value> <string>string:${object_url}/OOoDocument_convertToBase</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -83,7 +83,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/OOoDocument_downloadDialog</string> </value>
<value> <string>string:${object_url}/OOoDocument_viewDownloadDialog</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -83,7 +83,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/OOoDocument_getOOoFileDialog</string> </value>
<value> <string>string:${object_url}/OOoDocument_viewOOoFileDialog</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -83,7 +83,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/OOoDocument_getSnapshotDialog</string> </value>
<value> <string>string:${object_url}/OOoDocument_viewSnapshotDialog</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -83,7 +83,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/OOoDocument_viewTargetFileDialog</string> </value>
<value> <string>string:${object_url}/OOoDocument_viewConvertDialog</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/File_UploadDialog</string> </value>
<value> <string>string:${object_url}/File_viewUploadDialog</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Document_jumpToRelatedDocumentList?what=all</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=all&listbox_title=All related documents
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Document_jumpToRelatedDocumentList?what=related_predecessor</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=related_predecessor&listbox_title=Reference documents
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Document_jumpToRelatedDocumentList?what=related_similar</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=related_similar&listbox_title=Similar documents
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Document_jumpToRelatedDocumentList?what=cloud</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=cloud&listbox_title=Similarity Cloud
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Document_jumpToRelatedDocumentList?what=related_successor</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=related_successor&listbox_title=Related documents
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Document_jumpToRelatedDocumentList?what=wiki_predecessor</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=wiki_predecessor&listbox_title=Wiki predecessors
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,11 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Document_jumpToRelatedDocumentList?what=wiki_successor</string> </value>
<value> <string encoding="cdata"><![CDATA[
string:${object_url}/Document_jumpToRelatedDocumentList?relation_id=wiki_successor&listbox_title=Wiki successors
]]></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -81,7 +81,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Base_viewLocalPermission</string> </value>
<value> <string>string:${object_url}/Base_viewLocalPermissionList</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -140,6 +140,12 @@
<dictionary/>
</value>
</item>
<item>
<key> <string>revision</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
......@@ -171,28 +177,29 @@
<key> <string>_keys</string> </key>
<value>
<list>
<string>uid</string>
<string>Creator</string>
<string>Date</string>
<string>PrincipiaSearchSource</string>
<string>SearchableText</string>
<string>CreationDate</string>
<string>EffectiveDate</string>
<string>ExpiresDate</string>
<string>ModificationDate</string>
<string>Type</string>
<string>bobobase_modification_time</string>
<string>created</string>
<string>effective</string>
<string>expires</string>
<string>getIcon</string>
<string>in_reply_to</string>
<string>modified</string>
<string>review_state</string>
<string>summary</string>
<string>language</string>
<string>version</string>
<string>short_title</string>
<string>uid</string>
<string>Creator</string>
<string>Date</string>
<string>PrincipiaSearchSource</string>
<string>SearchableText</string>
<string>CreationDate</string>
<string>EffectiveDate</string>
<string>ExpiresDate</string>
<string>ModificationDate</string>
<string>Type</string>
<string>bobobase_modification_time</string>
<string>created</string>
<string>effective</string>
<string>expires</string>
<string>getIcon</string>
<string>in_reply_to</string>
<string>modified</string>
<string>review_state</string>
<string>summary</string>
<string>language</string>
<string>version</string>
<string>revision</string>
<string>short_title</string>
</list>
</value>
</item>
......@@ -230,6 +237,7 @@ review_state\r\n
summary\r\n
language\r\n
version\r\n
revision\r\n
short_title</string> </value>
</item>
<item>
......@@ -296,7 +304,8 @@ VALUES\n
<dtml-sqlvar expr="summary[loop_item]" type="string" optional>,\n
<dtml-sqlvar expr="language[loop_item]" type="string" optional>,\n
<dtml-sqlvar expr="version[loop_item]" type="string" optional>,\n
<dtml-sqlvar expr="short_title[loop_item]" type="string" optional>\n
<dtml-sqlvar expr="short_title[loop_item]" type="string" optional>,\n
<dtml-sqlvar expr="revision[loop_item]" type="string" optional>\n
)\n
<dtml-if sequence-end>\n
<dtml-else>\n
......@@ -367,7 +376,8 @@ VALUES\n
<dtml-sqlvar expr="summary[loop_item]" type="string" optional>,\n
<dtml-sqlvar expr="language[loop_item]" type="string" optional>,\n
<dtml-sqlvar expr="version[loop_item]" type="string" optional>,\n
<dtml-sqlvar expr="short_title[loop_item]" type="string" optional>\n
<dtml-sqlvar expr="short_title[loop_item]" type="string" optional>,\n
<dtml-sqlvar expr="revision[loop_item]" type="string" optional>\n
)\n
<dtml-if sequence-end>\n
<dtml-else>\n
......
......@@ -123,6 +123,7 @@ CREATE TABLE `compatibility` (\n
`summary` text,\n
`language` varchar(5) default \'\',\n
`version` varchar(10) default \'\',\n
`revision` varchar(10) default \'\',\n
`short_title` varchar(100) default \'\',\n
PRIMARY KEY (`uid`),\n
KEY `Type` (`Type`),\n
......@@ -188,6 +189,7 @@ CREATE TABLE `compatibility` (\n
`summary` text,\n
`language` varchar(5) default \'\',\n
`version` varchar(10) default \'\',\n
`revision` varchar(10) default \'\',\n
`short_title` varchar(100) default \'\',\n
PRIMARY KEY (`uid`),\n
KEY `Type` (`Type`),\n
......
......@@ -31,39 +31,143 @@
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<key> <string>_tree</string> </key>
<value>
<none/>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<key> <string>acquisition_append_value</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>acquisition_base_category</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
<tuple/>
</value>
</item>
<item>
<key> <string>acquisition_copy_value</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>acquisition_mask_value</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>acquisition_object_id</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>acquisition_portal_type</string> </key>
<value> <string>python: []</string> </value>
</item>
<item>
<key> <string>acquisition_sync_value</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>category_type</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>criterion_property</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>fallback_base_category</string> </key>
<value>
<none/>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>classification</string> </value>
</item>
<item>
<key> <string>id_generator</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id_group</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>last_id</string> </key>
<value> <string>1</string> </value>
</item>
<item>
<key> <string>membership_criterion_base_category</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>membership_criterion_category</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>multimembership_criterion_base_category</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Base Category</string> </value>
</item>
<item>
<key> <string>read_permission</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>rid</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>sid</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>test_method_id</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Security Classification</string> </value>
......@@ -74,6 +178,12 @@
<none/>
</value>
</item>
<item>
<key> <string>write_permission</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -82,5 +82,5 @@ def asSecurityGroupIdList(self, category_order=None, **kw):
#LOG('asSecurityGroupIdList, result',0,['_'.join(x) for x in getCombinationList(code_list) if len(x)])
#return ['_'.join(x) for x in getCombinationList(code_list) if len(x)]
#LOG('asSecurityGroupIdList', 0, 'return full_code_list = %s' %(full_code_list,))
#self.log('full_code_list',full_code_list)
self.log('full_code_list',full_code_list)
return full_code_list
......@@ -3,46 +3,64 @@ import xmlrpclib, base64
from Products.CMFCore.utils import getToolByName
def extractContent(data):
cs=cStringIO.StringIO()
"""
extract text content from ODF data
directly by unzipping (no need for oood here)
"""
# XXX probably not used - to really get text content it should
# strip xml too
cs = cStringIO.StringIO()
cs.write(data)
try:
z=zipfile.ZipFile(cs)
z = zipfile.ZipFile(cs)
except zipfile.BadZipfile:
cs.close()
return ''
s=z.read('content.xml')
s = z.read('content.xml')
cs.close()
z.close()
return s
def convertToOdf(self,name,data):
sp=mkProxy(self)
kw=sp.run_convert(name,base64.encodestring(data))
odf=base64.decodestring(kw['data'])
###### XXX these methods repeat what is in OOoDocument class
# maybe redundant, but we need to access them from Script (Python)
def convertToOdf(self, name, data):
"""
convert data into ODF format
to be used in ingestion when we don't yet have an ERP5 object
to work with (and we for example have to figure out portal_type)
"""
sp = mkProxy(self)
kw = sp.run_convert(name,base64.encodestring(data))
odf = base64.decodestring(kw['data'])
return odf
def mkProxy(self):
pref=getToolByName(self,'portal_preferences')
adr=pref.getPreferredDmsOoodocServerAddress()
nr=pref.getPreferredDmsOoodocServerPortNumber()
pref = getToolByName(self,'portal_preferences')
adr = pref.getPreferredDmsOoodocServerAddress()
nr = pref.getPreferredDmsOoodocServerPortNumber()
if adr is None or nr is None:
raise Exception('you should set conversion server coordinates in preferences')
sp=xmlrpclib.ServerProxy('http://%s:%d' % (adr,nr),allow_none=True)
sp = xmlrpclib.ServerProxy('http://%s:%d' % (adr,nr), allow_none=True)
return sp
def generateFile(self,name,data,format):
sp=mkProxy(self)
kw=sp.run_generate(name,data,None,format)
res=base64.decodestring(kw['data'])
def generateFile(self, name, data, format):
sp = mkProxy(self)
kw = sp.run_generate(name, data, None, format)
res = base64.decodestring(kw['data'])
return res
def getAttrFromFilename(self,fname):
rx_parse=re.compile(self.portal_preferences.getPreferredDmsFilenameRegexp())
m=rx_parse.match(fname)
def getAttrFromFilename(self, fname):
"""
parse file name using regexp specified in preferences
"""
rx_parse = re.compile(self.portal_preferences.getPreferredDmsFilenameRegexp())
m = rx_parse.match(fname)
if m is None:
return {}
return m.groupdict()
def ofof(one, another):
return one.__of__(another)
# vim: syntax=python shiftwidth=2
import re
def findAddress(txt):
"""
find email address in a string
"""
validchars='0-9A-Za-z.\-_'
r=re.compile('[%s]+@[%s]+' % (validchars,validchars))
m=r.search(txt)
return m and m.group()
def extractParams(txt):
"""
extract parameters given in mail body
We assume that parameters are given as lines of the format:
name:value
"""
r=re.compile('^([\w_]+):([\w_/]+)$')
res=[]
for line in txt.split():
......
'''
"""
RULES
Single arguments:
......@@ -15,8 +15,15 @@ Multiple arguments:
- state (simulation_state), type (portal_type)
Everything else is treated as SearchableText
'''
"""
# XXX score:
# pythonicity: high
# obfuscation level: brain-twisting
# how to customize:
# (1) think for two hours
# (2) type for 20 seconds
import re
import sys
......@@ -24,10 +31,14 @@ sys.path.append('/usr/lib/zope/lib/python/')
from DateTime import DateTime
def dateRangeProc(s):
m=re.match('(\d)([my]).*',s)
"""
process date range (can be given in months or years)
"""
m=re.match('(\d)([wmy]).*',s)
try:
dif=0
gr=m.groups()
if gr[1]=='w':dif=int(gr[0])*7
if gr[1]=='m':dif=int(gr[0])*30
if gr[1]=='y':dif=int(gr[0])*365
return ('creation_from',DateTime()-dif)
......
<type_roles>
<role id='Associate'>
<property id='title'>Project Associates</property>
<property id='description'>Policy: */project
<property id='description'>Policy: */project
Rule: all project members have a right to access document once it has been shared or released</property>
<property id='condition'>python:object.Document_policyApplies('*/project')</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromArrow</property>
<multi_property id='category'></multi_property>
<multi_property id='base_category'>source_project</multi_property>
</role>
<role id='Assignor'>
<property id='title'>Project Director</property>
<property id='description'>Policy: */project
<property id='description'>Policy: */project
Rule: project director is an Assignor (has management rights to the doc - can review it, release, publish, add local roles)</property>
<property id='condition'>python:object.Document_policyApplies('*/project')</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromArrow</property>
<multi_property id='category'>function/knowledge/manager</multi_property>
<multi_property id='base_category'>function</multi_property>
......@@ -22,40 +21,37 @@ Rule: project director is an Assignor (has management rights to the doc - can re
</role>
<role id='Assignee'>
<property id='title'>Owner</property>
<property id='description'>Policy: */*
<property id='description'>Policy: */*
Rule: the creator is Assignee - can edit the doc and submit it</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromUser</property>
<multi_property id='category'></multi_property>
<multi_property id='base_category'>reference</multi_property>
</role>
<role id='Auditor'>
<property id='title'>Organisation members</property>
<property id='description'>Policy: */*
Rule: all people working for the same organisation are Auditors (we identify the organisation by the first part of the "group" path)
<property id='description'>Policy: */*
Rule: all people working for the same organisation are Auditors (we identify the organisation by the first part of the "group" path)
This does not apply if it is a project document and does not have a project</property>
<property id='condition'>python: not object.Document_policyApplies('*/restricted') and (object.Document_policyApplies('*/project') or not object.Document_policyApplies('*/project',True) )</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryRoot</property>
<multi_property id='category'></multi_property>
<multi_property id='base_category'>group</multi_property>
</role>
<role id='Assignee'>
<property id='title'>Project Collaborators</property>
<property id='description'>Policy: collaborative/project
<property id='description'>Policy: collaborative/project
Rule: all members of project team can edit the document before it is submitted, and can submit it</property>
<property id='condition'>python:object.Document_policyApplies('collaborative/project')</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromArrow</property>
<multi_property id='category'></multi_property>
<multi_property id='base_category'>source_project</multi_property>
</role>
<role id='Assignor'>
<property id='title'>Team Director</property>
<property id='description'>Policy: */team
<property id='description'>Policy: */team
Rule: team manager is an Assignor (has management rights to the doc - can review it, release, publish, add local roles)</property>
<property id='condition'>python:object.Document_policyApplies('*/team')</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromAssignment</property>
<multi_property id='category'>function/auc/department/director_of_department</multi_property>
<multi_property id='base_category'>group</multi_property>
......@@ -63,10 +59,10 @@ Rule: team manager is an Assignor (has management rights to the doc - can review
</role>
<role id='Assignor'>
<property id='title'>Team Deputy</property>
<property id='description'>Policy: */team
<property id='description'>Policy: */team
Rule: team manager is an Assignor (has management rights to the doc - can review it, release, publish, add local roles)</property>
<property id='condition'>python:object.Document_policyApplies('*/team')</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromAssignment</property>
<multi_property id='category'>function/auc/department/deputy_director_of_department</multi_property>
<multi_property id='base_category'>group</multi_property>
......@@ -74,40 +70,37 @@ Rule: team manager is an Assignor (has management rights to the doc - can review
</role>
<role id='Associate'>
<property id='title'>Team Associates</property>
<property id='description'>Policy: */team
<property id='description'>Policy: */team
Rule: all team members have a right to access document once it has been shared or released</property>
<property id='condition'>python:object.Document_policyApplies('*/team')</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromAssignment</property>
<multi_property id='category'></multi_property>
<multi_property id='base_category'>group</multi_property>
</role>
<role id='Assignee'>
<property id='title'>Team Collaborators</property>
<property id='description'>Policy: collaborative/team
<property id='description'>Policy: collaborative/team
Rule: all members of the team can edit the document before it is submitted, and can submit it</property>
<property id='condition'>python:object.Document_policyApplies('collaborative/team')</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromAssignment</property>
<multi_property id='category'></multi_property>
<multi_property id='base_category'>group</multi_property>
</role>
<role id='Assignee'>
<property id='title'>Public Collaborators</property>
<property id='description'>Policy: collaborative/public
<property id='description'>Policy: collaborative/public
Rule: everyone in the organisation (root group) can edit the doc before it is submitted, and can suggest its publication</property>
<property id='condition'>python:object.Document_policyApplies('collaborative/public')</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryRoot</property>
<multi_property id='category'></multi_property>
<multi_property id='base_category'>group</multi_property>
</role>
<role id='Assignor'>
<property id='title'>Public Reviewer</property>
<property id='description'>Policy: collaborative/public
<property id='description'>Policy: collaborative/public
Rule: any person with knowledge/manager role can publish the document and manage access rights to it</property>
<property id='condition'>python:object.Document_policyApplies('collaborative/public')</property>
<property id='priority'>10</property>
<property id='priority'>10.0</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromAssignment</property>
<multi_property id='category'>function/knowledge/manager</multi_property>
<multi_property id='base_category'>function</multi_property>
......
......@@ -4,8 +4,8 @@
<pickle>
<tuple>
<tuple>
<string>Products.ERP5.Interaction</string>
<string>InteractionDefinition</string>
<string>Products.ERP5Type.ERP5Type</string>
<string>ERP5TypeInformation</string>
</tuple>
<none/>
</tuple>
......@@ -19,79 +19,98 @@
</value>
</item>
<item>
<key> <string>actbox_category</string> </key>
<value> <string>workflow</string> </value>
<key> <string>_actions</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>actbox_name</string> </key>
<value> <string></string> </value>
<key> <string>_aliases</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>actbox_url</string> </key>
<value> <string></string> </value>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>activate_script_name</string> </key>
<key> <string>_roles</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>acquire_local_roles</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>allowed_content_types</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>after_script_name</string> </key>
<key> <string>base_category_list</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>content_icon</string> </key>
<value> <string>folder_icon.gif</string> </value>
</item>
<item>
<key> <string>content_meta_type</string> </key>
<value> <string>ERP5 Folder</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
<value> <string>Contribution Tool provides a single place to contribue content to an ERP5 Site.</string> </value>
</item>
<item>
<key> <string>guard</string> </key>
<value>
<none/>
</value>
<key> <string>factory</string> </key>
<value> <string>addFolder</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Registered_file_edit</string> </value>
<key> <string>filter_content_types</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>method_id</string> </key>
<key> <string>group_list</string> </key>
<value>
<list>
<string>_edit</string>
</list>
<tuple/>
</value>
</item>
<item>
<key> <string>portal_type_filter</string> </key>
<key> <string>hidden_content_type_list</string> </key>
<value>
<list>
<string>Drawing</string>
<string>Image</string>
<string>PDF</string>
<string>Presentation</string>
<string>Spreadsheet</string>
<string>Text</string>
</list>
<tuple/>
</value>
</item>
<item>
<key> <string>script_name</string> </key>
<value>
<list>
<string>CheckKnownType</string>
</list>
</value>
<key> <string>id</string> </key>
<value> <string>Contribution Tool</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<key> <string>init_script</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
<key> <string>permission</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>property_sheet_list</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Contribution Tool</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -75,7 +75,9 @@
<item>
<key> <string>group_list</string> </key>
<value>
<tuple/>
<tuple>
<string>document</string>
</tuple>
</value>
</item>
<item>
......
......@@ -67,7 +67,7 @@
</item>
<item>
<key> <string>factory</string> </key>
<value> <string>addPDF</string> </value>
<value> <string>addPDFDocument</string> </value>
</item>
<item>
<key> <string>filter_content_types</string> </key>
......@@ -76,9 +76,7 @@
<item>
<key> <string>group_list</string> </key>
<value>
<tuple>
<string>dms_document</string>
</tuple>
<tuple/>
</value>
</item>
<item>
......
......@@ -82,7 +82,7 @@
<key> <string>group_list</string> </key>
<value>
<tuple>
<string>dms_document</string>
<string>document</string>
</tuple>
</value>
</item>
......
......@@ -82,7 +82,7 @@
<key> <string>group_list</string> </key>
<value>
<tuple>
<string>dms_document</string>
<string>document</string>
</tuple>
</value>
</item>
......
......@@ -9,7 +9,7 @@
</chain>
<chain>
<type>External Web Page</type>
<workflow>edit_workflow, external_document_publication_workflow, external_document_interaction_workflow</workflow>
<workflow>edit_workflow, external_processing_workflow, external_document_interaction_workflow, external_document_publication_workflow</workflow>
</chain>
<chain>
<type>File</type>
......@@ -37,6 +37,6 @@
</chain>
<chain>
<type>Text</type>
<workflow>document_validation_workflow, document_publication_workflow, ooo_interaction_workflow, dms_file_interaction_workflow, local_permission_interaction_workflow, edit_workflow</workflow>
<workflow>document_validation_workflow, document_publication_workflow, ooo_interaction_workflow, dms_file_interaction_workflow, external_processing_workflow, local_permission_interaction_workflow, edit_workflow</workflow>
</chain>
</workflow_chain>
\ No newline at end of file
......@@ -68,73 +68,88 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS \n
# This code is horrible: bad spacing, all lines glued together, short unexplicit variable names\n
# Please reformat and rewrite with readable variables and understandable comments\n
# Use standard python spacing, put some space between lines if meaningful,\n
# Add a description. Do not forget to translate messages. This is a multilingual\n
# system after all.\n
<value> <string>"""\n
This script receives a request from advanced search form and \n
puts together a search string in a search syntax, depending on\n
parameters received. It is the reverse of parseSearchString external\n
method.\n
"""\n
XXX-JPS - Put description here\n
"""\n
req=context.REQUEST\n
# with any of\n
st=req.get(\'SearchableText\',\'\')\n
context.log(st)\n
# exact phrase\n
s_phrase=req.get(\'SearchableText_phrase\',\'\')\n
if s_phrase!="":\n
st+=\' "\'+s_phrase+\'"\'\n
# with all words\n
s_all=req.get(\'SearchableText_all\',\'\')\n
if s_all!="":\n
st+=\' \'+\' \'.join(\'+\'+w for w in s_all.split(\' \'))\n
# without words\n
s_without=req.get(\'SearchableText_without\',\'\')\n
if s_without!="":\n
st+=\' \'+\' \'.join(\'-\'+w for w in s_without.split(\' \'))\n
# by creation date\n
daterange=req.get(\'created_within\',\'\')\n
\n
req = context.REQUEST\n
\n
# words to search in \'any of the words\' form - left intact\n
search_string = req.get(\'SearchableText_any\',\'\')\n
\n
# exact phrase to search for - double-quoted\n
search_phrase = req.get(\'SearchableText_phrase\',\'\')\n
if search_phrase != "":\n
search_string += \' "\' + search_phrase + \'"\'\n
\n
# search "with all of the words" - each word prefixed by "+"\n
search_all = req.get(\'SearchableText_all\',\'\')\n
if search_all != "":\n
search_string += \' \' + \' \'.join(\'+\' + word for word in search_all.split(\' \'))\n
\n
# search without these words - every word prefixed by "-"\n
search_without = req.get(\'SearchableText_without\',\'\')\n
if search_without!="":\n
search_string += \' \' + \' \'.join(\'-\' + word for word in search_without.split(\' \'))\n
\n
# search limited to a certain date range - add "created:xxx"\n
daterange = req.get(\'created_within\',\'\')\n
if daterange!=\'\':\n
st+=\' created:\'+daterange\n
# portal type\n
doctype=req.get(\'search_portal_type\')\n
context.log(doctype)\n
if doctype==\'all\':doctype=None\n
if isinstance(doctype,str):\n
doctype=[doctype]\n
if doctype:\n
if len(doctype)==1:\n
st+=\' type:"%s"\' % doctype[0]\n
search_string += \' created:\' + daterange\n
\n
# only given portal_types - add "type:Type" or type:(Type1,Type2...)\n
portal_type_list = req.get(\'search_portal_type\')\n
if portal_type_list == \'all\':\n
portal_type_list=None\n
if isinstance(portal_type_list,str):\n
portal_type_list=[portal_type_list]\n
if portal_type_list:\n
if len(portal_type_list)==1:\n
search_string += \' type:"%s"\' % portal_type_list[0]\n
else:\n
st+=\' type:(%s)\' % \',\'.join(doctype)\n
ref=req.get(\'reference\')\n
if ref:st+=\' reference:%s\' % ref\n
ver=req.get(\'version\')\n
if ver:st+=\' version:%s\' % ver\n
search_string += \' type:(%s)\' % \',\'.join(portal_type_list)\n
\n
# search by reference\n
ref = req.get(\'reference\')\n
if ref:\n
search_string += \' reference:%s\' % ref\n
\n
# search by version\n
ver = req.get(\'version\')\n
if ver:\n
search_string += \' version:%s\' % ver\n
\n
# search by language\n
lng=req.get(\'language\')\n
if lng and lng!=\'0\':\n
st+=\' language:%s\' % lng\n
if lng and lng != \'0\':\n
search_string += \' language:%s\' % lng\n
\n
# category search\n
for c in (\'group\',\'function\',\'site\'): # XXX-JPS What is this hardcoded stuff ?\n
cval=req.get(\'search_\'+c)\n
if cval:\n
st+=\' %s:%s\' % (c,cval)\n
for category in context.Document_getBaseCategoryList():\n
category_value = req.get(\'search_\' + category)\n
if category_value:\n
search_string += \' %s:%s\' % (category, category_value)\n
\n
#only my docs\n
mine=req.get(\'mine\')\n
mine = req.get(\'mine\')\n
if mine:\n
st+=\' mine:yes\'\n
search_string += \' mine:yes\'\n
\n
# only newest versions\n
newest=req.get(\'newest\')\n
newest = req.get(\'newest\')\n
if newest:\n
st+=\' newest:yes\'\n
search_string += \' newest:yes\'\n
\n
# search mode\n
sm=req.get(\'search_mode\')\n
smmap={\'in_boolean_mode\':\'boolean\',\'with_query_expansion\':\'expanded\'}\n
if sm and smmap.has_key(sm):\n
st+=\' mode:%s\' % smmap[sm]\n
context.log(st)\n
return st\n
search_mode = req.get(\'search_mode\')\n
search_mode_map={\'in_boolean_mode\':\'boolean\',\'with_query_expansion\':\'expanded\'}\n
if search_mode and search_mode_map.has_key(search_mode):\n
search_string += \' mode:%s\' % search_mode_map[search_mode]\n
\n
return search_string\n
</string> </value>
</item>
<item>
......@@ -188,12 +203,12 @@ return st\n
<string>_getattr_</string>
<string>context</string>
<string>req</string>
<string>st</string>
<string>s_phrase</string>
<string>s_all</string>
<string>s_without</string>
<string>search_string</string>
<string>search_phrase</string>
<string>search_all</string>
<string>search_without</string>
<string>daterange</string>
<string>doctype</string>
<string>portal_type_list</string>
<string>None</string>
<string>isinstance</string>
<string>str</string>
......@@ -203,12 +218,12 @@ return st\n
<string>ver</string>
<string>lng</string>
<string>_getiter_</string>
<string>c</string>
<string>cval</string>
<string>category</string>
<string>category_value</string>
<string>mine</string>
<string>newest</string>
<string>sm</string>
<string>smmap</string>
<string>search_mode</string>
<string>search_mode_map</string>
</tuple>
</value>
</item>
......
......@@ -70,112 +70,116 @@
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Please put description here\n
The main search script. Receives one big string - a SearchableText, in\n
the search syntax, parses the string using external method parseSearchString,\n
then does the following:\n
- processes arguments for searching by any category (this requires SQLCatalog patch)\n
- selects search mode\n
- adds creation and modification date clauses\n
- searches\n
- if requested, filters result so that only the user\'s docs are returned\n
- if requested, filters result to return only the newest versions\n
\n
TODO: use catalog to get only the user\'s docs - this implementation is slow.\n
"""\n
\n
# if no args we return empty list\n
# we use only SearchableText - all params are passed through this\n
\n
sstr=context.REQUEST.get(\'SearchableText\')\n
# SearchableText can be supplied in request or stored in selection\n
sstr = context.REQUEST.get(\'SearchableText\')\n
if not sstr:\n
sstr=kw.get(\'SearchableText\')\n
if not sstr:return []\n
context.log(sstr)\n
sstr = kw.get(\'SearchableText\')\n
if not sstr: return []\n
\n
args=context.parseSearchString(sstr)\n
args = context.parseSearchString(sstr)\n
\n
# if no portal type specified, take all\n
if not args.has_key(\'portal_type\') or args[\'portal_type\']==():\n
args[\'portal_type\']=context.Base_getSearchableTypeList()\n
if not args.has_key(\'portal_type\') or args[\'portal_type\'] == ():\n
args[\'portal_type\'] = context.Base_getSearchableTypeList()\n
\n
# process searching by category\n
cats=[]\n
bases=context.portal_categories.getBaseCategoryList()\n
cats = []\n
bases = context.portal_categories.getBaseCategoryList()\n
for k,v in args.items():\n
if k in bases:\n
cats.append(\'/\'.join((k,v)))\n
if cats!=[]:\n
args[\'category\']=cats\n
cats.append(\'/\'.join((k, v)))\n
if cats != []:\n
args[\'category\'] = cats\n
\n
# expand simplified notation of search mode\n
mode=args.get(\'mode\')\n
modemap={\'natural\':0,\'boolean\':\'in_boolean_mode\',\'expanded\':\'with_query_expansion\'}\n
mode = args.get(\'mode\')\n
modemap = {\'natural\':0, \'boolean\':\'in_boolean_mode\', \'expanded\':\'with_query_expansion\'}\n
if mode and modemap.has_key(mode):\n
args[\'search_mode\']=modemap[mode]\n
\n
# user wants only his documents - we try to use Creator from compatibility table\n
if args.get(\'mine\'): \n
context.log(\'mine\')\n
from AccessControl import getSecurityManager\n
sm=getSecurityManager()\n
u=sm.getUser()\n
args[\'Creator\']=str(u)\n
args[\'search_mode\'] = modemap[mode]\n
\n
kw.update(args)\n
\n
# a hack because SQLCatalog wants table.key now \n
# dunno if it is a bug or a feature\n
if kw.has_key(\'SearchableText\'):\n
kw[\'full_text.SearchableText\']=kw[\'SearchableText\']\n
kw[\'full_text.SearchableText\'] = kw[\'SearchableText\']\n
kw.pop(\'SearchableText\')\n
\n
cf=kw.get(\'creation_from\')\n
ct=kw.get(\'creation_to\')\n
mf=kw.get(\'modification_from\')\n
mt=kw.get(\'modification_to\')\n
cf = kw.get(\'creation_from\')\n
ct = kw.get(\'creation_to\')\n
mf = kw.get(\'modification_from\')\n
mt = kw.get(\'modification_to\')\n
\n
wheres=[]\n
wheres = []\n
if cf:\n
wheres.append(\'creation_date>"\'+cf.strftime(\'%Y-%m-%d\')+\'"\')\n
wheres.append(\'creation_date>"\' + cf.strftime(\'%Y-%m-%d\') + \'"\')\n
if ct:\n
wheres.append(\'creation_date<"\'+cf.strftime(\'%Y-%m-%d\')+\'"\')\n
wheres.append(\'creation_date<"\' + cf.strftime(\'%Y-%m-%d\') + \'"\')\n
if mf:\n
wheres.append(\'modification_date>"\'+cf.strftime(\'%Y-%m-%d\')+\'"\')\n
wheres.append(\'modification_date>"\' + cf.strftime(\'%Y-%m-%d\') + \'"\')\n
if mt:\n
wheres.append(\'modification_date<"\'+cf.strftime(\'%Y-%m-%d\')+\'"\')\n
if wheres!=[]:\n
kw[\'where_expression\']=\' AND \'.join(wheres)\n
wheres.append(\'modification_date<"\' + cf.strftime(\'%Y-%m-%d\') + \'"\')\n
if wheres != []:\n
kw[\'where_expression\'] = \' AND \'.join(wheres)\n
\n
# now we search\n
# any language?\n
if kw.get(\'language\')==\'0\':kw.pop(\'language\')\n
if kw.get(\'language\') == \'0\': kw.pop(\'language\')\n
context.log(\'SEARCH:\',args)\n
res=context.portal_catalog(**kw)\n
res = context.portal_catalog(**kw)\n
\n
# user wants only his documents\n
#if args.get(\'mine\'): \n
# context.log(\'mine\')\n
# from AccessControl import getSecurityManager\n
# sm=getSecurityManager()\n
# u=sm.getUser()\n
# # now we need to filter by owner\n
# # some day we will do it in catalog\n
# res=[r for r in res if u.allowed(r.getObject(),(\'Owner\',))]\n
if args.get(\'mine\'): \n
context.log(\'mine\')\n
from AccessControl import getSecurityManager\n
sm = getSecurityManager()\n
u = sm.getUser()\n
# now we need to filter by owner\n
# some day we will do it in catalog\n
res = [r for r in res if u.allowed(r.getObject(), (\'Owner\',))]\n
\n
#...and now we check for only the newest versions\n
# but we need to preserve order\n
if args.get(\'newest\'):\n
context.log(\'newest\')\n
idx={} # for recording what we have where and in which version\n
newest=[]\n
counter=0\n
idx = {} # for keeping the last version of every reference\n
# this way we do reduce the number of docs very fast (without calling catalog)\n
newest = [] # for keeping order as it was\n
counter = 0\n
for r in res:\n
ref=r.getReference()\n
ref = r.getReference()\n
try:\n
ver=int(r.getVersion())\n
ver = int(r.getVersion())\n
except ValueError:\n
continue\n
if idx.has_key(ref):\n
if idx[ref][0]>=ver:\n
if idx[ref][0] >= ver:\n
continue\n
else:\n
del newest[idx[ref][1]]\n
counter-=1\n
counter -= 1\n
newest.append(r)\n
idx[ref]=(ver,counter)\n
counter+=1\n
res=newest\n
idx[ref] = (ver, counter)\n
counter += 1\n
# now that we have only one per reference, we can play with languages and revisions\n
res = [doc.getLatestVersionValue() for doc in newest]\n
\n
\n
return res\n
......@@ -243,11 +247,6 @@ return res\n
<string>v</string>
<string>mode</string>
<string>modemap</string>
<string>AccessControl</string>
<string>getSecurityManager</string>
<string>sm</string>
<string>u</string>
<string>str</string>
<string>cf</string>
<string>ct</string>
<string>mf</string>
......@@ -255,14 +254,21 @@ return res\n
<string>wheres</string>
<string>_apply_</string>
<string>res</string>
<string>AccessControl</string>
<string>getSecurityManager</string>
<string>sm</string>
<string>u</string>
<string>append</string>
<string>$append0</string>
<string>r</string>
<string>idx</string>
<string>newest</string>
<string>counter</string>
<string>r</string>
<string>ref</string>
<string>int</string>
<string>ver</string>
<string>ValueError</string>
<string>doc</string>
</tuple>
</value>
</item>
......@@ -279,7 +285,7 @@ return res\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_getAdvancedSearchResultList</string> </value>
<value> <string>Base_getAdvancedSearchResultList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -68,22 +68,30 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
<value> <string>"""\n
we search for docs that reference us in any way (reference only or more specific)\n
by making a union of a number of searches\n
we can return raw set, the class will get objects and make the records unique\n
if you want only the most recent versions, filter the result and apply DMS_findDocument\n
and make sure we get latest/most relevant version\n
should be reimplemented in SQL some sunny day.\n
"""\n
ss=[]\n
if context.getReference() is None: return []\n
\n
ss = []\n
\n
if context.getReference() is None: \n
return []\n
\n
ss.append(context.getReference())\n
\n
if context.getLanguage() is not None:\n
ss.append(context.getReference()+\'-\'+context.getLanguage())\n
ss.append(context.getReference() + \'-\' + context.getLanguage())\n
if context.getVersion() is not None:\n
ss.append(context.getReference()+\'-\'+context.getLanguage()+\'-\'+context.getVersion())\n
ss.append(context.getReference() + \'-\' + context.getLanguage() + \'-\' + context.getVersion())\n
\n
lst=[]\n
for t in ss:\n
lst+=context.portal_catalog(SearchableText=\'%\'+t+\'%\')\n
lst += context.portal_catalog(SearchableText=\'%\' + t + \'%\')\n
\n
return lst\n
</string> </value>
</item>
......@@ -158,7 +166,7 @@ return lst\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_findWikiPredecessorList</string> </value>
<value> <string>Base_getImplicitPredecessorValueList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -68,19 +68,45 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>ob=state_change.object\n
kw=ob.REQUEST\n
f=kw.get(\'my_file\',None)\n
ob.log(script.getId(),ob.getRelativeUrl())\n
<value> <string encoding="cdata"><![CDATA[
"""\n
Called by document.getImplicitSuccessorValueList\n
Gets a list of dicts containing reference and/or version and/or language\n
and maybe some more things.\n
Returns a list of objects.\n
\n
if f is not None and f:\n
# if file uploaded, then:\n
fname=f.filename\n
ob.setPropertyListFromFilename(fname)\n
ob.setSourceReference(fname)\n
if not ob.getTitle():\n
ob.setTitle(fname)\n
</string> </value>
dummy simple implementation - if no version, then return the newest in the chosen language\n
or in any language if not specified\n
"""\n
\n
def findDocByReferenceDict(ref_dict):\n
reference=ref_dict.get(\'reference\')\n
if reference is None:\n
return\n
# assuming we want only the highest version:\n
searchargs = dict(reference=reference, portal_type=context.getPortalDocumentTypeList(), sort_on=\'version\', sort_order=\'descending\')\n
language = ref_dict.get(\'language\')\n
if language is not None:\n
searchargs[\'language\'] = language\n
version = ref_dict.get(\'version\')\n
if version is not None:\n
searchargs[\'version\']=version\n
res = list(context.portal_catalog(**searchargs))\n
if len(res)>0:\n
return res[0]\n
\n
res = []\n
\n
for ref_dict in reference_list:\n
ob = findDocByReferenceDict(ref_dict)\n
if ob is not None:\n
res.append(ob)\n
\n
return res\n
]]></string> </value>
</item>
<item>
<key> <string>_code</string> </key>
......@@ -96,7 +122,7 @@ if f is not None and f:\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>state_change</string> </value>
<value> <string>reference_list</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -122,14 +148,14 @@ if f is not None and f:\n
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>state_change</string>
<string>_getattr_</string>
<string>reference_list</string>
<string>findDocByReferenceDict</string>
<string>res</string>
<string>_getiter_</string>
<string>ref_dict</string>
<string>ob</string>
<string>kw</string>
<string>None</string>
<string>f</string>
<string>script</string>
<string>fname</string>
<string>_getattr_</string>
</tuple>
</value>
</item>
......@@ -146,7 +172,7 @@ if f is not None and f:\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>SetReferenceFromFilename</string> </value>
<value> <string>Base_getImplicitSuccessorValueList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -72,10 +72,12 @@
get related object title in a security-aware way (without throwing exception\n
if I don\'t have permissions to access the object)\n
"""\n
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
cat_value=context.getProperty(category) # XXX-JPS please rename cat_value - this is a path - value is normally used to name objects (ex. getResourceValue). Also, category parameter is strange. This is a base category afterall. Name it base_category\n
if cat_value is None:return \'\'\n
ob=context.restrictedTraverse(cat_value,None)\n
\n
base_category = context.getProperty(category)\n
if base_category is None:\n
return \'\'\n
\n
ob = context.restrictedTraverse(base_category, None)\n
return ob is not None and ob.getTitle() or \'\'\n
# XXX-JPS What would be the problem in using getMyCategoryTitle() ?\n
</string> </value>
......@@ -129,7 +131,7 @@ return ob is not None and ob.getTitle() or \'\'\n
<string>category</string>
<string>_getattr_</string>
<string>context</string>
<string>cat_value</string>
<string>base_category</string>
<string>None</string>
<string>ob</string>
</tuple>
......
......@@ -72,11 +72,11 @@
get related object title list in a security-aware way (without throwing exception\n
if I don\'t have permissions to access the object)\n
"""\n
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
ob_list=context.Base_getRelatedObjectValueList(category) # XXX-JPS This is a base category afterall. Name it base_category\n
title_list=[o.getTitle() for o in ob_list]\n
\n
return filter(lambda t:t!=\'\',title_list)\n
ob_list = context.Base_getRelatedObjectValueList(category)\n
title_list = [o.getTitle() for o in ob_list]\n
\n
return filter(lambda t:t!=\'\', title_list)\n
</string> </value>
</item>
<item>
......@@ -99,7 +99,7 @@ return filter(lambda t:t!=\'\',title_list)\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>category</string> </value>
<value> <string>base_category</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -125,9 +125,10 @@ return filter(lambda t:t!=\'\',title_list)\n
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>category</string>
<string>base_category</string>
<string>_getattr_</string>
<string>context</string>
<string>category</string>
<string>ob_list</string>
<string>append</string>
<string>$append0</string>
......
......@@ -72,18 +72,17 @@
get related object value list in a security-aware way (without throwing exception\n
if I don\'t have permissions to access the object)\n
"""\n
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
# New names: object_list, category_list, base_category\n
cat_value_list=context.getPropertyList(category)\n
if cat_value_list is None:return []\n
\n
def getValueIfAvailable(cat_value):\n
ob=context.restrictedTraverse(cat_value,None)\n
category_list = context.getPropertyList(base_category)\n
if category_list is None:\n
return []\n
\n
def getValueIfAvailable(category):\n
ob = context.restrictedTraverse(category, None)\n
return ob \n
\n
ob_list=[getValueIfAvailable(c) for c in cat_value_list]\n
return ob_list\n
return [o for o in ob_list if o is not None]\n
ob_list = [getValueIfAvailable(category) for category in category_list]\n
return [o for o in object_list if o is not None]\n
</string> </value>
</item>
<item>
......@@ -106,7 +105,7 @@ return [o for o in ob_list if o is not None]\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>category</string> </value>
<value> <string>base_category</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -132,17 +131,18 @@ return [o for o in ob_list if o is not None]\n
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>category</string>
<string>base_category</string>
<string>_getattr_</string>
<string>context</string>
<string>cat_value_list</string>
<string>category_list</string>
<string>None</string>
<string>getValueIfAvailable</string>
<string>append</string>
<string>$append0</string>
<string>_getiter_</string>
<string>c</string>
<string>category</string>
<string>ob_list</string>
<string>object_list</string>
<string>o</string>
</tuple>
</value>
......
......@@ -68,11 +68,11 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>req=context.REQUEST\n
sstr=context.Base_assembleSearchString()\n
<value> <string>req = context.REQUEST\n
sstr = context.Base_assembleSearchString()\n
context.log(sstr)\n
req.set(\'SearchableText\',sstr)\n
return context.Base_advancedSearchResults()\n
req.set(\'SearchableText\', sstr)\n
return context.Base_viewAdvancedSearchResultList()\n
</string> </value>
</item>
<item>
......
......@@ -70,25 +70,37 @@
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS put descrition here\n
This is used in listbox with search results - shows parts of the searchable text\n
of a document which contain searched words, highlighting the words.\n
Calls external method cutFound to get appropriately sliced result.\n
"""\n
tags=(\'<div style="font-weight:bold;display:inline;">\',\'</div>\')\n
trail=5\n
maxlines=5\n
txt=brain.getObject().SearchableText()\n
st=selection.params.get(\'SearchableText\')\n
if st is None:\n
# we should return something\n
return txt[min(len(txt)-300,200):500] # a somewhat arbitrary choice to trim searchable attrs\n
args=context.parseSearchString(st)\n
sw=args.get(\'SearchableText\')\n
if sw is None or sw==\'\':\n
# we should return something\n
return txt[min(len(txt)-300,200):500] # a somewhat arbitrary choice to trim searchable attrs\n
res=context.cutFound(context,txt,sw,tags,trail,maxlines)\n
return \' \'.join(map(str,res))\n
\n
# tags to surround words which were searched for\n
tags = (\'<div style="font-weight:bold;display:inline;">\', \'</div>\')\n
\n
# how many words to include before and after the highlighted word\n
trail = 5\n
\n
# maximum lines to show\n
maxlines = 5\n
\n
txt = brain.getObject().SearchableText()\n
search_string = selection.params.get(\'SearchableText\')\n
if search_string is None:\n
# if the searched text is empty (e.g. because the listbox uses its own method)\n
# we return something\n
return txt[min(len(txt) - 300, 200) : 500] # a somewhat arbitrary choice to trim searchable attrs\n
\n
search_argument_list = context.parseSearchString(search_string)\n
search_words = search_argument_list.get(\'SearchableText\')\n
if search_words is None or search_words == \'\':\n
# if the searched text is empty (e.g. because we used only parameters without pure searchable text)\n
# we return something\n
return txt[min(len(txt) - 300, 200) : 500] # a somewhat arbitrary choice to trim searchable attrs\n
\n
res = context.cutFound(context, txt, search_words, tags, trail, maxlines)\n
return \' \'.join(map(str, res))\n
]]></string> </value>
......@@ -140,14 +152,14 @@ return \' \'.join(map(str,res))\n
<string>maxlines</string>
<string>_getattr_</string>
<string>txt</string>
<string>st</string>
<string>search_string</string>
<string>None</string>
<string>_getitem_</string>
<string>min</string>
<string>len</string>
<string>context</string>
<string>args</string>
<string>sw</string>
<string>search_argument_list</string>
<string>search_words</string>
<string>res</string>
<string>map</string>
<string>str</string>
......
......@@ -68,8 +68,12 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>#XXX-JPS What is the use of this script ?\n
return context.getWikiSuccessorValueList()\n
<value> <string>"""\n
This is proxy to portal_catalog, with the sole purpose\n
of performing calls when proxy roles are needed\n
"""\n
\n
return context.portal_catalog(*a, **kw)\n
</string> </value>
</item>
<item>
......@@ -86,7 +90,19 @@ return context.getWikiSuccessorValueList()\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>*a,**kw</string> </value>
<value> <string>*a, **kw</string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Reviewer</string>
</tuple>
</value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -114,6 +130,7 @@ return context.getWikiSuccessorValueList()\n
<tuple>
<string>a</string>
<string>kw</string>
<string>_apply_</string>
<string>_getattr_</string>
<string>context</string>
</tuple>
......@@ -132,7 +149,7 @@ return context.getWikiSuccessorValueList()\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_listWikiSuccessor</string> </value>
<value> <string>Base_unrestrictedSearchResults</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -94,12 +94,13 @@
<key> <string>left</string> </key>
<value>
<list>
<string>SearchableText</string>
<string>SearchableText_any</string>
<string>SearchableText_all</string>
<string>SearchableText_phrase</string>
<string>SearchableText_without</string>
<string>my_search_portal_type</string>
<string>creation_from</string>
<string>creation_to</string>
<string>publication_from</string>
<string>publication_to</string>
</list>
</value>
</item>
......@@ -113,6 +114,7 @@
<string>mine</string>
<string>newest</string>
<string>search_mode</string>
<string>my_created_within</string>
</list>
</value>
</item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>StringField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>SearchableText_all</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>40</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Containing all of the words</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -14,7 +14,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>SearchableText</string> </value>
<value> <string>SearchableText_any</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>StringField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>SearchableText_phrase</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>40</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Exact phrase</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>StringField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>SearchableText_without</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>40</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Without the words</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>ListField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_created_within</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>unknown_selection</string> </key>
<value> <string>You selected an item that was not in the list.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>first_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>first_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>first_item</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
<list>
<tuple>
<string>--any time--</string>
<string></string>
</tuple>
<tuple>
<string>One week</string>
<string>1w</string>
</tuple>
<tuple>
<string>One month</string>
<string>1m</string>
</tuple>
<tuple>
<string>Three months</string>
<string>3m</string>
</tuple>
<tuple>
<string>One year</string>
<string>1y</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Created within last:</string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>DateTimeField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>publication_from</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>datetime_out_of_range</string> </key>
<value> <string>The date and time you entered were out of range.</string> </value>
</item>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>not_datetime</string> </key>
<value> <string>You did not enter a valid date and time.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>allow_empty_time</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>ampm_time_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_only</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default_now</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end_datetime</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_order</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start_datetime</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>sub_form</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>allow_empty_time</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>ampm_time_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_only</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default_now</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end_datetime</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_order</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start_datetime</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>allow_empty_time</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>ampm_time_style</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_only</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>date_separator</string> </key>
<value> <string>/</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_now</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>end_datetime</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>hidden_day_is_last_day</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>hide_day</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_order</string> </key>
<value> <string>ymd</string> </value>
</item>
<item>
<key> <string>input_style</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start_datetime</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>time_separator</string> </key>
<value> <string>:</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Published after</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.Form</string>
<string>BasicForm</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>fields</string> </key>
<value>
<dictionary>
<item>
<key> <string>ampm</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>day</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>hour</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <string>minute</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
<item>
<key> <string>month</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent>
</value>
</item>
<item>
<key> <string>year</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>Default</string>
<string>date</string>
<string>time</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>Default</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>date</string> </key>
<value>
<list>
<string>year</string>
<string>month</string>
<string>day</string>
</list>
</value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<list>
<string>hour</string>
<string>minute</string>
<string>ampm</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>ISO-8859-1</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Basic Form</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>StringField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>ampm</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>am/pm</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>day</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Day</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>hour</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Hour</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>minute</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Minute</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="7" aka="AAAAAAAAAAc=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>month</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Month</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="8" aka="AAAAAAAAAAg=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>year</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Year</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>DateTimeField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>publication_to</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>datetime_out_of_range</string> </key>
<value> <string>The date and time you entered were out of range.</string> </value>
</item>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>not_datetime</string> </key>
<value> <string>You did not enter a valid date and time.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>allow_empty_time</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>ampm_time_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_only</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default_now</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end_datetime</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_order</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start_datetime</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>sub_form</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>allow_empty_time</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>ampm_time_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_only</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default_now</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end_datetime</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_order</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start_datetime</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time_separator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>allow_empty_time</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>ampm_time_style</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>date_only</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>date_separator</string> </key>
<value> <string>/</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_now</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>end_datetime</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>hidden_day_is_last_day</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>hide_day</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_order</string> </key>
<value> <string>ymd</string> </value>
</item>
<item>
<key> <string>input_style</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start_datetime</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>time_separator</string> </key>
<value> <string>:</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Published before</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.Form</string>
<string>BasicForm</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>fields</string> </key>
<value>
<dictionary>
<item>
<key> <string>ampm</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>day</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>hour</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <string>minute</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
<item>
<key> <string>month</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent>
</value>
</item>
<item>
<key> <string>year</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>Default</string>
<string>date</string>
<string>time</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>Default</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>date</string> </key>
<value>
<list>
<string>year</string>
<string>month</string>
<string>day</string>
</list>
</value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<list>
<string>hour</string>
<string>minute</string>
<string>ampm</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>ISO-8859-1</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Basic Form</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>StringField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>ampm</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>am/pm</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>day</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Day</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>hour</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Hour</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>minute</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Minute</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="7" aka="AAAAAAAAAAc=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>month</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Month</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="8" aka="AAAAAAAAAAg=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>IntegerField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>year</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>integer_out_of_range</string> </key>
<value> <string>The integer you entered was out of range.</string> </value>
</item>
<item>
<key> <string>not_integer</string> </key>
<value> <string>You did not enter an integer.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>end</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>start</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Year</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -575,7 +575,7 @@
<dictionary>
<item>
<key> <string>method_name</string> </key>
<value> <string>DMS_getAdvancedSearchResults</string> </value>
<value> <string>Base_getAdvancedSearchResultList</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -4,24 +4,14 @@
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
<string>Products.ERP5Form.Form</string>
<string>ERP5Form</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
......@@ -41,24 +31,7 @@
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
<dictionary/>
</value>
</item>
</dictionary>
......@@ -67,87 +40,112 @@
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
"""\n
# XXX-JPS This looks like API level.\n
# A good API for the conversion process with a documentation on OOoDocument class\n
# would help a lot to make things clearer and better designed.\n
\n
# implementation layer - operations to be perfomed after converting data to ODF\n
return\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<key> <string>_objects</string> </key>
<value>
<none/>
<tuple/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
<key> <string>action</string> </key>
<value> <string>Base_edit</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>func_code</string> </key>
<key> <string>group_list</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</state>
</object>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
</list>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<key> <string>groups</string> </key>
<value>
<none/>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list>
<string>listbox</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_title</string>
</list>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list>
<string>my_reference</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>OOoDocument_postConversion</string> </value>
<value> <string>Base_viewLocalPermissionList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>Base_viewLocalPermission</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Local Permissions</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -68,15 +68,25 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># customizeable function for incrementing version number\n
# it depends on a chosen version number format\n
# default is %03d\n
# version can be argument or from context\n
# TODO: version number format in preferences (?)\n
# use same pattern for correcting version numbers entered in other ways (Constraint?)\n
<value> <string>typetoext = {\n
\'Text\':(\'doc\', \'sxw\', \'odt\', \'txt\', \'rtf\'),\n
\'Spreadsheet\':(\'xls\', \'sxc\', \'ods\'),\n
\'Presentation\':(\'ppt\', \'odp\'),\n
\'Drawing\':(\'odg\',),\n
\'Image\':(\'jpg\', \'jpeg\', \'gif\', \'bmp\', \'png\'),\n
\'PDF\':(\'pdf\',),\n
}\n
\n
ver=ver or context.getVersion()\n
return \'%03d\' % (int(ver)+1)\n
multitypes = {\n
# \'Text\':(\'Text\', \'Memo\')\n
}\n
context.log(ext)\n
\n
for ptype, ext_list in typetoext.items():\n
if ext in ext_list:\n
return multitypes.get(ptype, (ptype,))\n
\n
return ()\n
</string> </value>
</item>
<item>
......@@ -93,7 +103,7 @@ return \'%03d\' % (int(ver)+1)\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>ver=None</string> </value>
<value> <string>ext</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -119,10 +129,14 @@ return \'%03d\' % (int(ver)+1)\n
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>ver</string>
<string>ext</string>
<string>typetoext</string>
<string>multitypes</string>
<string>_getattr_</string>
<string>context</string>
<string>int</string>
<string>_getiter_</string>
<string>ptype</string>
<string>ext_list</string>
</tuple>
</value>
</item>
......@@ -134,14 +148,12 @@ return \'%03d\' % (int(ver)+1)\n
<item>
<key> <string>func_defaults</string> </key>
<value>
<tuple>
<none/>
</tuple>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_incrementVersion</string> </value>
<value> <string>ContributionTool_getCandidateTypeListByExtension</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -68,10 +68,19 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># implementation specific layer\n
# map document type id to portal type\n
# in stock dms not used\n
return\n
<value> <string>"""\n
Called by portal_contributions.getPropertyDictFromFilename\n
\n
Receives file name and a dict of properties found in file name by\n
using regular expression defined in preferences.\n
\n
If necessary can do additional things (like mapping\n
portal type id to portal type name).\n
\n
Type-based.\n
"""\n
\n
return property_dict\n
</string> </value>
</item>
<item>
......@@ -94,7 +103,7 @@ return\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>doctype_id</string> </value>
<value> <string>file_name, property_dict</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -114,13 +123,14 @@ return\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>1</int> </value>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>doctype_id</string>
<string>file_name</string>
<string>property_dict</string>
</tuple>
</value>
</item>
......@@ -137,7 +147,7 @@ return\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_idToType</string> </value>
<value> <string>ContributionTool_getPropertyDictFromFileName</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -68,50 +68,42 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
# I wonder how this relates to the ingestion machinary and to\n
# is this the same as Document_ingestFile ?\n
<value> <string>"""\n
Processes request of ContributionTool_viewContributeFileDialog\n
does what is necessary and calls portal_contributions.newContent\n
redirects to what is returned\n
"""\n
XXX-JPS Description here please\n
"""\n
# determine content type if not given\n
# first try from content\n
context.log(fname,doctype)\n
if doctype is None or doctype==\'\':\n
props=context.Document_getPropertyListFromContent(context,data,None)\n
doctype=props.get(\'doctype\')\n
# then from filename\n
if doctype is None or doctype==\'\':\n
props=context.Document_getPropertiesFromFilename(context,fname)\n
context.log(props)\n
doctype_id=props.get(\'doctype_id\')\n
if doctype_id is not None:\n
doctype=context.Document_idToType(doctype_id)\n
context.log(doctype)\n
if doctype is None or doctype==\'\':\n
doctype=context.content_type_registry.findTypeName(fname,None,None)\n
context.log(fname,doctype)\n
if doctype is None or doctype==\'\':\n
raise Exception("content type for file %s not registered" % fname)\n
\n
# create content\n
# find appropriate module\n
mod=None\n
modlist=[m for m in context.getPortalObject().objectIds() if m.endswith(\'_module\')]\n
for mod in modlist:\n
mod=context.restrictedTraverse(mod,None)\n
if mod is None:\n
continue\n
if doctype in context.portal_types[mod.getPortalType()].allowed_content_types:\n
break\n
if mod is None:\n
raise Exception(\'could not find module for \'+doctype)\n
# create and populate object\n
ob=mod.newContent(portal_type=doctype)\n
ob.manage_upload(data)\n
ob.Document_setOtherProperties(uname)\n
ob.DMS_ingestFile(fname,data)\n
return ob\n
from Products.Formulator.Errors import FormValidationError\n
\n
translateString = context.Base_translateString\n
request = context.REQUEST\n
\n
# a workaround for a strange problem\n
# (if this line is not here, ZODB raises an exception when\n
# committing transaction)\n
del(kw[\'field_your_file\'])\n
\n
if kw[\'portal_type\'] == \'\':\n
# we don\'t want to set portal_type to \'\' :)\n
del(kw[\'portal_type\'])\n
\n
doc = context.portal_contributions.newContent(file=file, **kw)\n
\n
context.log(doc.getId(), doc.getRelativeUrl())\n
\n
msg = translateString("${portal_type} created successfully.", mapping = {\'portal_type\':doc.getPortalType()})\n
return context.Base_redirect(\'view\', keep_items = {\'portal_status_message\':msg})\n
\n
\n
# we leave this for later, because this way it is easier to debug\n
try:\n
doc = context.portal_contributions.newContent(file=file, **kw)\n
if doc is None:\n
raise ValueError(\'new content could not be generated for unknown reason (check system log)\')\n
except Exception, e:\n
msg = translateString("Sorry, object could not be created. Error returned was: ${exception}.", mapping = {\'exception\':str(e)})\n
return context.Base_redirect(dialog_id, keep_items={\'portal_status_message\':msg})\n
</string> </value>
</item>
<item>
......@@ -128,7 +120,7 @@ return ob\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>fname,data, doctype=None,uname=None</string> </value>
<value> <string>dialog_id=None, form_id=None, file=None, **kw</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -148,30 +140,32 @@ return ob\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>4</int> </value>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>fname</string>
<string>data</string>
<string>doctype</string>
<string>uname</string>
<string>dialog_id</string>
<string>form_id</string>
<string>file</string>
<string>kw</string>
<string>Products.Formulator.Errors</string>
<string>FormValidationError</string>
<string>_getattr_</string>
<string>context</string>
<string>translateString</string>
<string>request</string>
<string>_write_</string>
<string>_getitem_</string>
<string>_apply_</string>
<string>doc</string>
<string>msg</string>
<string>None</string>
<string>props</string>
<string>doctype_id</string>
<string>ValueError</string>
<string>Exception</string>
<string>mod</string>
<string>append</string>
<string>$append0</string>
<string>_getiter_</string>
<string>m</string>
<string>modlist</string>
<string>_getitem_</string>
<string>ob</string>
<string>e</string>
<string>str</string>
</tuple>
</value>
</item>
......@@ -186,12 +180,13 @@ return ob\n
<tuple>
<none/>
<none/>
<none/>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_createObjectFromFile</string> </value>
<value> <string>ContributionTool_newContent</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.ERP5Form.Form</string>
<string>ERP5Form</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>ContributionTool_newContent</string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string>multipart/form-data</string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>your_classification</string>
<string>your_portal_type</string>
<string>your_file</string>
</list>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ContributionTool_viewContributeFileDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>ContributionTool_contributeFile</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Contribute file</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>ListField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>your_classification</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>unknown_selection</string> </key>
<value> <string>You selected an item that was not in the list.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>first_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>first_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string>style="margin-bottom:10px;"</string> </value>
</item>
<item>
<key> <string>extra_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>first_item</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Classification</string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.TALESField</string>
<string>TALESMethod</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:tuple(here.portal_categories.classification.getCategoryChildLogicalPathItemList())</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>FileField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>your_file</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>File to upload</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>ListField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>your_portal_type</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>unknown_selection</string> </key>
<value> <string>You selected an item that was not in the list.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>first_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>first_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra_item</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>first_item</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Portal type</string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.TALESField</string>
<string>TALESMethod</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: (\'\',)+here.getPortalDocumentTypeList()</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.ERP5Form.Form</string>
<string>ERP5Form</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ContributionTool_viewMyContentList</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>ContributionTool_viewMyContentList</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -386,6 +386,18 @@
<string>reference</string>
<string>Reference</string>
</tuple>
<tuple>
<string>version</string>
<string>Version</string>
</tuple>
<tuple>
<string>language</string>
<string>Language</string>
</tuple>
<tuple>
<string>revision</string>
<string>Revision</string>
</tuple>
<tuple>
<string>short_title</string>
<string>Short Title</string>
......@@ -398,10 +410,6 @@
<string>description</string>
<string>Description</string>
</tuple>
<tuple>
<string>version</string>
<string>Version</string>
</tuple>
<tuple>
<string>int_index</string>
<string>Index</string>
......
......@@ -68,19 +68,22 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
<value> <string>"""\n
Public interface to convert API method - sets additional headers and returns\n
output (a file in desired format).\n
"""\n
\n
# ZMI level interface for getting file converted to a desired format\n
type,data=context.getTargetFile(format)\n
request=context.REQUEST\n
request.RESPONSE.setHeader(\'Content-type\', type)\n
context.log(\'format\',format)\n
filename=\'%s.%s\' % ((filename or context.title_or_id(), format))\n
if type==\'application/zip\':\n
filename+=\'.zip\'\n
request = context.REQUEST\n
response = request.RESPONSE\n
\n
data = context.index_html(request, response, format=format, force=force)\n
typ = response.headers.get(\'content-type\')\n
\n
filename = \'%s.%s\' % ((filename or context.title_or_id(), format))\n
if typ == \'application/zip\':\n
filename += \'.zip\'\n
\n
\n
request.RESPONSE.setHeader(\'Content-disposition\', \'attachment;; filename="%s"\' % filename)\n
return data\n
</string> </value>
......@@ -99,7 +102,7 @@ return data\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>filename, format</string> </value>
<value> <string>filename=None, format=None, force=0</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -119,7 +122,7 @@ return data\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>2</int> </value>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
......@@ -127,12 +130,13 @@ return data\n
<tuple>
<string>filename</string>
<string>format</string>
<string>force</string>
<string>_getattr_</string>
<string>context</string>
<string>_getiter_</string>
<string>type</string>
<string>data</string>
<string>request</string>
<string>response</string>
<string>data</string>
<string>typ</string>
</tuple>
</value>
</item>
......@@ -144,12 +148,16 @@ return data\n
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
<tuple>
<none/>
<none/>
<int>0</int>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>OOoDocument_getTargetFile</string> </value>
<value> <string>Document_convert</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -70,12 +70,15 @@
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
htmlrepr=context.getHtmlRepresentation()[:2000]\n
htmlrepr=\'<div style="background-color:white;color:black;">%s</div>\' % htmlrepr\n
context.log(context.REQUEST[\'URL\'])\n
if context.portal_type==\'Spreadsheet\':\n
htmlrepr=htmlrepr.replace(\'<A HREF="#table\',\'<A HREF="%s#table\' % context.REQUEST[\'URL\'])\n
htmlrepr = context.getHtmlRepresentation()\n
\n
# wrap it in a div with white background\n
htmlrepr = \'<div style="background-color:white;color:black;">%s</div>\' % htmlrepr\n
\n
# fix internal links in spreadsheet\n
if context.portal_type == \'Spreadsheet\':\n
htmlrepr = htmlrepr.replace(\'<A HREF="#table\',\'<A HREF="%s#table\' % context.REQUEST[\'URL\'])\n
\n
return htmlrepr\n
......@@ -121,10 +124,10 @@ return htmlrepr\n
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>_getitem_</string>
<string>_getattr_</string>
<string>context</string>
<string>htmlrepr</string>
<string>_getitem_</string>
</tuple>
</value>
</item>
......
......@@ -69,10 +69,10 @@
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
XXX-JPS Please add description. If this is a core custmisable script,\n
please explain in Document class in Products.ERP5.Document\n
Implementation layer - operations to be perfomed after converting data to text\n
by discoverMetadata method or script.\n
"""\n
# overwrite this to add implementation-specific consistency check\n
\n
return\n
</string> </value>
</item>
......@@ -137,7 +137,7 @@ return\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_additionalConsistencyCheck</string> </value>
<value> <string>Document_finishIngestion</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -68,22 +68,24 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
<value> <string>"""\n
we return only those base categories to which all Document-related portal_types belong\n
you need to define the list of Document types here\n
and to add a base category add it in DMSFile property sheets\n
and to add a base category to it in DMSFile property sheets\n
or manually for all these portal_types\n
"""\n
\n
types=context.getPortalDocumentTypeList()\n
nrtypes=len(types)\n
basecatdict={}\n
for t in types:\n
bases=context.portal_types[t].getInstanceBaseCategoryList()\n
for b in bases:\n
basecatdict[b]=basecatdict.setdefault(b,0)+1\n
basecatlist=[k for k,v in basecatdict.items() if v==nrtypes]\n
type_list = context.getPortalDocumentTypeList()\n
nr_of_types = len(type_list)\n
\n
basecatdict = {}\n
\n
for type in type_list:\n
type_base_cat_list = context.portal_types[type].getInstanceBaseCategoryList()\n
for base_cat in type_base_cat_list:\n
basecatdict[base_cat] = basecatdict.setdefault(base_cat, 0)+1\n
\n
basecatlist = [k for k,v in basecatdict.items() if v == nr_of_types]\n
basecatlist.sort()\n
return basecatlist\n
</string> </value>
......@@ -130,15 +132,15 @@ return basecatlist\n
<tuple>
<string>_getattr_</string>
<string>context</string>
<string>types</string>
<string>type_list</string>
<string>len</string>
<string>nrtypes</string>
<string>nr_of_types</string>
<string>basecatdict</string>
<string>_getiter_</string>
<string>t</string>
<string>type</string>
<string>_getitem_</string>
<string>bases</string>
<string>b</string>
<string>type_base_cat_list</string>
<string>base_cat</string>
<string>_write_</string>
<string>append</string>
<string>$append0</string>
......
......@@ -68,25 +68,40 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString \n
<value> <string encoding="cdata"><![CDATA[
"""\n
dummy simple implementation - if no version, then return the newest in the chosen language\n
or in any language if not specified\n
calculate new revision number based on what is in the database\n
depends on revision numbering policy\n
here we assign number only if doc has complete coordinates and we make it the next one\n
ALWAYS set proxy roles - required here because we have to find all docs AND get property of the last\n
one of them, no matter what security says\n
"""\n
reference=kw.get(\'reference\')\n
if reference is None:\n
return []\n
\n
searchargs=dict(reference=reference,portal_type=context.getPortalDocumentTypeList(),sort_on=\'version\',sort_order=\'descending\')\n
language=kw.get(\'language\')\n
if language is not None:\n
searchargs[\'language\']=language\n
version=kw.get(\'version\')\n
if version is not None:\n
searchargs[\'version\']=version\n
res=list(context.portal_catalog(**searchargs))\n
return res\n
</string> </value>
reference = context.getReference()\n
version = context.getVersion()\n
language = context.getLanguage()\n
if not (reference and version and language):\n
return \'\'\n
\n
res = context.portal_catalog(reference=reference, version=version, language=language, sort_on=((\'revision\',\'descending\'),))\n
\n
if len(res) < 2: # if none or only this one\n
rev = 1\n
else:\n
last_obj = res[0].getObject()\n
if last_obj.getRelativeUrl() == context.getRelativeUrl():\n
last_obj = res[1].getObject() # we don\'t increment our own revision\n
last_rev = last_obj.getRevision()\n
try:\n
rev = int(last_rev) + 1\n
except ValueError:\n
rev = 1\n
\n
return \'%03d\' % rev\n
]]></string> </value>
</item>
<item>
<key> <string>_code</string> </key>
......@@ -102,7 +117,19 @@ return res\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
<value> <string></string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Reviewer</string>
</tuple>
</value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -128,19 +155,19 @@ return res\n
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>kw</string>
<string>_getattr_</string>
<string>reference</string>
<string>None</string>
<string>dict</string>
<string>context</string>
<string>searchargs</string>
<string>language</string>
<string>_write_</string>
<string>reference</string>
<string>version</string>
<string>list</string>
<string>_apply_</string>
<string>language</string>
<string>res</string>
<string>len</string>
<string>rev</string>
<string>_getitem_</string>
<string>last_obj</string>
<string>last_rev</string>
<string>int</string>
<string>ValueError</string>
</tuple>
</value>
</item>
......@@ -157,7 +184,7 @@ return res\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_findWikiSuccessor</string> </value>
<value> <string>Document_getNewRevision</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -69,15 +69,22 @@
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
XXX-JPS Put description here\n
Define here which sources of metadata should be preferred - the \n
\'order\' tuple defines the order. Source listed first is preferred\n
over source listed later.\n
\'input\' means data that are already set on the document (through web\n
interface, for example), supplied in the email text or submitted\n
from the contribute form.\n
"""\n
# XXX-JPS What is this for. If this part of the Document API, it should be documented in\n
# the Document class as a customisable script.\n
return {}\n
\n
# write your own method (probably External Method, since it is most likely\n
# to use re) that would analyze text content of the doc\n
# and return a dictionary of properties\n
order = (\n
\'file_name\',\n
\'input\',\n
\'user_login\',\n
\'content\'\n
)\n
\n
return order\n
</string> </value>
</item>
<item>
......@@ -100,7 +107,7 @@ return {}\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>ob,content,ptype</string> </value>
<value> <string>fname=None, user_name=None</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -120,15 +127,15 @@ return {}\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>3</int> </value>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>ob</string>
<string>content</string>
<string>ptype</string>
<string>fname</string>
<string>user_name</string>
<string>order</string>
</tuple>
</value>
</item>
......@@ -140,12 +147,15 @@ return {}\n
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
<tuple>
<none/>
<none/>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_getPropertyListFromContent</string> </value>
<value> <string>Document_getPreferredDocumentMetadataDiscoveryOrderList</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -68,22 +68,27 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please. Explain why this is needed\n
since getGroup exists on person objects.\n
<value> <string>"""\n
This script analyzes the document content (text_content) to find properties that might\n
be somehow encoded in the text. It is called by Document.getPropertyDictFromContent\n
method.\n
\n
Naming is probably misleading. Naming should explain\n
how different this is from getGroup.\n
To use, write your own method (probably External Method, since it is most likely\n
to use re) that would analyze text content of the doc\n
and return a dictionary of properties.\n
"""\n
# customizeable way of getting group for a person\n
# instead of default implementation\n
# here we store group directly in Career\n
\n
ob = ob or context\n
\n
try:\n
return person.getSubordinationValue().getGroup()\n
content = content or context.getTextContent()\n
except AttributeError:\n
return None\n
return {}\n
\n
ptype = ptype or context.getPortalType()\n
# do some analysis\n
\n
return {}\n
</string> </value>
</item>
<item>
......@@ -106,7 +111,7 @@ except AttributeError:\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
<value> <string>ob=None, content=None, ptype=None</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -126,16 +131,18 @@ except AttributeError:\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>ob</string>
<string>content</string>
<string>ptype</string>
<string>context</string>
<string>_getattr_</string>
<string>person</string>
<string>AttributeError</string>
<string>None</string>
</tuple>
</value>
</item>
......@@ -147,12 +154,16 @@ except AttributeError:\n
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
<tuple>
<none/>
<none/>
<none/>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Person_getGroup</string> </value>
<value> <string>Document_getPropertyDictFromContent</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -34,7 +34,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_getPropertyListFromMail</string> </value>
<value> <string>Document_getPropertyDictFromMail</string> </value>
</item>
<item>
<key> <string>title</string> </key>
......
......@@ -68,13 +68,12 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># implementation layer - additional properties to be set from various sources \n
# (e.g. current user info)\n
"""\n
XXX-JPS Description needed\n
This is a very unclear script. Probably needs some API level explanation\n
if it is really useful.\n
<value> <string>"""\n
Gets document properties discovered from the user who contributes / owns the document.\n
User would be usually the current user, but sometimes the name has to be given explicitly\n
if e.g. the doc is contributed by email, and the script is run by zope user.\n
"""\n
return {}\n
</string> </value>
</item>
<item>
......@@ -97,7 +96,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>user=None</string> </value>
<value> <string>user_name=None</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......@@ -123,7 +122,7 @@
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>user</string>
<string>user_name</string>
</tuple>
</value>
</item>
......@@ -142,7 +141,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_setOtherPropertyList</string> </value>
<value> <string>Document_getPropertyDictFromUser</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -71,35 +71,42 @@
<value> <string># XXX results should be cached as volatile attributes\n
\n
"""\n
XXX-JPS put description here\n
Get a list of related documents; wiki relations use API methods, explicit relations\n
(predecessor etc) get a list of related docs and return the newest (default)\n
version of each of them.\n
\'all\' returns a combined set of all related docs.\n
"""\n
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
# XXX-JPS should probably be moved to core API of document\n
# with dynamic method selection\n
# getWikiSuccessorValueList = get + upperCase(wiki_successor) + ValueList\n
# Document_getSimilarityCloud = Document_get + upperCase(cloud) + ValueList\n
# BG - not much use, they\'re too different\n
\n
from Products.ERP5Type.Utils import convertToUpperCase, convertToMixedCase\n
\n
def getRelatedLatest(category):\n
funcname=\'get%sValueList\' % category.title()\n
func=getattr(context,funcname)\n
return [o.DMSDocument_getLatestVersion() for o in func()]\n
funcname = \'get%sValueList\' % convertToUpperCase(category)\n
func = getattr(context, funcname)\n
return [o.getLatestVersionValue() for o in func()]\n
\n
what=kw.get(\'what\') # XXX-JPS Change \'what\' to more explicit name and include in API of script\n
if what==\'wiki_predecessor\':\n
return context.getWikiPredecessorValueList()\n
if what==\'wiki_successor\':\n
return context.getWikiSuccessorValueList()\n
if what.startswith(\'related\'):\n
return getRelatedLatest(what[8:])\n
if what==\'cloud\':\n
return context.DMS_getSimilarityCloud()\n
if what==\'all\':\n
dic={}\n
for ob in context.getWikiPredecessorValueList()+context.getWikiSuccessorValueList()+\\\n
getRelatedLatest(\'predecessor\')+getRelatedLatest(\'successor\')+getRelatedLatest(\'similar\'):\n
dic[ob]=True\n
relation_id = kw.get(\'relation_id\') # XXX-JPS Change \'what\' to more explicit name and include in API of script\n
if relation_id == \'wiki_predecessor\':\n
return context.getImplicitPredecessorValueList()\n
if relation_id == \'wiki_successor\':\n
return context.getImplicitSuccessorValueList()\n
if relation_id.startswith(\'related\'):\n
return getRelatedLatest(relation_id[8:])\n
if relation_id == \'cloud\':\n
return context.getSimilarCloudValueList()\n
if relation_id == \'all\':\n
dic = {}\n
for ob in context.getImplicitPredecessorValueList() + context.getImplicitSuccessorValueList() + \\\n
getRelatedLatest(\'predecessor\') + getRelatedLatest(\'successor\') + getRelatedLatest(\'similar\'):\n
dic[ob] = True\n
return dic.keys()\n
return []\n
\n
context.log(\'Relation %s is not provided for in this script\' % relation)\n
return [] # failover - undefined relation\n
</string> </value>
</item>
<item>
......@@ -144,9 +151,12 @@ return []\n
<tuple>
<string>a</string>
<string>kw</string>
<string>Products.ERP5Type.Utils</string>
<string>convertToUpperCase</string>
<string>convertToMixedCase</string>
<string>getRelatedLatest</string>
<string>_getattr_</string>
<string>what</string>
<string>relation_id</string>
<string>context</string>
<string>_getitem_</string>
<string>dic</string>
......@@ -154,6 +164,7 @@ return []\n
<string>ob</string>
<string>True</string>
<string>_write_</string>
<string>relation</string>
</tuple>
</value>
</item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description needed\n
"""\n
# XXX-JPS This should also be moved to Document API - using preferences\n
# and a title value taken from the script or preferences \n
from Products.ERP5Type.Message import Message\n
\n
what=context.REQUEST.get(\'what\')\n
\n
mapka={\'wiki_predecessor\':\'Wiki Predecessors\',\n
\'wiki_successor\':\'Wiki Successors\',\n
\'related_similar\':\'Similar documents\',\n
\'related_successor\':\'Related documents\',\n
\'related_predecessor\':\'Reference documents\',\n
\'cloud\':\'Similarity cloud\',\n
\'all\':\'All related documents\'}\n
\n
s=mapka.get(what)\n
if s is None:return \'\'\n
return str(Message(domain=\'ui\',message=s))\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>*a,**kw</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>a</string>
<string>kw</string>
<string>Products.ERP5Type.Message</string>
<string>Message</string>
<string>_getattr_</string>
<string>context</string>
<string>what</string>
<string>mapka</string>
<string>s</string>
<string>None</string>
<string>str</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_getRelatedDocumentsListboxTitle</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
returns all documents related by similarity (either way), recursively\n
so all documents related indirectly are also returned\n
recursion depth can be limited, to avoid returning all documents\n
if there is many similarities\n
every doc is returned in its latest version available\n
"""\n
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
lista={}\n
depth=int(depth)\n
\n
def getSimilarities(self,level=0): # XXX-JPS Naming: please do not use plural\n
level+=1\n
context.log(self.getRelativeUrl())\n
context.log(level)\n
res=self.getSimilarValueList()+self.getSimilarRelatedValueList()\n
for r in res:\n
if lista.get(r) is None:\n
lista[r]=True\n
if level!=depth:\n
getSimilarities(r,level)\n
\n
getSimilarities(context)\n
if lista.has_key(context):lista.pop(context)\n
return [o.DMSDocument_getLatestVersion() for o in lista.keys()]\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>depth=0</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>depth</string>
<string>lista</string>
<string>int</string>
<string>getSimilarities</string>
<string>context</string>
<string>_getattr_</string>
<string>append</string>
<string>$append0</string>
<string>_getiter_</string>
<string>o</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<tuple>
<int>0</int>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_getSimilarityCloud</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -68,39 +68,50 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here\n
<value> <string>"""\n
Used by parellel list field\n
Document_library/my_dms_category_list\n
(see http://wiki.erp5.org/HowToConfigureParallelListField)\n
To produce a tree we use Category_childShortTitleOrIdItemList\n
to display short title or id\n
"""\n
from Products.ERP5Type.Cache import CachingMethod\n
context.log(value_list)\n
\n
def cached_DMSGetItemList(base_category):\n
basecatobject=context.portal_categories.resolveCategory(base_category)\n
#return [(context.Base_trimPathName(x,100),y) for x,y in basecatobject.getCategoryChildLogicalPathItemList()]\n
basecatobject = context.portal_categories.resolveCategory(base_category)\n
return basecatobject.Category_childShortTitleOrIdItemList()\n
\n
cached_DMSGetItemList=CachingMethod(cached_DMSGetItemList,id=\'DMGetItemListCachedMethodWhatever\')\n
cached_DMSGetItemList = CachingMethod(cached_DMSGetItemList, id=\'DMGetItemListCachedMethodWhatever\')\n
\n
if default_sub_field_property_dict is None:\n
default_sub_field_property_dict={\'field_type\': \'MultiListField\', \'item_list\': [], \'required\': 0, \'value\': [], \'is_right_display\': 0, \'key\': \'default\', \'title\': \'Categories\', \'size\': 5}\n
default_sub_field_property_dict = {\n
\'field_type\': \'MultiListField\',\n
\'item_list\': [],\n
\'required\': 0,\n
\'value\': [],\n
\'is_right_display\': 0,\n
\'key\': \'default\',\n
\'title\': \'Categories\',\n
\'size\': 5\n
}\n
\n
sub_field_dict={}\n
maximum_list_size=5\n
sub_field_dict = {}\n
maximum_list_size = 5\n
\n
default_sub_field_property_dict[\'field_type\']=\'ListField\'\n
default_sub_field_property_dict[\'size\']=1\n
default_sub_field_property_dict[\'field_type\'] = \'ListField\'\n
default_sub_field_property_dict[\'size\'] = 1\n
\n
for base_category in item_list:\n
if not sub_field_dict.has_key(base_category):\n
basecatobject=context.portal_categories.resolveCategory(base_category)\n
sub_field_property_dict=default_sub_field_property_dict.copy()\n
sub_field_property_dict[\'key\']=base_category\n
sub_field_property_dict[\'title\']=basecatobject.getTranslatedTitle()\n
basecatobject = context.portal_categories.resolveCategory(base_category)\n
sub_field_property_dict = default_sub_field_property_dict.copy()\n
sub_field_property_dict[\'key\'] = base_category\n
sub_field_property_dict[\'title\'] = basecatobject.getTranslatedTitle()\n
# we cache this, so that we can apply expensive path processing techniques\n
sub_field_property_dict[\'item_list\']=cached_DMSGetItemList(base_category)\n
sub_field_property_dict[\'value\']=context.getParentValue().getParentValue().getProperty(base_category)\n
\n
sub_field_dict[base_category]=sub_field_property_dict\n
sub_field_property_dict[\'item_list\'] = cached_DMSGetItemList(base_category)\n
sub_field_property_dict[\'value\'] = context.getParentValue().getParentValue().getProperty(base_category)\n
\n
sub_field_dict[base_category] = sub_field_property_dict\n
\n
return sub_field_dict.values()\n
\n
......@@ -160,8 +171,6 @@ return sub_field_dict.values()\n
<string>is_right_display</string>
<string>Products.ERP5Type.Cache</string>
<string>CachingMethod</string>
<string>_getattr_</string>
<string>context</string>
<string>cached_DMSGetItemList</string>
<string>None</string>
<string>sub_field_dict</string>
......@@ -169,6 +178,8 @@ return sub_field_dict.values()\n
<string>_write_</string>
<string>_getiter_</string>
<string>base_category</string>
<string>_getattr_</string>
<string>context</string>
<string>basecatobject</string>
<string>sub_field_property_dict</string>
</tuple>
......
......@@ -70,59 +70,70 @@
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
#from Products.ERP5Type.Message import Message\n
\n
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here\n
The email ingestion script, called by ZMailIn upon reception of an email.\n
Finds out who sent the letter, finds the sender, discovers properties that may\n
be contained in the mail body (using Document_getPropertyListFromMail),\n
then creates and object from every attachment and sends notifications to the\n
sender.\n
\n
If it returns anything, it is bounced back to the sender as an error message. No return\n
value means everything was fine.\n
"""\n
noSenderInHeaderMsg="no sender in headers"\n
noSenderMsg="you are not in user database"\n
manySendersMsg="very serious error: your address has multiple entries"\n
noSubordinationMsg="you do not have properly set subordination (I could not find a group you are working in)"\n
\n
#from Products.ERP5Type.Message import Message\n
# translating doesn\'t make sense since we have no session, so no preferences\n
\n
noSenderInHeaderMsg = "no sender in headers"\n
noSenderMsg = "you are not in user database"\n
manySendersMsg = "very serious error: your address has multiple entries"\n
noSubordinationMsg = "you do not have properly set subordination (I could not find a group you are working in)"\n
\n
# get sender from headers\n
fromraw=theMail[\'headers\'][\'from\']\n
fromraw = theMail[\'headers\'][\'from\']\n
\n
senderemail=context.findAddress(fromraw)\n
senderemail = context.findAddress(fromraw)\n
if senderemail is None:\n
print noSenderInHeaderMsg\n
return printed\n
\n
# find sender\n
context.log(senderemail)\n
r=context.portal_catalog(portal_type=\'Email\',url_string=senderemail)\n
if len(r)==0:\n
r = context.portal_catalog(portal_type=\'Email\', url_string=senderemail)\n
if len(r) == 0:\n
print noSenderMsg\n
return printed\n
if len(r)>1:\n
if len(r) > 1:\n
print manySendersMsg\n
return printed\n
senderm=r[0]\n
person=senderm.getParent()\n
context.log(script.getId(),\'ok, this address belongs to \'+person.getRelativeUrl())\n
\n
mailprops=context.Document_getPropertiesFromMail(theMail[\'body\'])\n
senderm = r[0]\n
person = senderm.getParent()\n
context.log(script.getId(), \'ok, this address belongs to \' + person.getRelativeUrl())\n
\n
mailprops = context.Document_getPropertyListFromMail(theMail[\'body\'])\n
context.log(mailprops)\n
\n
# create objects from attachments\n
try:\n
for fname,data in theMail[\'attachments\'].items():\n
obj=context.DMS_createObjectFromFile(fname,data,mailprops.get(\'document_type\'),uname=person.getReference())\n
for fname, data in theMail[\'attachments\'].items():\n
obj = context.Document_createObjectFromFile(fname, data, portal_type=mailprops.get(\'document_type\'), user_name=person.getReference())\n
# if some properties were in the mail, overwrite the content attrs\n
for k in mailprops:\n
atr=k\n
if k==\'programme\':atr=\'source_project\'\n
if k!=\'document_type\':\n
obj.setProperty(atr,mailprops[k])\n
gr=person.Person_getGroup()\n
atr = k\n
if k == \'programme\': atr = \'source_project\'\n
if k != \'document_type\':\n
obj.setProperty(atr, mailprops[k])\n
gr = person.Person_getPrincipalGroup()\n
if gr is None:\n
print noSubordinationMsg\n
return printed\n
obj.setGroup(gr)\n
obj.manage_setLocalRoles(person.getReference(),[\'Owner\',])\n
context.DMS_notifyByEmail(address=senderemail,event=\'ingest\',object=obj)\n
except Exception,e:\n
context.log_traceback(context)\n
obj.manage_setLocalRoles(person.getReference(), [\'Owner\',])\n
context.Document_notifyByEmail(address=senderemail, event=\'ingest\', object=obj)\n
except Exception, e:\n
# context.log_traceback(context) # what the *** was this?\n
context.log(e)\n
raise\n
#return str(e)\n
return\n
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
this script does not save file data in a document\n
it can be run any time\n
is meant to extract metadata from file name and contents\n
"""\n
# XXX-JPS This script is probably what Document_discoverMetadata\n
# should do. There are too many similar scripts in the current design\n
# Please simplify and clarify. Use APIs at class level if necessary.\n
from Products.DCWorkflow.DCWorkflow import ValidationFailed\n
if data is None:\n
if hasattr(context,\'oo_data\'):\n
data=context.oo_data\n
else:\n
if hasattr(context,\'data\'):\n
data=data\n
\n
#if data is not None:\n
#context.setPropertyListFromContent()\n
\n
if fname is None:\n
fname=context.getSourceReference()\n
else:\n
context.setSourceReference(fname)\n
\n
if fname is not None:\n
context.setPropertyListFromFilename(fname)\n
context.guessMimeType(fname)\n
if not context.getTitle():\n
context.setTitle(fname)\n
# use duck typing to check if it is OOo\n
if hasattr(context,\'convert\') and hasattr(context,\'hasFile\') and hasattr(context,\'hasOOFile\'):\n
context.reset()\n
if context.hasFile() and not context.hasOOFile():\n
context.activate().OOoDocument_convertAfter()\n
context.activate(after_method_id=\'OOoDocument_convertAfter\').OOoDocument_postConversion()\n
try:\n
context.portal_workflow.doActionFor(context,\'validate_action\')\n
except ValidationFailed:\n
pass # we do not want to throw exception, just leave the document not validated\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>fname=None,data=None</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>fname</string>
<string>data</string>
<string>Products.DCWorkflow.DCWorkflow</string>
<string>ValidationFailed</string>
<string>None</string>
<string>hasattr</string>
<string>context</string>
<string>_getattr_</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<tuple>
<none/>
<none/>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_ingestFile</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -543,7 +543,7 @@
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>here/DMS_getRelatedDocumentsListboxTitle</string> </value>
<value> <string>here/REQUEST/listbox_title</string> </value>
</item>
</dictionary>
</pickle>
......@@ -562,7 +562,7 @@
<dictionary>
<item>
<key> <string>method_name</string> </key>
<value> <string>DMS_getRelatedDocumentList</string> </value>
<value> <string>Document_getRelatedDocumentList</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -243,7 +243,7 @@
</item>
<item>
<key> <string>hash_script_id</string> </key>
<value> <string>Base_hashDocumentCategoryItemList</string> </value>
<value> <string>Document_hashBaseCategoryList</string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
......@@ -299,7 +299,7 @@
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>here/Base_getDocumentCategoryItemList</string> </value>
<value> <string>here/Document_getBaseCategoryList</string> </value>
</item>
</dictionary>
</pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>#XXX-JPS What is the use of this script ?\n
return context.getWikiPredecessorValueList()\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>*a,**kw</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>a</string>
<string>kw</string>
<string>_getattr_</string>
<string>context</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_listWikiPredecessor</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -71,30 +71,36 @@
<value> <string encoding="cdata"><![CDATA[
"""\n
XXX-JPS Description here please\n
Used by email ingestor (Document_ingestEmail) to notify the user\n
about ingestion of a document (can also be used by other ingestion channels).\n
Checks consistency and lets the user know if everything is ok (this is a bit of a duplication\n
because consistency is checked also upon an attempt to validate).\n
\n
Preferences decide if the notification is sent always, only if something is wrong or never.\n
\n
Notifcation contains url of the document, so that one can click and do something.\n
"""\n
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
# XXX-JPS is this part of the Document API ? of the ingestion API ?\n
pref=context.portal_preferences.getPreferredDmsIngestEmailNotification()\n
if pref is not None and len(pref)==0:\n
\n
pref = context.portal_preferences.getPreferredDmsIngestEmailNotification()\n
if pref is not None and len(pref) != 0:\n
pref=pref[0]\n
if pref==\'never\':return\n
if pref == \'never\': return\n
\n
ob=kw[\'object\']\n
if ob.getPortalType()==\'Memo\': # we don\'t check constistency for Memo XXX use type groups, or what?\n
res=\'\'\n
ob = kw[\'object\']\n
if ob.getPortalType() == \'Memo\': # we don\'t check constistency for Memo XXX use type groups, or what?\n
res = \'\'\n
else:\n
res=ob.checkConsistency()\n
res=[c for c in res if c[1]==\'DocumentCoordinatesConstraint inconsistency\']\n
res = ob.checkConsistency()\n
res = [c for c in res if c[1] == \'DocumentCoordinatesConstraint inconsistency\']\n
\n
# shall we send?\n
send=(pref==\'always\' or len(res)>0)\n
if not send:return\n
send = (pref == \'always\' or len(res) > 0)\n
if not send: return\n
\n
if len(res)>0:\n
errmsg=\'<br/>\'.join(str(c[3]) for c in res)\n
subjecttpl=\'ingested %(name)s - there was a problem\'\n
msgtpl="""Your document "%(name)s" was ingested.\n
if len(res) > 0:\n
errmsg = \'<br/>\'.join(str(c[3]) for c in res)\n
subjecttpl = \'ingested %(name)s - there was a problem\'\n
msgtpl = """Your document "%(name)s" was ingested.\n
\n
The following problems were detected:\n
\n
......@@ -103,21 +109,21 @@ if len(res)>0:\n
click here: %(url)s/view to proceed and fix the problems.\n
"""\n
else:\n
errmsg=\'\'\n
subjecttpl=\'ingested %(name)s\'\n
msgtpl="""Your document "%(name)s" was successfully ingested.\n
errmsg = \'\'\n
subjecttpl = \'ingested %(name)s\'\n
msgtpl = """Your document "%(name)s" was successfully ingested.\n
\n
click here: %(url)s/view to proceed with your work.\n
"""\n
\n
subject=subjecttpl % {\'name\':ob.getSourceReference()}\n
subject = subjecttpl % {\'name\': ob.getSourceReference()}\n
\n
msg=msgtpl % {\'url\':ob.absolute_url(),\'name\':ob.getSourceReference(), \'errmsg\':errmsg}\n
msg = msgtpl % {\'url\': ob.absolute_url(), \'name\': ob.getSourceReference(), \'errmsg\': errmsg}\n
\n
mto=kw[\'address\']\n
mfro=\'dms@dms.nexedi.com\' # this should be in preferences\n
mto = kw[\'address\']\n
mfro = \'dms@dms.nexedi.com\' # XXX this should be in preferences\n
\n
context.MailHost.send(msg,mto,mfro,subject)\n
context.MailHost.send(msg, mto, mfro, subject)\n
]]></string> </value>
......
......@@ -69,35 +69,41 @@
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
XXX-JPS Description here please\n
Implementation of a highly sophisticated security system. Context has a security classification\n
like "personal/project", "collaborative/public" etc and we check if a given policy or a set of \n
policies (defined with wildcard, like "personal/*" or "*/project") applies to the context.\n
\n
Classification has to have two levels, and first level is translated into a selected second-level\n
classification.\n
\n
Some classifications require something more to apply (like */project requires source_project), but\n
this check can be skipped by setting membershiponly to True.\n
"""\n
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
\n
klass=context.getClassification()\n
if klass is None:return False\n
kl=klass.split(\'/\')\n
klass = context.getClassification()\n
if klass is None: return False\n
kl = klass.split(\'/\')\n
\n
if len(kl)==1:\n
if len(kl) == 1:\n
# personal = personal/restricted\n
if kl[0]==\'personal\':kl.append(\'restricted\')\n
if kl[0] == \'personal\': kl.append(\'restricted\')\n
# collaborative = collaborative/team\n
if kl[0]==\'collaborative\':kl.append(\'team\')\n
if kl[0] == \'collaborative\': kl.append(\'team\')\n
\n
# personal/restricted is unconditional\n
if kl==[\'personal,restricted\']:\n
return policy==\'personal/restricted\'\n
\n
pol=policy.split(\'/\')\n
if kl == [\'personal,restricted\']:\n
return policy == \'personal/restricted\'\n
\n
pol = policy.split(\'/\')\n
\n
if not membershiponly:\n
# project policies do not apply if we don\'t have source_project\n
if pol[1]==\'project\':\n
if context.getSourceProject()==None:\n
if pol[1] == \'project\':\n
if context.getSourceProject() == None:\n
return False\n
\n
# if all conditions are met, check if the policy is ok (wildcards are ok)\n
return (pol[0] in (\'*\',kl[0])) and (pol[1] in (\'*\',kl[1]))\n
return (pol[0] in (\'*\', kl[0])) and (pol[1] in (\'*\', kl[1]))\n
</string> </value>
</item>
<item>
......@@ -120,7 +126,7 @@ return (pol[0] in (\'*\',kl[0])) and (pol[1] in (\'*\',kl[1]))\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>policy,membershiponly=False</string> </value>
<value> <string>policy, membershiponly=False</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
......
......@@ -69,59 +69,58 @@
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
XXX-JPS Description here please\n
This script is called when a file is uploaded to an object via ERP5 standard interface.\n
It does the following:\n
\n
- determines portal types appropriate for the file type uploaded, and checks if the context portal type\n
is one of those (this is not a complete check, but all we can do at this stage)\n
- checks if context already has some data (we do not allow re-upload of files)\n
If the context has data, it creates a copy of context (with the same portal type most important properties\n
copied) and uploads the file into the copy (the rest is handled by portal_contributions)\n
Otherwise it just uploads the file and calls metadata discovery script.\n
\n
"""\n
# XXX-JPS the number of upload / ingestion method is too high and their organisation\n
# is very confusing. The only way to progress is to explain the general concept\n
# within the Document or File class (do not forget that TextDocument can also\n
# be uploaded) \n
\n
translateString = context.Base_translateString\n
request = context.REQUEST\n
ptype = context.getPortalType()\n
fname = file.filename\n
current_type = context.getPortalType()\n
file_name = file.filename\n
\n
# XXX-JPS - rename to OOoDocument_uploadFile since this is for all types which related to OOoDocument class\n
# XXX-JPS - it would also be nice to provide this import function at any location\n
# Folder_viewOOoDocumentUploadDialog which calls Folder_uploadOOoDocumentFile\n
# this way it is easy to add a document anywhere\n
\n
# we check for appropriate file type (by extension, using content_type_registry)\n
# we check for appropriate file type (by extension)\n
# ContributionTool_getCandidateTypeListByExtension script returns a tuple of\n
# one or more possible portal types for given extension\n
# we accept or suggest appropriate portal type\n
ctype=context.content_type_registry.findTypeName(fname,None,None)\n
if ctype is None and ptype != \'File\':\n
return context.Base_redirect(dialog_id,\n
keep_items = dict(portal_status_message = translateString("Sorry, this is not a ${portal_type}. This file should be uploaded into a File document.", mapping = dict(portal_type = ptype)),\n
cancel_url = kw[\'cancel_url\']), **kw)\n
if ctype is not None and ctype != ptype:\n
return context.Base_redirect(dialog_id,\n
keep_items = dict(portal_status_message = translateString("Sorry, this is not a ${portal_type}. This file should be uploaded into a ${appropriate_type} document.",\n
mapping = dict(portal_type = ptype,\n
appropriate_type = ctype)),\n
cancel_url = kw[\'cancel_url\']), **kw)\n
ext = file_name[file_name.rfind(\'.\')+1:]\n
candidate_type_list = context.ContributionTool_getCandidateTypeListByExtension(ext)\n
if candidate_type_list == () and current_type != \'File\':\n
portal_status_message = translateString("Sorry, this is not one of ${portal_type}. This file should be uploaded into a File document.", \n
mapping = dict(portal_type = str(candidate_type_list)))\n
return context.Base_redirect(dialog_id, keep_items = dict(portal_status_message=portal_status_message,cancel_url = kw[\'cancel_url\']), **kw)\n
if candidate_type_list and current_type not in candidate_type_list:\n
portal_status_message = translateString("Sorry, this is a ${portal_type}. This file should be uploaded into a ${appropriate_type} document.",\n
mapping = dict(portal_type = current_type, appropriate_type = str(candidate_type_list)))\n
return context.Base_redirect(dialog_id, keep_items = dict(portal_status_message =portal_status_message, cancel_url = kw[\'cancel_url\']), **kw)\n
\n
if hasattr(context, \'data\'): # this is a re-upload, we create a \'copy\'\n
# XXX-JPS please create API for this. Never access attributes directly\n
parent = context.getParentValue()\n
new_document = parent.newContent(portal_type = ptype)\n
property_list = context.portal_types[ptype].getInstanceBaseCategoryList()\n
# we copy many things, ingestion script may then overwrite some of these\n
if context.hasFile(): # this is a re-upload, we create a \'copy\'\n
property_list = context.portal_types[current_type].getInstanceBaseCategoryList() # all category memberships\n
# we copy many things, ingestion script may then overwrite some of these (if allowed)\n
# we rely on ingestion script to determine coordinates\n
property_list += [\'title\', \'short_title\', \'index\', \'description\', \'subject\']\n
property_list += [\'title\', \'short_title\', \'index\', \'description\'] # maybe\n
vals = {}\n
vals[\'source_reference\'] = file_name\n
for prop in property_list:\n
v = context.getProperty(prop)\n
if v is not None:\n
new_document.setProperty(prop,v) # XXX-JPS - This is slow - make a dict and use edit instead\n
# XXX-JPS Why don\'t we copy and paste ?\n
ob = new_document\n
msg = translateString(\'Document already contained file data. A new document was created to with the uploaded file.\')\n
vals[prop] = v\n
# we create new ob by portal_contributions, supplying current properties as input props\n
ob = context.portal_contributions.newContent(portal_type = current_type, file=file, **vals)\n
msg = translateString(\'Document already contained file data. A new document was created to which the file was uploaded.\')\n
else:\n
ob = context\n
ob.manage_upload(file)\n
ob.discoverMetadata(file_name=file_name)\n
msg = translateString(\'File uploaded.\')\n
\n
# Upload file\n
ob.manage_upload(file)\n
ob.DMS_ingestFile(fname)\n
\n
# Return to view mode\n
return ob.Base_redirect(form_id, keep_items = {\'portal_status_message\' : msg}, **kw)\n
</string> </value>
......@@ -174,20 +173,22 @@ return ob.Base_redirect(form_id, keep_items = {\'portal_status_message\' : msg},
<string>context</string>
<string>translateString</string>
<string>request</string>
<string>ptype</string>
<string>fname</string>
<string>None</string>
<string>ctype</string>
<string>_apply_</string>
<string>dict</string>
<string>current_type</string>
<string>file_name</string>
<string>_getitem_</string>
<string>hasattr</string>
<string>parent</string>
<string>new_document</string>
<string>ext</string>
<string>candidate_type_list</string>
<string>dict</string>
<string>str</string>
<string>portal_status_message</string>
<string>_apply_</string>
<string>property_list</string>
<string>vals</string>
<string>_write_</string>
<string>_getiter_</string>
<string>prop</string>
<string>v</string>
<string>None</string>
<string>ob</string>
<string>msg</string>
</tuple>
......
......@@ -299,7 +299,7 @@
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>here/document_preview_iframe</string> </value>
<value> <string>here/Document_decorateHtmlRepresentation</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -68,21 +68,20 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
<value> <string>"""\n
Part of the core of security mechanism - translates a list of categories\n
into a structure of codification codes.\n
\n
The differences to the "stock" implementation are:\n
\n
* sometimes we use Project\n
object instead of a category, and Project has reference instead of codification,\n
so we have to provide for it\n
\n
* category value can refer to a Person (by reference), then we look for the Person\n
instead of resolving category\n
\n
"""\n
# category_order : list of base_categories we want to use to generate the group id\n
# kw : keys should be base categories,\n
# values should be value of corresponding relative urls (obtained by getBaseCategory())\n
#\n
# Example call : context.ERP5TypeSecurity_asGroupId(category_order=(\'site\', \'group\', \'function\'),\n
# site=\'france/lille\', group=\'nexedi\', function=\'accounting/accountant\')\n
# This will generate a string like \'LIL_NXD_ACT\' where "LIL", "NXD" and "ACT" are the codification\n
# of respecively "france/lille", "nexedi" and "accounting/accountant" categories\n
#\n
# ERP5Type_asSecurityGroupId can also return a list of users whenever a category points\n
# to a Person instance. This is useful to implement user based local role assignments\n
\n
code_list = []\n
user_list = []\n
......@@ -104,10 +103,10 @@ for base_category in category_order:\n
category_list = [category_list]\n
for category in category_list:\n
category_path = \'%s/%s\' % (base_category, category)\n
if base_category==\'reference\': # we will be looking for Person\n
res=context.portal_catalog(portal_type=\'Person\',reference=category)\n
if res is not None and len(res)==1:\n
category_object=res[0].getObject()\n
if base_category == \'reference\': # we will be looking for Person\n
res=context.portal_catalog(portal_type=\'Person\', reference=category)\n
if res is not None and len(res) == 1:\n
category_object = res[0].getObject()\n
else:\n
raise Exception("no person "+category)\n
else:\n
......@@ -130,8 +129,8 @@ for base_category in category_order:\n
# Return a list of users or a single group\n
if user_list:\n
return user_list\n
code_list=[c for c in code_list if c is not None]\n
r=\'_\'.join(code_list)\n
code_list = [c for c in code_list if c is not None]\n
r = \'_\'.join(code_list)\n
return r\n
</string> </value>
</item>
......
......@@ -70,21 +70,19 @@
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
A script returning security categories from a Person\'s assignments.\n
\n
Differences to the stock implementation:\n
\n
* if category is source_project, we look for destination_project\n
\n
* if category is group, we return not only the group, but also all its parents\n
(unless we say it is strict)\n
"""\n
# XXX For now, this script requires proxy manager to retrieve the Person object in all cases\n
\n
# base_category_list : list of category values we need to retrieve\n
# user_name : string obtained from getSecurityManager().getUser().getUserName() [NuxUserGroup]\n
# or from getSecurityManager().getUser().getId() [PluggableAuthService with ERP5GroupManager]\n
# object : object which we want to assign roles to.\n
# portal_type : portal type of object\n
# XXX For now, this script requires proxy manager to retrieve the Person object in all cases\n
\n
# must always return a list of dicts\n
context.log(\'base_category_list\',base_category_list)\n
context.log(\'user\',user_name)\n
category_list = []\n
\n
person_module = context.portal_url.getPortalObject().getDefaultModule(\'Person\')\n
......@@ -92,7 +90,7 @@ person_module = context.portal_url.getPortalObject().getDefaultModule(\'Person\'
# prevent a very strange bug, sometimes without getObject the\n
# assignment is not found\n
person_object_list = [x.getObject() for x in person_module.searchFolder(portal_type=\'Person\', reference=user_name)]\n
context.log(len(person_object_list))\n
\n
if len(person_object_list) != 1:\n
if len(person_object_list) > 1:\n
raise ConsistencyError, "Error: There is more than one Person with reference \'%s\'" % user_name\n
......@@ -101,36 +99,36 @@ if len(person_object_list) != 1:\n
# this happens for example when a manager with no associated person object\n
# creates a person_object for a new user\n
return []\n
\n
person_object = person_object_list[0]\n
\n
# We look for valid assignments of this user\n
\n
for assignment in person_object.contentValues(filter={\'portal_type\': \'Assignment\'}):\n
category_dict = {}\n
if assignment.getValidationState() == \'open\':\n
try:\n
for base_category in base_category_list:\n
if base_category==\'source_project\':\n
category_value=assignment.getDestinationProject()\n
if base_category == \'source_project\':\n
category_value = assignment.getDestinationProject()\n
else:\n
category_value = assignment.getProperty(base_category)\n
if category_value not in (None, \'\'):\n
if root: category_value=category_value.split(\'/\')[0]\n
category_dict[base_category] = category_value\n
else:\n
raise RuntimeError, "Error: \'%s\' property is required in order to update person security group" % (base_category)\n
category_list.append(category_dict)\n
# if it is group, we go up the hierarchy (because if you work in group/a/b/c, chances are you \n
# are working in group/a/b, too :)\n
if base_category==\'group\':\n
grouplist=category_value.split(\'/\')\n
if base_category == \'group\' and not strict:\n
grouplist = category_value.split(\'/\')\n
for i in range(1,len(grouplist)):\n
cdict=category_dict.copy()\n
cdict[\'group\']=\'/\'.join(grouplist[:-i])\n
cdict = category_dict.copy()\n
cdict[\'group\'] = \'/\'.join(grouplist[:-i])\n
category_list.append(cdict)\n
except RuntimeError,e:\n
context.log(str(e))\n
\n
context.log(category_list)\n
return category_list\n
......@@ -156,7 +154,7 @@ return category_list\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>base_category_list, user_name, object, portal_type</string> </value>
<value> <string>base_category_list, user_name, object, portal_type, strict=False, root=False</string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
......@@ -184,7 +182,7 @@ return category_list\n
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>4</int> </value>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
......@@ -194,9 +192,11 @@ return category_list\n
<string>user_name</string>
<string>object</string>
<string>portal_type</string>
<string>strict</string>
<string>root</string>
<string>category_list</string>
<string>_getattr_</string>
<string>context</string>
<string>category_list</string>
<string>person_module</string>
<string>append</string>
<string>$append0</string>
......@@ -231,7 +231,10 @@ return category_list\n
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
<tuple>
<int>0</int>
<int>0</int>
</tuple>
</value>
</item>
<item>
......
......@@ -68,61 +68,13 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
<value> <string>"""\n
This does the same as ERP5Type_getSecurityCategoryFromAssignment, but we use it if we want\n
only the group the user is directly assigned to (not the whole group hierarchy path).\n
"""\n
XXX-JPS Description here please\n
"""\n
# the same, but does group only with strict membership\n
# XXX needs refactoring\n
\n
# must always return a list of dicts\n
context.log(\'base_category_list\',base_category_list)\n
context.log(\'user\',user_name)\n
category_list = []\n
\n
person_module = context.portal_url.getPortalObject().getDefaultModule(\'Person\')\n
# It is better to keep getObject(), in this script this\n
# prevent a very strange bug, sometimes without getObject the\n
# assignment is not found\n
person_object_list = [x.getObject() for x in person_module.searchFolder(portal_type=\'Person\', reference=user_name)]\n
context.log(len(person_object_list))\n
if len(person_object_list) != 1:\n
if len(person_object_list) > 1:\n
raise ConsistencyError, "Error: There is more than one Person with reference \'%s\'" % user_name\n
else:\n
# if a person_object was not found in the module, we do nothing more\n
# this happens for example when a manager with no associated person object\n
# creates a person_object for a new user\n
return []\n
person_object = person_object_list[0]\n
\n
# We look for valid assignments of this user\n
\n
for assignment in person_object.contentValues(filter={\'portal_type\': \'Assignment\'}):\n
category_dict = {}\n
if assignment.getValidationState() == \'open\':\n
try:\n
for base_category in base_category_list:\n
if base_category==\'source_project\':\n
category_value=assignment.getDestinationProject()\n
else:\n
category_value = assignment.getProperty(base_category)\n
if category_value not in (None, \'\'):\n
category_dict[base_category] = category_value\n
else:\n
raise RuntimeError, "Error: \'%s\' property is required in order to update person security group" % (base_category)\n
category_list.append(category_dict)\n
\n
except RuntimeError,e:\n
context.log(str(e))\n
\n
context.log(category_list)\n
return category_list\n
]]></string> </value>
return context.ERP5Type_getSecurityCategoryFromAssignment(base_category_list, user_name, object, portal_type, strict=True)\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
......@@ -184,26 +136,7 @@ return category_list\n
<string>portal_type</string>
<string>_getattr_</string>
<string>context</string>
<string>category_list</string>
<string>person_module</string>
<string>append</string>
<string>$append0</string>
<string>_getiter_</string>
<string>x</string>
<string>person_object_list</string>
<string>len</string>
<string>ConsistencyError</string>
<string>_getitem_</string>
<string>person_object</string>
<string>assignment</string>
<string>category_dict</string>
<string>base_category</string>
<string>category_value</string>
<string>None</string>
<string>_write_</string>
<string>RuntimeError</string>
<string>e</string>
<string>str</string>
<string>True</string>
</tuple>
</value>
</item>
......
......@@ -68,22 +68,18 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
<value> <string>"""\n
Security categories assigned from the Person who is set as the destination\n
of the document (e.g. in Memo type).\n
"""\n
XXX-JPS Description here please\n
"""\n
\n
# here we calculate permissions for a memo - we must find the recipient\n
\n
context.log(base_category_list)\n
category_list = []\n
\n
for ob in object.getDestinationValueList():\n
context.log(ob.getRelativeUrl())\n
category_dict = {}\n
for base_category in base_category_list:\n
if base_category==\'group\':\n
category_value=ob.Person_getGroup()\n
if base_category == \'group\':\n
category_value = ob.Person_getPrincipalGroup()\n
else:\n
category_value = ob.getProperty(base_category)\n
if category_value not in (None, \'\'):\n
......@@ -153,10 +149,9 @@ return category_list\n
<string>user_name</string>
<string>object</string>
<string>portal_type</string>
<string>_getattr_</string>
<string>context</string>
<string>category_list</string>
<string>_getiter_</string>
<string>_getattr_</string>
<string>ob</string>
<string>category_dict</string>
<string>base_category</string>
......@@ -164,6 +159,7 @@ return category_list\n
<string>None</string>
<string>_write_</string>
<string>RuntimeError</string>
<string>context</string>
</tuple>
</value>
</item>
......
......@@ -68,12 +68,11 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
<value> <string>"""\n
Get security categories from the Assignments of the Person the document\n
is addressed to (destination). Can be multiple destination persons.\n
"""\n
\n
context.log(base_category_list)\n
category_list = []\n
\n
# We look for valid assignments of destination users\n
......@@ -82,8 +81,8 @@ for person_object in object.getDestinationValueList(portal_type=\'Person\'):\n
if assignment.getValidationState() == \'open\':\n
category_dict = {}\n
for base_category in base_category_list:\n
if base_category==\'source_project\':\n
category_value=assignment.getDestinationProject()\n
if base_category == \'source_project\':\n
category_value = assignment.getDestinationProject()\n
else:\n
category_value = assignment.getProperty(base_category)\n
if category_value not in (None, \'\'):\n
......@@ -91,7 +90,7 @@ for person_object in object.getDestinationValueList(portal_type=\'Person\'):\n
else:\n
raise RuntimeError, "Error: \'%s\' property is required in order to update person security group" % (base_category)\n
category_list.append(category_dict)\n
context.log(category_list)\n
\n
return category_list\n
</string> </value>
</item>
......@@ -153,10 +152,9 @@ return category_list\n
<string>user_name</string>
<string>object</string>
<string>portal_type</string>
<string>_getattr_</string>
<string>context</string>
<string>category_list</string>
<string>_getiter_</string>
<string>_getattr_</string>
<string>person_object</string>
<string>assignment</string>
<string>category_dict</string>
......
......@@ -68,16 +68,14 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
<value> <string>"""\n
This is for calculating permissions to a Person object\n
we take categories from his Assignments, so we don\'t look for\n
Person, just take from the object.\n
"""\n
XXX-JPS Description here please\n
"""\n
\n
# here we calculate permissions for a Person, so we need categories from his assignment\n
\n
# must always return a list of dicts\n
# XXX could use some refactoring...\n
\n
context.log(base_category_list)\n
category_list = []\n
\n
person_object = object\n
......@@ -87,8 +85,8 @@ for assignment in person_object.contentValues(filter={\'portal_type\': \'Assignm
if assignment.getValidationState() == \'open\':\n
category_dict = {}\n
for base_category in base_category_list:\n
if base_category==\'source_project\':\n
category_value=assignment.getDestinationProject()\n
if base_category == \'source_project\':\n
category_value = assignment.getDestinationProject()\n
else:\n
category_value = assignment.getProperty(base_category)\n
if category_value not in (None, \'\'):\n
......@@ -96,7 +94,7 @@ for assignment in person_object.contentValues(filter={\'portal_type\': \'Assignm
else:\n
raise RuntimeError, "Error: \'%s\' property is required in order to update person security group" % (base_category)\n
category_list.append(category_dict)\n
context.log(category_list)\n
\n
return category_list\n
</string> </value>
</item>
......@@ -158,11 +156,10 @@ return category_list\n
<string>user_name</string>
<string>object</string>
<string>portal_type</string>
<string>_getattr_</string>
<string>context</string>
<string>category_list</string>
<string>person_object</string>
<string>_getiter_</string>
<string>_getattr_</string>
<string>assignment</string>
<string>category_dict</string>
<string>base_category</string>
......
......@@ -70,21 +70,11 @@
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
Get security categories from current user\n
XXX I\'m not sure it is used anywhere at the moment.\n
"""\n
\n
# XXX For now, this script requires proxy manager to retrieve the Person object in all cases\n
\n
# base_category_list : list of category values we need to retrieve\n
# user_name : string obtained from getSecurityManager().getUser().getUserName() [NuxUserGroup]\n
# or from getSecurityManager().getUser().getId() [PluggableAuthService with ERP5GroupManager]\n
# object : object which we want to assign roles to.\n
# portal_type : portal type of object\n
\n
# must always return a list of dicts\n
\n
category_list = []\n
\n
person_module = context.portal_url.getPortalObject().getDefaultModule(\'Person\')\n
......@@ -111,7 +101,7 @@ for base_category in base_category_list:\n
else:\n
raise RuntimeError, "Error: \'%s\' property is required in order to update person security group" % (base_category)\n
category_list.append(category_dict)\n
#context.log(category_list)\n
\n
return category_list\n
......
......@@ -68,19 +68,18 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
<value> <string>"""\n
Core security script - defines the way to get security groups of the current user.\n
"""\n
\n
# XXX-JPS This code is quite frightening. I wonder really what it is for.\n
\n
#context.log(\'---\')\n
return (\n
(\'ERP5Type_getSecurityCategoryFromAssignment\', [\'function\'] ),\n
(\'ERP5Type_getSecurityCategoryFromAssignment\', [\'source_project\'] ),\n
(\'ERP5Type_getSecurityCategoryFromAssignment\', [\'function\',\'source_project\'] ),\n
(\'ERP5Type_getSecurityCategoryFromAssignment\', [\'function\', \'source_project\'] ),\n
(\'ERP5Type_getSecurityCategoryFromAssignment\', [\'group\'] ),\n
(\'ERP5Type_getSecurityCategoryRoot\',[\'group\']),\n
(\'ERP5Type_getSecurityCategoryRoot\', [\'group\']),\n
)\n
</string> </value>
</item>
......
......@@ -68,64 +68,16 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
# XXX-JPS reformat code as explained in Base_assembleSearchString\n
<value> <string>"""\n
This is the same as ERP5Type_getSecurityCategoryFromAssignment\n
only it returns only the first part of category\n
It is used e.g. to figure out if the user is working anywhere\n
in the certain organisation - for this, all we need is the first part\n
of the group category.\n
"""\n
XXX-JPS Description here please\n
"""\n
# XXX it is the same as ERP5Type_getSecurityCategoryFromAssignment\n
# only it returns only the first part of category\n
\n
# XXX For now, this script requires proxy manager to retrieve the Person object in all cases\n
\n
# base_category_list : list of category values we need to retrieve\n
# user_name : string obtained from getSecurityManager().getUser().getUserName() [NuxUserGroup]\n
# or from getSecurityManager().getUser().getId() [PluggableAuthService with ERP5GroupManager]\n
# object : object which we want to assign roles to.\n
# portal_type : portal type of object\n
\n
# must always return a list of dicts\n
\n
category_list = []\n
\n
person_module = context.portal_url.getPortalObject().getDefaultModule(\'Person\')\n
# It is better to keep getObject(), in this script this\n
# prevent a very strange bug, sometimes without getObject the\n
# assignment is not found\n
person_object_list = [x.getObject() for x in person_module.searchFolder(portal_type=\'Person\', reference=user_name)]\n
\n
if len(person_object_list) != 1:\n
if len(person_object_list) > 1:\n
raise ConsistencyError, "Error: There is more than one Person with reference \'%s\'" % user_name\n
else:\n
# if a person_object was not found in the module, we do nothing more\n
# this happens for example when a manager with no associated person object\n
# creates a person_object for a new user\n
return []\n
person_object = person_object_list[0]\n
\n
# We look for valid assignments of this user\n
for assignment in person_object.contentValues(filter={\'portal_type\': \'Assignment\'}):\n
if assignment.getValidationState() == \'open\':\n
category_dict = {}\n
for base_category in base_category_list:\n
if base_category==\'source_project\':\n
category_value=assignment.getDestinationProject()\n
else:\n
category_value = assignment.getProperty(base_category)\n
#context.log(category_value)\n
if category_value not in (None, \'\'):\n
category_value=category_value.split(\'/\')[0]\n
category_dict[base_category] = category_value\n
else:\n
raise RuntimeError, "Error: \'%s\' property is required in order to update person security group" % (base_category)\n
category_list.append(category_dict)\n
#context.log(category_list)\n
return category_list\n
]]></string> </value>
return context.ERP5Type_getSecurityCategoryFromAssignment(base_category_list, user_name, object, portal_type, strict=True, root=True)\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
......@@ -185,26 +137,9 @@ return category_list\n
<string>user_name</string>
<string>object</string>
<string>portal_type</string>
<string>category_list</string>
<string>_getattr_</string>
<string>context</string>
<string>person_module</string>
<string>append</string>
<string>$append0</string>
<string>_getiter_</string>
<string>x</string>
<string>person_object_list</string>
<string>len</string>
<string>ConsistencyError</string>
<string>_getitem_</string>
<string>person_object</string>
<string>assignment</string>
<string>category_dict</string>
<string>base_category</string>
<string>category_value</string>
<string>None</string>
<string>_write_</string>
<string>RuntimeError</string>
<string>True</string>
</tuple>
</value>
</item>
......
......@@ -68,18 +68,25 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># this is called from interaction workflow, upon every edit\n
# can be called regularly from portal_alarms, or something like that\n
<value> <string>"""\n
Refreshes the content of external document; then publishes or retracts\n
depending on whether refresh was successful.\n
\n
This is called from interaction workflow, upon every edit\n
can be called regularly from portal_alarms, or something like that.\n
"""\n
\n
if context.getUrlProtocol() is None or context.getUrlString() is None:\n
context.log("Incomplete url in %s" % context.getRelativeUrl(),context.getQualifiedUrl())\n
res=False\n
res = False\n
else:\n
res=context.spiderSource()\n
if res and context.getSimulationState()==\'draft\':\n
context.getPortalObject().portal_workflow.doActionFor(context,\'publish_action\')\n
if not res and context.getSimulationState()==\'public\':\n
context.getPortalObject().portal_workflow.doActionFor(context,\'retract_action\')\n
res = context.spiderSource()\n
\n
if res and context.getSimulationState() == \'draft\':\n
context.getPortalObject().portal_workflow.doActionFor(context, \'publish_action\')\n
if not res and context.getSimulationState() == \'public\':\n
context.getPortalObject().portal_workflow.doActionFor(context, \'retract_action\')\n
\n
context.reindexObject()\n
</string> </value>
</item>
......
......@@ -68,14 +68,13 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
<value> <string>"""\n
Public interface to ExternalDocument_spiderAndSetState script.\n
"""\n
\n
context.resetTopObject()\n
context.ExternalDocument_spiderAndSetState()\n
return context.REQUEST.RESPONSE.redirect(context.absolute_url()+\'/view?portal_status_message=Done\')\n
return context.REQUEST.RESPONSE.redirect(context.absolute_url() + \'/view?portal_status_message=Done\')\n
</string> </value>
</item>
<item>
......
......@@ -102,7 +102,7 @@
<string>my_translated_simulation_state_title</string>
<string>my_option_recursively</string>
<string>my_recursion_depth</string>
<string>my_external_processing_status_message</string>
<string>external_processing_status_message</string>
</list>
</value>
</item>
......
......@@ -14,7 +14,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_external_processing_status_message</string> </value>
<value> <string>external_processing_status_message</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -124,7 +124,9 @@
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -263,4 +265,23 @@
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.TALESField</string>
<string>TALESMethod</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: here.portal_workflow.getInfoFor(ob=here, name=\'history\', wf_id=\'external_processing_workflow\')[-1][\'comment\']</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -47,7 +47,7 @@
</item>
<item>
<key> <string>action</string> </key>
<value> <string>DMSDocument_uploadFile</string> </value>
<value> <string>Document_uploadFile</string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
......@@ -118,7 +118,7 @@
</item>
<item>
<key> <string>name</string> </key>
<value> <string>DMS_FileUploadDialog</string> </value>
<value> <string>File_uploadDialog</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
......
......@@ -68,22 +68,24 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
<value> <string>"""\n
Processes requests for conversion of and Image to a desired format.\n
Requires format and desired filename (adds extension if missing).\n
Sets headers and uses native Zope method to produce output.\n
"""\n
\n
request=context.REQUEST\n
fname=request.get(\'filename\')\n
format=request.get(\'format\')\n
context.log(\'format\',format)\n
request = context.REQUEST\n
fname = request.get(\'filename\')\n
format = request.get(\'format\')\n
\n
if fname is None or format is None:\n
return\n
if not fname.endswith(\'.\'+format):\n
fname+=\'.\'+format\n
request.RESPONSE.setHeader(\'Content-type\', \'application/\'+format)\n
if not fname.endswith(\'.\' + format):\n
fname += \'.\' + format\n
\n
request.RESPONSE.setHeader(\'Content-type\', \'application/\' + format)\n
request.RESPONSE.setHeader(\'Content-disposition\', \'attachment;; filename="%s"\' % fname)\n
return context.index_html(request,request.RESPONSE,display=\'medium\',format=format)\n
return context.index_html(request, request.RESPONSE, **kw)\n
</string> </value>
</item>
<item>
......@@ -133,6 +135,7 @@ return context.index_html(request,request.RESPONSE,display=\'medium\',format=for
<string>fname</string>
<string>format</string>
<string>None</string>
<string>_apply_</string>
</tuple>
</value>
</item>
......@@ -149,7 +152,7 @@ return context.index_html(request,request.RESPONSE,display=\'medium\',format=for
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ImageDocument_getTargetFile</string> </value>
<value> <string>Image_convert</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -4,8 +4,8 @@
<pickle>
<tuple>
<tuple>
<string>Products.PageTemplates.ZopePageTemplate</string>
<string>ZopePageTemplate</string>
<string>Products.ERP5Form.Form</string>
<string>ERP5Form</string>
</tuple>
<none/>
</tuple>
......@@ -31,12 +31,7 @@
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
<dictionary/>
</value>
</item>
</dictionary>
......@@ -45,35 +40,81 @@
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<key> <string>_objects</string> </key>
<value>
<none/>
<tuple/>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
<iframe id="document_preview" class="document_preview" tal:attributes="src python:here.absolute_url()+\'/document_preview_page\'">\n
</iframe>\n
]]></string> </value>
<key> <string>action</string> </key>
<value> <string>Image_convert</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
<key> <string>enctype</string> </key>
<value> <string>multipart/form-data</string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_format</string>
<string>my_filename</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document_preview_iframe</string> </value>
<value> <string>Image_viewConvertDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>ImageDocument_viewConvertDialog</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Download Converted File</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
"""\n
from Products.DCWorkflow.DCWorkflow import ValidationFailed\n
\n
ob=context\n
context.log(kw)\n
if (ob.hasFile() and not ob.hasOOFile()) or context.REQUEST.get(\'force\'): #doublecheck\n
context.log(\'we go ahead\')\n
try:\n
res=ob.convert(force=1)\n
ob.setPropertyListFromContent()\n
ob.setExternalProcessingStatusMessage(\'converted\')\n
if context.getValidationState()!=\'validated\':\n
context.portal_workflow.doActionFor(context,\'validate_action\')\n
except ValidationFailed,e:\n
ob.log(\'Exception\',e)\n
ob.setExternalProcessingStatusMessage(str(e))\n
except Exception,e:\n
ob.log(\'Exception\',e)\n
ob.setExternalProcessingStatusMessage(str(e))\n
raise Exception(str(e)) # do we want the activity to keep trying? - no, we don\'t, this will cause endless loop\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>*a,**kw</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>a</string>
<string>kw</string>
<string>Products.DCWorkflow.DCWorkflow</string>
<string>ValidationFailed</string>
<string>context</string>
<string>ob</string>
<string>_getattr_</string>
<string>res</string>
<string>e</string>
<string>str</string>
<string>Exception</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>OOoDocument_convertAfter</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -68,16 +68,18 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
<value> <string>"""\n
Public interface to the API method "convertToBase" which produces ODF version\n
of the document data, also discovering and setting metadata.\n
\n
XXX helper script, to be removed\n
"""\n
\n
msg=context.convert()\n
context.log(script.getId(),msg)\n
if msg[0]==0: # if everything was ok\n
context.OOoDocument_postConversion()\n
return context.REQUEST.RESPONSE.redirect(context.absolute_url()+\'/view?portal_status_message=\'+str(msg[1]))\n
msg = context.convertToBase()\n
context.log(script.getId(), msg)\n
if msg[0] == 0: # if everything was ok\n
pass\n
return context.REQUEST.RESPONSE.redirect(context.absolute_url() + \'/view?portal_status_message=\' + str(msg[1]))\n
# XXX-JPS Message translation needed\n
</string> </value>
</item>
......@@ -143,7 +145,7 @@ return context.REQUEST.RESPONSE.redirect(context.absolute_url()+\'/view?portal_s
</item>
<item>
<key> <string>id</string> </key>
<value> <string>OOoDocument_convert</string> </value>
<value> <string>OOoDocument_convertToBase</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -68,13 +68,13 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
<value> <string>"""\n
Public interface to getOOoFile API method - sets headers and returns\n
output (an ODF file).\n
"""\n
XXX-JPS Description here please\n
"""\n
request=context.REQUEST\n
\n
request = context.REQUEST\n
request.RESPONSE.setHeader(\'Content-type\', context.getContentType())\n
context.log(\'mimetype\',context.getContentType())\n
request.RESPONSE.setHeader(\'Content-disposition\', \'attachment;; filename="%s"\' % context.title_or_id())\n
return context.getOOFile()\n
</string> </value>
......
......@@ -68,14 +68,16 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
<value> <string>"""\n
Public interface to getSnapshot API method - sets headers and returns\n
output (a pdf file which is generated only once and never changes, even if\n
file data change).\n
"""\n
XXX-JPS Description here please\n
"""\n
request=context.REQUEST\n
\n
request = context.REQUEST\n
request.RESPONSE.setHeader(\'Content-type\', \'application/pdf\')\n
context.log(\'format\',\'application/pdf\')\n
request.RESPONSE.setHeader(\'Content-disposition\', \'attachment;; filename="%s.pdf"\' % context.title_or_id())\n
\n
return context.getSnapshot()\n
</string> </value>
</item>
......
......@@ -68,11 +68,12 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
<value> <string>"""\n
We assume that if you want a printout, you\'d be happy with pdf\n
so this is what we return.\n
"""\n
XXX-JPS Description here please\n
"""\n
request=context.REQUEST\n
\n
request = context.REQUEST\n
request.RESPONSE.setHeader(\'Content-type\', \'application/x-pdf\')\n
request.RESPONSE.setHeader(\'Content-disposition\', \'attachment;; filename="%s"\' % context.title_or_id())\n
return context.getTargetFile(\'pdf\')\n
......
......@@ -115,7 +115,7 @@
<string>my_translated_simulation_state_title</string>
<string>my_translated_validation_state_title</string>
<string>my_source_reference</string>
<string>my_external_processing_status_message</string>
<string>external_processing_status_message</string>
</list>
</value>
</item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>StringField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>external_processing_status_message</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Status message</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.TALESField</string>
<string>TALESMethod</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: here.portal_workflow.getInfoFor(ob=here, name=\'history\', wf_id=\'external_processing_workflow\')[-1][\'comment\']</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>StringField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_external_processing_status_message</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Status message</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.ERP5Form.Form</string>
<string>ERP5Form</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>Document_convert</string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string>multipart/form-data</string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_format</string>
<string>my_filename</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>OOoDocument_viewConvertDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>OOoDocumet_viewTargetFileDialog</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Download Target File</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -86,7 +86,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>OOoDocument_downloadDialog</string> </value>
<value> <string>OOoDocument_viewDownloadDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
"""\n
XXX-JPS Description here please\n
"""\n
request=context.REQUEST\n
fname=request.get(\'filename\')\n
format=request.get(\'format\')\n
context.log(\'format\',format)\n
if fname is None or format is None:\n
return\n
if not fname.endswith(\'.zip\'):\n
fname+=\'.zip\'\n
request.RESPONSE.setHeader(\'Content-type\', \'application/zip\')\n
request.RESPONSE.setHeader(\'Content-disposition\', \'attachment;; filename="%s"\' % fname)\n
return context.getTargetFile(format=format)[1]\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>kw</string>
<string>_getattr_</string>
<string>context</string>
<string>request</string>
<string>fname</string>
<string>format</string>
<string>None</string>
<string>_getitem_</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PDFDocument_getTargetFile</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -4,8 +4,8 @@
<pickle>
<tuple>
<tuple>
<string>Products.PageTemplates.ZopePageTemplate</string>
<string>ZopePageTemplate</string>
<string>Products.ERP5Form.Form</string>
<string>ERP5Form</string>
</tuple>
<none/>
</tuple>
......@@ -31,12 +31,7 @@
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
<dictionary/>
</value>
</item>
</dictionary>
......@@ -45,40 +40,81 @@
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<key> <string>_objects</string> </key>
<value>
<none/>
<tuple/>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
<html>\n
<body>\n
\n
<span tal:replace="structure here/DMS_decorateHtmlRepresentation"/> \n
\n
</body>\n
</html>\n
]]></string> </value>
<key> <string>action</string> </key>
<value> <string>Document_convert</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
<key> <string>enctype</string> </key>
<value> <string>multipart/form-data</string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_format</string>
<string>my_filename</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document_preview_page</string> </value>
<value> <string>PDF_viewConvertDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>PDF_viewTargetFileDialog</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Download Target File</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
......
......@@ -237,6 +237,14 @@
<key> <string>items</string> </key>
<value>
<list>
<tuple>
<string>Html</string>
<string>html</string>
</tuple>
<tuple>
<string>Text</string>
<string>txt</string>
</tuple>
<tuple>
<string>JPEG</string>
<string>jpg</string>
......
......@@ -68,16 +68,14 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># XXX-JPS reformat code as explained in Base_assembleSearchString\n
# XXX-JPS how about moving this to the API of Document ?\n
# Please consider merging with WebSite_getDocumentValue API\n
<value> <string>"""\n
This is to enable customization of obtaining the principal group a person is assigned to,\n
which is required for proper categorisation of a document contributed by the person.\n
Default implementation return a group of an organisation acquired through default_career.\n
Can be changed to return a group from an assignment, or any other way.\n
"""\n
XXX-JPS Description here\n
"""\n
if context.getReference() is None:\n
return context\n
res=context.DMS_findDocument(reference=context.getReference(),language=context.getLanguage())\n
return res[0].getObject()\n
\n
return context.getGroup()\n
</string> </value>
</item>
<item>
......@@ -92,6 +90,12 @@ return res[0].getObject()\n
<none/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......@@ -122,9 +126,6 @@ return res[0].getObject()\n
<tuple>
<string>_getattr_</string>
<string>context</string>
<string>None</string>
<string>res</string>
<string>_getitem_</string>
</tuple>
</value>
</item>
......@@ -141,7 +142,7 @@ return res[0].getObject()\n
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_getLatestVersion</string> </value>
<value> <string>Person_getPrincipalGroup</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
......
......@@ -77,10 +77,10 @@
<string>my_preferred_ooodoc_server_address</string>
<string>my_preferred_ooodoc_server_port_number</string>
<string>my_preferred_document_base_category_list</string>
<string>my_preferred_document_filename_regexp</string>
<string>my_preferred_document_file_name_regular_expression</string>
<string>my_preferred_document_reference_regular_expression</string>
<string>my_preferred_document_ingestion_email_notification</string>
<string>my_preferred_document_reference_method_id</string>
<string>my_preferred_document_reference_regexp</string>
</list>
</value>
</item>
......
......@@ -14,7 +14,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_preferred_document_reference_regexp</string> </value>
<value> <string>my_preferred_document_file_name_regular_expression</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -243,7 +243,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Reference regular expression</string> </value>
<value> <string>Filename parsing regular expression</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
......
......@@ -14,7 +14,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_preferred_document_filename_regexp</string> </value>
<value> <string>my_preferred_document_reference_regular_expression</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -243,7 +243,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Filename parsing regexp</string> </value>
<value> <string>Reference lookup regular expression</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
......
......@@ -69,8 +69,12 @@
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
XXX-JPS Description here please\n
Used by Base_viewLocalPermissionList which displays all agents set locally\n
(by adding Role Definition objects) and their roles, in a listbox\n
which shows roles and agents assigned this role.\n
This scripts formats names of agents which have a certain role.\n
"""\n
\n
return \', \'.join(brain.getObject().getAgentTitleList())\n
</string> </value>
</item>
......
......@@ -68,36 +68,38 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># equivalent to for getCategoryChildLogicalPathItemList\n
# the point is to display short_title if available else id\n
# instead of title in case categories have long titles and deep nesting\n
# use with care and caching, may be expensive\n
<value> <string>"""\n
equivalent to getCategoryChildLogicalPathItemList\n
the point is to display short_title if available else id\n
instead of title in case categories have long titles and deep nesting\n
use with care and caching, may be expensive\n
"""\n
\n
labelcache={} # so that we do not resolve all items in every path\n
labelcache = {} # so that we do not resolve all items in every path\n
\n
def getLabel(c):\n
return c.getShortTitle() or c.getId()\n
\n
def makeLogicalPathItem(o):\n
retval=[]\n
path=o.getRelativeUrl().split(\'/\')\n
pathlabels=[]\n
retval = []\n
path = o.getRelativeUrl().split(\'/\')\n
pathlabels = []\n
for i,p in enumerate(path):\n
pathhash=\'/\'.join(path[:i+1])\n
pathhash = \'/\'.join(path[:i + 1])\n
if not labelcache.has_key(pathhash):\n
cat=context.portal_categories.resolveCategory(pathhash)\n
labelcache[pathhash]=getLabel(cat)\n
cat = context.portal_categories.resolveCategory(pathhash)\n
labelcache[pathhash] = getLabel(cat)\n
pathlabels.append(labelcache[pathhash])\n
retval.append(\'/\'.join(pathlabels[1:]))\n
retval.append(\'/\'.join(path[1:]))\n
return retval\n
\n
#basecat=context.portal_categories.resolveCategory(\'function\')\n
basecat=context\n
#basecat = context.portal_categories.resolveCategory(\'function\')\n
basecat = context\n
\n
children=basecat.getCategoryChildValueList()\n
children=map(makeLogicalPathItem,children)\n
children.insert(0,[\'\',\'\'])\n
children = basecat.getCategoryChildValueList()\n
children = map(makeLogicalPathItem, children)\n
children.insert(0, [\'\', \'\'])\n
\n
return children\n
</string> </value>
......
......@@ -42,7 +42,6 @@
<list>
<string>AssignCategories</string>
<string>ClearCacheUponUpload</string>
<string>IngestAfterUpload</string>
<string>UpdateLocalRoles</string>
</list>
</value>
......@@ -76,7 +75,6 @@
<string>Drawing</string>
<string>File</string>
<string>Image</string>
<string>Memo</string>
<string>PDF</string>
<string>Presentation</string>
<string>Spreadsheet</string>
......
......@@ -68,14 +68,19 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># to assign categories from parallel list field\n
o=sci.object\n
request=o.REQUEST\n
pref=\'subfield_field_my_dms_category_list_\'\n
<value> <string>"""\n
to assign categories from parallel list field\n
"""\n
\n
o = sci.object\n
request = o.REQUEST\n
pref = \'subfield_field_my_dms_category_list_\'\n
for k,v in request.items():\n
#context.log(k)\n
if k.startswith(pref):\n
if v!=\'\':\n
o.setProperty(k.replace(pref,\'\'),v)\n
if v != \'\':\n
context.log(v)\n
o.setProperty(k.replace(pref, \'\'), v)\n
</string> </value>
</item>
<item>
......@@ -126,6 +131,7 @@ for k,v in request.items():\n
<string>_getiter_</string>
<string>k</string>
<string>v</string>
<string>context</string>
</tuple>
</value>
</item>
......
......@@ -68,20 +68,26 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>ob=state_change.object\n
<value> <string>"""\n
called for registered types, checks if the type is correct\n
XXX (the same is done in Document_uploadFile - seems that we\n
have redundancy here)\n
"""\n
\n
ob=state_change.object\n
kw=ob.REQUEST\n
f=kw.get(\'my_file\',None)\n
f=kw.get(\'my_file\', None)\n
\n
if f is not None and f:\n
# if file uploaded, then:\n
fname=f.filename\n
fname = f.filename\n
# we check for appropriate file type (by extension, using content_type_registry)\n
# we accept or suggest appropriate portal type\n
ctype=context.content_type_registry.findTypeName(fname,None,None)\n
ctype = context.content_type_registry.findTypeName(fname, None, None)\n
if ctype is None:\n
raise Exception(\'This file should be created as DMS File\')\n
if ctype!=ob.getPortalType():\n
raise Exception(\'This file should be created as \'+ctype)\n
if ctype != ob.getPortalType():\n
raise Exception(\'This file should be created as \' + ctype)\n
</string> </value>
</item>
<item>
......
......@@ -68,18 +68,24 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>ob=state_change.object\n
kw=ob.REQUEST\n
f=kw.get(\'my_file\',None)\n
<value> <string>"""\n
called for basic (File? Document?) type, checks if the type is unknown\n
XXX (the same is done in Document_uploadFile - seems that we\n
have redundancy here)\n
"""\n
\n
ob = state_change.object\n
kw = ob.REQUEST\n
f = kw.get(\'my_file\', None)\n
\n
if f is not None and f:\n
# if file uploaded, then:\n
fname=f.filename\n
fname = f.filename\n
# we check for appropriate file type (by extension, using content_type_registry)\n
# we allow only not known types\n
ctype=context.content_type_registry.findTypeName(fname,None,None)\n
ctype = context.content_type_registry.findTypeName(fname, None, None)\n
if ctype is not None:\n
raise Exception(\'This file should be created as \'+ctype)\n
raise Exception(\'This file should be created as \' + ctype)\n
</string> </value>
</item>
<item>
......
......@@ -68,16 +68,14 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>ob=state_change.object\n
kw=ob.REQUEST\n
ob.log(\'interaction\',\'edit\')\n
f=kw.get(\'my_file\',None)\n
ob.log(\'f\',f)\n
<value> <string>ob = state_change.object\n
kw = ob.REQUEST\n
f = kw.get(\'my_file\', None)\n
\n
if f is not None and f:\n
# if file uploaded, then:\n
if hasattr(ob,\'clearCache\'): # e.g. DMS File doesnt have it\n
ob.clearCache()\n
if hasattr(ob, \'clearConversionCache\'): # e.g. File doesn\'t have it\n
ob.clearConversionCache()\n
</string> </value>
</item>
<item>
......
......@@ -68,14 +68,18 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># this will go away - we don\'t upload files in edit\n
<value> <string>"""\n
this is not used in current implementation\n
because we don\'t upload files in edit\n
"""\n
\n
ob=state_change.object\n
kw=ob.REQUEST\n
f=kw.get(\'my_file\',None)\n
f=kw.get(\'my_file\', None)\n
\n
if f is not None and f:\n
# if file uploaded, then:\n
ob.DMS_ingestFile(f.filename) # we don\'t analyze contents (yet)\n
ob.Document_discoverMetadata(f.filename)\n
</string> </value>
</item>
<item>
......
......@@ -68,16 +68,16 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>o=state_change.object\n
ref=o.getReference()\n
<value> <string>o = state_change.object\n
ref = o.getReference()\n
if ref is None: # this shouldn\'t happen\n
raise Exception(\'how on earth can reference be None?\')\n
lng=o.getLanguage()\n
lng = o.getLanguage()\n
if lng is None: # ibidem\n
raise Exception(\'how on earth can language be None?\')\n
res=context.portal_catalog(reference=ref,language=lng,simulation_state=\'published\')\n
res = context.portal_catalog(reference=ref, language=lng, simulation_state=\'published\')\n
for ob in [r.getObject() for r in res]: # again, this should never happen, but still\n
o.portal_workflow.doActionFor(ob,\'archive_action\')\n
o.portal_workflow.doActionFor(ob, \'archive_action\')\n
</string> </value>
</item>
<item>
......
......@@ -68,16 +68,16 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>o=state_change.object\n
ref=o.getReference()\n
<value> <string>o = state_change.object\n
ref = o.getReference()\n
if ref is None: # this shouldn\'t happen\n
raise Exception(\'how on earth can reference be None?\')\n
lng=o.getLanguage()\n
lng = o.getLanguage()\n
if lng is None: # ibidem\n
raise Exception(\'how on earth can language be None?\')\n
res=context.portal_catalog(reference=ref,language=lng,simulation_state=\'released\')\n
res = context.portal_catalog(reference=ref, language=lng, simulation_state=\'released\')\n
for ob in [r.getObject() for r in res]: # again, this should never happen, but still\n
o.portal_workflow.doActionFor(ob,\'archive_action\')\n
o.portal_workflow.doActionFor(ob, \'archive_action\')\n
</string> </value>
</item>
<item>
......
......@@ -68,11 +68,16 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>ob=state_change.object\n
<value> <string>"""\n
called before submit to check if it is validate\n
or if it can be validated\n
"""\n
\n
ob=state_change.object\n
\n
vstate=ob.getValidationState()\n
if vstate!=\'validated\':\n
ob.portal_workflow.doActionFor(ob,\'validate_action\')\n
if vstate != \'validated\':\n
ob.portal_workflow.doActionFor(ob, \'validate_action\')\n
</string> </value>
</item>
<item>
......
......@@ -68,10 +68,15 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>ob=state_change.object\n
<value> <string>"""\n
invalidate document\n
(when it is hidden)\n
"""\n
\n
ob=state_change.object\n
\n
if ob.getValidationState()==\'validated\':\n
ob.portal_workflow.doActionFor(ob,\'invalidate_action\')\n
ob.portal_workflow.doActionFor(ob, \'invalidate_action\')\n
</string> </value>
</item>
<item>
......
......@@ -72,7 +72,6 @@
o=state_change.object\n
u=o.getUrlString()\n
context.log(u)\n
i=u.find(\'://\')\n
if i>-1:\n
prot=u[:i]\n
......@@ -128,7 +127,6 @@ if i>-1:\n
<string>_getattr_</string>
<string>o</string>
<string>u</string>
<string>context</string>
<string>i</string>
<string>_getitem_</string>
<string>prot</string>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.DCWorkflow</string>
<string>DCWorkflowDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>creation_guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>A one-state workflow (similar to edit_workflow), for recording and displaying external processing messages</string> </value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>external_processing_workflow</string> </value>
</item>
<item>
<key> <string>initial_state</string> </key>
<value> <string>current</string> </value>
</item>
<item>
<key> <string>manager_bypass</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>state_var</string> </key>
<value> <string>external_processing_state</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>External processing workflow</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Scripts</string>
<string>Scripts</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_mapping</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>scripts</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -4,8 +4,8 @@
<pickle>
<tuple>
<tuple>
<string>Products.ExternalMethod.ExternalMethod</string>
<string>ExternalMethod</string>
<string>Products.DCWorkflow.States</string>
<string>States</string>
</tuple>
<none/>
</tuple>
......@@ -19,26 +19,20 @@
</value>
</item>
<item>
<key> <string>_function</string> </key>
<value> <string>getAttrFromFilename</string> </value>
</item>
<item>
<key> <string>_module</string> </key>
<value> <string>documentUtils</string> </value>
<key> <string>_mapping</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>_owner</string> </key>
<key> <string>_objects</string> </key>
<value>
<none/>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_getPropertyListFromFilename</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
<value> <string>states</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -4,8 +4,8 @@
<pickle>
<tuple>
<tuple>
<string>Products.ExternalMethod.ExternalMethod</string>
<string>ExternalMethod</string>
<string>Products.DCWorkflow.States</string>
<string>StateDefinition</string>
</tuple>
<none/>
</tuple>
......@@ -19,26 +19,31 @@
</value>
</item>
<item>
<key> <string>_function</string> </key>
<value> <string>convertToOdf</string> </value>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>_module</string> </key>
<value> <string>documentUtils</string> </value>
<key> <string>id</string> </key>
<value> <string>current</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Document_convertToOdf</string> </value>
<key> <string>transitions</string> </key>
<value>
<tuple>
<string>process</string>
<string>process_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
<key> <string>type_list</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Transitions</string>
<string>Transitions</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_mapping</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transitions</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -4,8 +4,8 @@
<pickle>
<tuple>
<tuple>
<string>Products.ERP5.Interaction</string>
<string>InteractionDefinition</string>
<string>Products.DCWorkflow.Transitions</string>
<string>TransitionDefinition</string>
</tuple>
<none/>
</tuple>
......@@ -30,17 +30,9 @@
<key> <string>actbox_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>activate_script_name</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>after_script_name</string> </key>
<value>
<tuple/>
</value>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -54,31 +46,15 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Nonregistered_file_edit</string> </value>
<value> <string>process</string> </value>
</item>
<item>
<key> <string>method_id</string> </key>
<value>
<list>
<string>_edit</string>
</list>
</value>
</item>
<item>
<key> <string>portal_type_filter</string> </key>
<value>
<list>
<string>File</string>
</list>
</value>
<key> <string>new_state_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>script_name</string> </key>
<value>
<list>
<string>CheckUnKnownType</string>
</list>
</value>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
......@@ -86,7 +62,7 @@
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Transitions</string>
<string>TransitionDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>process_action</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Variables</string>
<string>Variables</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_mapping</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>variables</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Variables</string>
<string>VariableDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_expr</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_value</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The last transition</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>for_status</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>action</string> </value>
</item>
<item>
<key> <string>info_guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>update_always</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>transition/getId|nothing</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Variables</string>
<string>VariableDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_expr</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_value</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The name of the user who performed the last transition</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>for_status</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>actor</string> </value>
</item>
<item>
<key> <string>info_guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>update_always</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>user/getUserName</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Variables</string>
<string>VariableDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_expr</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_value</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Comments about the last transition</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>for_status</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>comment</string> </value>
</item>
<item>
<key> <string>info_guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>update_always</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>python:state_change.kwargs.get(\'comment\', \'\')</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Variables</string>
<string>VariableDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_expr</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_value</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Error message if validation failed</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>for_status</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>error_message</string> </value>
</item>
<item>
<key> <string>info_guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>update_always</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Variables</string>
<string>VariableDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_expr</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_value</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Provides access to workflow history</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>for_status</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>history</string> </value>
</item>
<item>
<key> <string>info_guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>update_always</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>state_change/getHistory</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Variables</string>
<string>VariableDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_expr</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_value</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>portal type (use as filter for worklists)</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>for_status</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>portal_type</string> </value>
</item>
<item>
<key> <string>info_guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>update_always</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Variables</string>
<string>VariableDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_expr</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_value</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Time of the last transition</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>for_status</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>time</string> </value>
</item>
<item>
<key> <string>info_guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>update_always</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<tuple>
<tuple>
<string>Products.CMFCore.Expression</string>
<string>Expression</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>state_change/getDateTime</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Worklists</string>
<string>Worklists</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_mapping</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>worklists</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -68,9 +68,13 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>ob=state_change.object\n
<value> <string>"""\n
when OOoDocument is edited, we update metadata in the ODF file\n
"""\n
\n
ob=state_change.object\n
kw=ob.REQUEST\n
metafields=(\'title\',\'subject\',\'description\',\'reference\',\'version\',\'language\')\n
metafields=(\'title\',\'subject\',\'description\',\'reference\',\'version\',\'language\') # XXX hardcoded?\n
f=kw.get(\'my_file\',None)\n
\n
# edit metadata (only if we have OOo file)\n
......
2007-01-24
Major refactoring - almost everything changed.
2006-12-11
Determining portal type based on content (if implementation provides the way to do so)
......
XXX content type registry has to be set up properly (it does NOT come with bt5) - see wiki
----------------------------------------------------
A simple document management system in which security is based on classification templates. Documents are supported either through OpenOffice (Text, Presentation, Spreadsheets, etc.) or through ImageMagics (images).
NOTE: publication_section overlaps with erp5_web
\ No newline at end of file
425
\ No newline at end of file
431
\ No newline at end of file
Book | view
Contribution Tool | contribute_content
Contribution Tool | latest
Contribution Tool | view
Document Module | advanced_search
Document Module | list_ui
Document Module | search
Document Module | sort_on
Document Module | view
Document Module | webdav
......
Book
Contribution Tool
Document Module
Drawing
External Library File
......
......@@ -10,6 +10,7 @@ External Library File | external_document_publication_workflow
External Web Page | edit_workflow
External Web Page | external_document_interaction_workflow
External Web Page | external_document_publication_workflow
External Web Page | external_processing_workflow
File | dms_file_interaction_workflow
File | document_publication_workflow
File | document_validation_workflow
......@@ -43,5 +44,6 @@ Text | dms_file_interaction_workflow
Text | document_publication_workflow
Text | document_validation_workflow
Text | edit_workflow
Text | external_processing_workflow
Text | local_permission_interaction_workflow
Text | ooo_interaction_workflow
\ No newline at end of file
......@@ -4,5 +4,6 @@ document_staging_workflow
document_validation_workflow
external_document_interaction_workflow
external_document_publication_workflow
external_processing_workflow
local_permission_interaction_workflow
ooo_interaction_workflow
\ No newline at end of file
0.83
\ No newline at end of file
0.9
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment