Commit 3f52cb6d authored by Kevin Deldycke's avatar Kevin Deldycke

New Tool to import OpenOffice data as ERP5 Objects

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@7280 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 23c69a6d
<?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> <string encoding="base64">O/INCg==</string> </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
This function transform a string to a safe id.\n
It is used here to create a safe category id from a string.\n
"""\n
\n
translation_map = { "a": [\'\\xe0\']\n
, "e": [\'\\xe9\', \'\\xe8\']\n
}\n
\n
clean_id = \'\'\n
if string == None:\n
return None\n
string = string.lower()\n
string = string.strip()\n
# oocalc inserts some strange chars when you press - key in a text cell.\n
# Following line is a workaround for this, because \\u2013 does not exist in latin1\n
string = string.replace(u\'\\u2013\', \'-\')\n
for char in string.encode(\'iso8859_1\'):\n
if char == \'_\' or char.isalnum():\n
clean_id += char\n
elif char.isspace() or char in (\'+\', \'-\'):\n
clean_id += \'_\'\n
else:\n
for (safe_char, char_list) in translation_map.items():\n
if char in char_list:\n
clean_id += safe_char\n
break\n
return clean_id\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/erp5_core/Base_getSafeIdFromString</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>string=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>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>string</string>
<string>translation_map</string>
<string>clean_id</string>
<string>None</string>
<string>_getattr_</string>
<string>_getiter_</string>
<string>char</string>
<string>safe_char</string>
<string>char_list</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<tuple>
<none/>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Base_getSafeIdFromString</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> <string encoding="base64">O/INCg==</string> </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>module = context\n
\n
property_list = []\n
\n
for portal_type in module.allowedContentTypes():\n
for property in portal_type.getInstancePropertyMap():\n
property_string = "%s.%s" % (portal_type.id, property[\'id\'])\n
property_list.append(property_string)\n
\n
property_list.sort()\n
return [(\'-- Ignore this Property --\', \'\')] + map(lambda x: (x,x), property_list)\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/erp5_core/ERP5Site_getModulePortalTypeSortedPropertyList</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></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>context</string>
<string>module</string>
<string>property_list</string>
<string>_getiter_</string>
<string>_getattr_</string>
<string>portal_type</string>
<string>property</string>
<string>_getitem_</string>
<string>property_string</string>
<string>map</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>ERP5Site_getModulePortalTypeSortedPropertyList</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> <string encoding="base64">O/INCg==</string> </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>from Products.ERP5Type.Document import newTempBase\n
from string import zfill\n
\n
portal_object = context.getPortalObject()\n
num = 0\n
listbox_lines = []\n
\n
request = context.REQUEST\n
\n
# Get spreadsheet data\n
try:\n
spreadsheets = request[\'ooo_import_spreadsheet_data\']\n
except:\n
return []\n
\n
for spreadsheet in spreadsheets.keys():\n
# Get the first line\n
column_name_list = spreadsheets[spreadsheet][0]\n
for column in column_name_list:\n
safe_id = context.Base_getSafeIdFromString(spreadsheet + column)\n
num += 1\n
int_len = 3\n
o = newTempBase(portal_object, safe_id)\n
o.setUid( \'new_%s\' % zfill(num, int_len)) # XXX There is a security issue here\n
o.edit(uid=\'new_%s\' % zfill(num, int_len)) # XXX There is a security issue here\n
o.edit( id = safe_id\n
, spreadsheet_name = spreadsheet\n
, spreadsheet_column = column\n
)\n
listbox_lines.append(o)\n
\n
return listbox_lines\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_skins/erp5_core/ERP5Site_getSpreadsheetColumnNameList</string> </value>
</item>
<item>
<key> <string>_owner</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>Products.ERP5Type.Document</string>
<string>newTempBase</string>
<string>string</string>
<string>zfill</string>
<string>_getattr_</string>
<string>context</string>
<string>portal_object</string>
<string>num</string>
<string>listbox_lines</string>
<string>request</string>
<string>_getitem_</string>
<string>spreadsheets</string>
<string>_getiter_</string>
<string>spreadsheet</string>
<string>column_name_list</string>
<string>column</string>
<string>safe_id</string>
<string>int_len</string>
<string>o</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>ERP5Site_getSpreadsheetColumnNameList</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.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>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>ERP5Site_importObjectFromOOo</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>
<string>listbox</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list>
<string>listbox_portal_type_property_list</string>
</list>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_import_file</string>
<string>openoffice_template</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>ERP5Site_importObjectFromOOoFastInput</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>ERP5Site_importObjectFromOOoFastInput</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view_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>Import OpenOffice Document</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>FileField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_import_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>80</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>OpenOffice Source File</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>OFS.Image</string>
<string>File</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts47455675.31</string> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>openoffice-erp5-objects-template.sxc</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/vnd.sun.xml.calc</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="base64">UEsDBBQAAAAAAABjrDRFvBOUHAAAABwAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQuc3Vu
LnhtbC5jYWxjUEsDBBQACAAIAABjrDQAAAAAAAAAAAAAAAALAAAAY29udGVudC54bWy1WN9z2jgQ
fr+/wqfO3JsRvy5NOKDTlKTTOZpkpknn+ihkAZrYkkeSQ+hff2vJNobYJgTCgzOWvv322/Xuys7w
03MUek9MaS7FCHVabeQxQWXAxWKEHu6v/XP0afzH8M/J7Zf7X3dXnpzPOWWDQNIkYsL4VAoDf727
h8vpty8e8jG+jZm4tbCWVAuMJ/cTz91PMisP/GB8dYM85PhagQnQeFhHDhqFHrjdEVoaEw8wluBG
btx02+02dvcoM9BmHTbjLSKHG/ZsGtEpoACT2R5ui8jhgSKrRnQKgJzn+Lks0KvVqrXqWWTn4uIC
//djiq+likih5Tnk4rEWb3dzqEiiGVPNSoghW3nRT4sqcpfAp0IyXRLVnD+L2GSkF+zJSC/IwRDs
sibAc/wdNu3l+3STPhU1kqeAIj6qeNys3EFQXv00JFqPkI4VI4FeMrbZ2mqloqKdPS7u51DYfsBo
qMdDm+vNiufuBYmgvC650QacRN5Ppoj3gwjdQd5cOvicRDxcj9BfJJb6nwqs20BeyUXMDYVUPhHF
bX3iZgH/EqrNpZSPL72Wtt7OP00oD5xY70FwGDysLr4K6PHx3ZOljMhLl/n625k/Ayx8SZwtlyzd
jr9ggilOoapWXOtjPFcUwnE18yaFuKLUsyWSGEiu4dS3FEUP2OtWKFR2Cj+ZcDtW4WQIk0ig3DJW
0LXKcKbTQGcQ0aM/Y9DkwJF6y0mcmb/iQTpPzlrdfpdGVm1JQZOc7jvK6ba6f58dJqf3jnJ6rQNz
03/f3Jx9PESOqqscJVdVWtwCbPpLxhdLOA7arX43ddksM9HMl7HhEQn9srVRCXu9WkOq1eaLEZzI
TPkxWTDfWUzYnCShqQrFWg4CruOQrA9VQlldx7GwmFsxUenrmb3ZryfNH6GPCyUTEaTlIOEF5AO1
P5ddqYL0paTdap+f08jTMuSB96Ftf5vRpflvcNRppwdxvrbK0j2TYXBIkHV9fFSQNgx/Jg2MtxES
UrBSeH7I5qYpxgym8urbgzMyLvnYTdABqaibIad93kbB2eJ4tp55bQRHP+K6cXRMXHvTjGuPuGxj
JoP1eOha1F6zdnXe7+DtUQqUrZV1pRNiyy6bqxVQe2hmQ8BFY4PeCjPtAPxqvu6J+Xo5n/scyaDa
VyxmxDD4Luid2GN/r8du/zVZ6+/6hJlf4TA9fXa0AVeVMmaB8GE5iMfXXGnj3cDGEGdLQ7xLcjjt
lLwH61cmoIFPSnkDDSMFCblZn5T3KiI8PJ5xf9WmNYR3HECBvLZitukBt9UR6bdufVE1aDo7RtMJ
HZZXNpPSDURc86+f8f9QSwcIZHtzqt4DAAChEgAAUEsDBBQACAAIAABjrDQAAAAAAAAAAAAAAAAK
AAAAc3R5bGVzLnhtbN1YbU/cRhD+3l/hGilKpPrWPkLCkTujJgSlKgmIQNV+3LPXvhW211qvOejH
/p7+qv6Szr743WcU6EtaQIB3np2deWZ2ZnzL47s0sW4JLyjLVrY3c22LZAELaRav7OurU+fQPva/
WX57cv7u6peL9xaLIhqQo5AFZUoy4RTiPiGFdXH99uyHd5btIHSek+xcoWaMxwidXJ1Y+vnEbLLg
GITef7ItW6ubhSK0/eUO3WBhVhxp4creCJEfIcTgFNacMnddF+ln22xQuyfxClHBBbkTk2gJqMF4
/YBuhajgIcfbSbQEAOMVPmI1ervdzrb7CuktFgv08+czdMp4imtb7hKa3ezEK2kFzcp0Tfi0JVjg
Di/FbTymXBN4W5scbDCf5k8hGkb2wwcY2Q8rMDi72eHgIfoIQvXr41lDH08nlUtA7V/AaT5tuYbY
Ve53bkudtRGDjA1JkBT+UhHYrFj6OcMp5MxbKgrBCU6tnwjH1mecFZ5tRUzDI5zS5H5lP8M5K96M
YLXAtlpH5FQEwM8t5lQlHZo24EccFOItYzfDU1uix+s/KwMaamOt64xCLSG7/BuBPt2/K7xhKR4e
Wa0/XvP3AEuGis1ya6eWODHJCKfByi62tCiecvJIIjwtZx5lIRpJdbOkS3XlREgiXCamgFdKjZWq
MDoBSRK7guccbh0XFGp9tT+gKU6cPMEBKVb2vGNZPxgJzuISx7AWcbUQsDITHM46vRxsdHBBcbYj
SzW20ldBM5bVMqN6TNQcEbA0T8hdP+VqvbV8TPOoEEgDMlnuhLQQOJN90JvND4JUhWWEdH+pa70p
+Z1IaP4+uXYvMrL0a6Dd226Zp5RmDs0EiUFjSGPINLBDmTByWq0jKDmHmeJ+zAjPfX0xZYiR3LIE
CypbruDlTvNG0mbS8Eoac1bmauBR2lGtXrZ836q9U49Dr+7TNUsqXd1krLCthPT/+O33WmNPiT8i
+BIqJyM6uGvqpiQM5oG9KII+5/Y9d8Y9/9+RrplJcV5fxSykQrX4W5yU5PmLZ7F4s6rzFOd5YkLg
dPIY7Q6g3jkM24m+tf3Itaok2r35khTTe40kx7yep53uueN5oWqZGaCpwAkN6koE4XDKLCQcBkuQ
FhDC5p52pY5JL6VN/d80rS2h8QbGLghA2CpiD7ClHZ4/yuMuWc3VaIVwiusPBIdqRP/LyVakAccx
5FsAWwnv0KkkTsFKLst+RO8aEgv6q+wEr+RwuiNqT+PbOO09yuuKsXGvQ8pJoC9ZImqPORNYLjpY
ptXKXrhDY1Fv5jCPuBTQbAUNnO4wksuWm8JLDdSstm956u2eQLYcCkAWOynMBWAgd8S6SY4NONZ0
uTHnZOnbGMbd2esDDzq1Wsc8BlFCIinoLnID766umQC3pJZeux8zImJM/FOGwTQyYlXXAjSIwMNB
mf/3giIla8ZD+WrtztzDwyC1CpbQ0Npz1ZdC5DjUn6oAxDustuHgRnbCLKyK5V7gyu+ahRYC+mxM
Gq4b777KpPh6WHk4KdHOGmIEGtirLGZRaprq6a2TnGHp0SHzl7LWH+Xmb7EhRL9M+MfHx0vUXzQr
eS/wvbsgA1e1O1rAgAaVO8JJ0XndZKJ1+oV0xTxIq/Uw43vVea21gQmVqg7nkyagAY0PMXtJcsYn
iZ0PiDWNhcSyrUh7vpBr67nGCSqSNkQ/vxjw0Dmps6TuTO90mEPIzpEEBp0a5KhRFO6J48of2/fm
yD2QH1C9MiZIlP+dVVkLpnsvj+Yvj1yvtngsdbrG/Wv5ZKE2UA3v/mLRBuq1vynv0PhFR+OfSft/
AlBLBwi25MyZTAUAADgXAABQSwMEFAAAAAAAAGOsNCbJ+/3pAwAA6QMAAAgAAABtZXRhLnhtbDw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjwhRE9DVFlQRSBvZmZpY2U6ZG9j
dW1lbnQtbWV0YSBQVUJMSUMgIi0vL09wZW5PZmZpY2Uub3JnLy9EVEQgT2ZmaWNlRG9jdW1lbnQg
MS4wLy9FTiIgIm9mZmljZS5kdGQiPjxvZmZpY2U6ZG9jdW1lbnQtbWV0YSB4bWxuczpvZmZpY2U9
Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDAwL29mZmljZSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVu
dHMvMS4xLyIgeG1sbnM6bWV0YT0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDAvbWV0YSIgb2Zm
aWNlOnZlcnNpb249IjEuMCI+PG9mZmljZTptZXRhPjxtZXRhOmdlbmVyYXRvcj5PcGVuT2ZmaWNl
Lm9yZyAxLjEuNSAoTGludXgpPC9tZXRhOmdlbmVyYXRvcj48IS0tNjQ1KEJ1aWxkOjg5NTApLS0+
PGRjOnRpdGxlPkVSUDUgQ2F0ZWdvcnkgRGVmaW5pdGlvbiBUZW1wbGF0ZTwvZGM6dGl0bGU+PG1l
dGE6Y3JlYXRpb24tZGF0ZT4yMDA1LTA1LTE1VDE3OjUxOjA2PC9tZXRhOmNyZWF0aW9uLWRhdGU+
PGRjOmRhdGU+MjAwNi0wNS0xMlQxNDoyNDowMTwvZGM6ZGF0ZT48ZGM6bGFuZ3VhZ2U+ZnItRlI8
L2RjOmxhbmd1YWdlPjxtZXRhOmVkaXRpbmctY3ljbGVzPjY8L21ldGE6ZWRpdGluZy1jeWNsZXM+
PG1ldGE6ZWRpdGluZy1kdXJhdGlvbj5QVDExTTQ1UzwvbWV0YTplZGl0aW5nLWR1cmF0aW9uPjxt
ZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5hbWU9IkluZm8gMSIvPjxtZXRhOnVzZXItZGVmaW5lZCBt
ZXRhOm5hbWU9IkluZm8gMiIvPjxtZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5hbWU9IkluZm8gMyIv
PjxtZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5hbWU9IkluZm8gNCIvPjxtZXRhOmRvY3VtZW50LXN0
YXRpc3RpYyBtZXRhOnRhYmxlLWNvdW50PSIxIiBtZXRhOmNlbGwtY291bnQ9IjUiLz48L29mZmlj
ZTptZXRhPjwvb2ZmaWNlOmRvY3VtZW50LW1ldGE+UEsDBBQACAAIAABjrDQAAAAAAAAAAAAAAAAM
AAAAc2V0dGluZ3MueG1s7Vltc9o4EP5+v4Lz15vEhrxc6CR0ZPOahgQDhphvwlaMD1ny2DKG/vpb
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</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <long>5732</long> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
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