Commit 5dfed131 authored by Gabriel Monnerat's avatar Gabriel Monnerat

- remove one step from UNG Configuration

- update spreadsheet with steps
- clean up test

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@45117 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 0fa4d67c
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<key> <string>categories</string> </key> <key> <string>categories</string> </key>
<value> <value>
<tuple> <tuple>
<string>destination/workflow_module/ung_configuration_workflow/68</string> <string>destination/workflow_module/ung_configuration_workflow/14</string>
</tuple> </tuple>
</value> </value>
</item> </item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="State" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>destination/workflow_module/ung_configuration_workflow/14</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>67</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>State</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Web Site</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>after_script_id</string> </key>
<value> <string>BusinessConfiguration_setupUNGWebSite</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>destination/workflow_module/ung_configuration_workflow/67</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_expression</string> </key>
<value> <string>python: True</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>68</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Configure Web Site</string> </value>
</item>
<item>
<key> <string>transition_form_id</string> </key>
<value> <string>BusinessConfiguration_setupUNGWebSiteForm</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -52,20 +52,12 @@ ...@@ -52,20 +52,12 @@
<key> <string>_body</string> </key> <key> <string>_body</string> </key>
<value> <string>Base_translateString = context.Base_translateString\n <value> <string>Base_translateString = context.Base_translateString\n
\n \n
return [\n return {\n
dict(id=\'fr\',\n \'fr\':dict(name=Base_translateString(\'French\'),bt5=\'erp5_l10n_fr\'),\n
name=Base_translateString(\'French\'),\n \'pl\':dict(name=Base_translateString(\'Polish\'),bt5=\'erp5_l10n_pl_PL\'),\n
bt5=\'erp5_l10n_fr\',),\n \'pt-BR\':dict(name=Base_translateString(\'Portuguese / Brazil\'),bt5=\'erp5_l10n_pt-BR\'),\n
dict(id=\'pl\',\n \'ko\':dict(name=Base_translateString(\'Korean\'),bt5=\'erp5_l10n_ko\'),\n
name=Base_translateString(\'Polish\'),\n }\n
bt5=\'erp5_l10n_pl_PL\',),\n
dict(id=\'pt-BR\',\n
name=Base_translateString(\'Portuguese / Brazil\'),\n
bt5=\'erp5_l10n_pt-BR\',),\n
dict(id=\'ko\',\n
name=Base_translateString(\'Korean\'),\n
bt5=\'erp5_l10n_ko\',),\n
]\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
......
...@@ -56,7 +56,9 @@ portal = context.getPortalObject()\n ...@@ -56,7 +56,9 @@ portal = context.getPortalObject()\n
configuration_save_url = kw.get(\'configuration_save_url\', None)\n configuration_save_url = kw.get(\'configuration_save_url\', None)\n
preferred_event_sender_email = kw.get(\'preferred_event_sender_email\', \'\')\n preferred_event_sender_email = kw.get(\'preferred_event_sender_email\', \'\')\n
preferred_date_order = kw.get(\'preferred_date_order\', None)\n preferred_date_order = kw.get(\'preferred_date_order\', None)\n
preferred_language_list = kw.get(\'lang\', [])\n default_available_language = kw.get(\'default_available_language\', \'en\')\n
\n
context.setGlobalConfigurationAttr(default_available_language=default_available_language)\n
\n \n
configuration_save = context.restrictedTraverse(configuration_save_url)\n configuration_save = context.restrictedTraverse(configuration_save_url)\n
business_configuration = configuration_save.getParent()\n business_configuration = configuration_save.getParent()\n
...@@ -112,10 +114,12 @@ configuration_save.addConfigurationItem(\'System Preference Configurator Item\', ...@@ -112,10 +114,12 @@ configuration_save.addConfigurationItem(\'System Preference Configurator Item\',
title="Default Configurator System Site Preference",\n title="Default Configurator System Site Preference",\n
**system_prefs)\n **system_prefs)\n
\n \n
# preferred_languages\n if default_available_language and default_available_language != "en":\n
for bt5_id in preferred_language_list:\n language_dict = context.BusinessConfiguration_getUNGAvailableL10NBusinessTemplateList()\n
configuration_save.addConfigurationItem("Standard BT5 Configurator Item",\n bt5 = language_dict.get(default_available_language)\n
bt5_id=bt5_id)\n if bt5:\n
configuration_save.addConfigurationItem("Standard BT5 Configurator Item",\n
bt5_id=bt5.get("bt5"))\n
]]></string> </value> ]]></string> </value>
......
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
<list> <list>
<string>your_preferred_event_sender_email</string> <string>your_preferred_event_sender_email</string>
<string>your_preferred_date_order</string> <string>your_preferred_date_order</string>
<string>your_lang</string> <string>your_default_available_language</string>
</list> </list>
</value> </value>
</item> </item>
......
...@@ -272,7 +272,7 @@ ...@@ -272,7 +272,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python: [(x[\'name\'], x[\'id\']) for x in context.BusinessConfiguration_getUNGAvailableL10NBusinessTemplateList()] + [(context.Base_translateString(\'English\'), "en"),]</string> </value> <value> <string>python: [(v[\'name\'], k) for k,v in context.BusinessConfiguration_getUNGAvailableL10NBusinessTemplateList().items()] + [(context.Base_translateString(\'English\'), "en"),]</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="MultiListField" module="Products.Formulator.StandardFields"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>your_lang</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>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>view_separator</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>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>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</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>view_separator</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>
<list/>
</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>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>1</int> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Which translations do you want to use?</string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>view_separator</string> </key>
<value> <string encoding="cdata"><![CDATA[
<br />
]]></string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: getattr(here, field.getId().replace(\'your_\',\'\',1), \'\')</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: [(x[\'name\'], x[\'bt5\']) for x in context.BusinessConfiguration_getUNGAvailableL10NBusinessTemplateList()]</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </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>default_available_language = kw.get("default_available_language", "en")\n
context.setGlobalConfigurationAttr(default_available_language=default_available_language)\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>BusinessConfiguration_setupUNGWebSite</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5Form" module="Products.ERP5Form.Form"/>
</pickle>
<pickle>
<dictionary>
<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></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</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>Default</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>Default</string> </key>
<value>
<list>
<string>your_default_available_language</string>
</list>
</value>
</item>
<item>
<key> <string>bottom</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>center</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>BusinessConfiguration_setupUNGWebSiteForm</string> </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>pt</string> </key>
<value> <string>form_empty</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>Web Site</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>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</item> </item>
<item> <item>
<key> <string>_EtagSupport__etag</string> </key> <key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts01408868.15</string> </value> <value> <string>ts02059074.65</string> </value>
</item> </item>
<item> <item>
<key> <string>__name__</string> </key> <key> <string>__name__</string> </key>
...@@ -24,202 +24,197 @@ ...@@ -24,202 +24,197 @@
</item> </item>
<item> <item>
<key> <string>data</string> </key> <key> <string>data</string> </key>
<value> <string encoding="base64">UEsDBBQAAAgAAG5zfT6FbDmKLgAAAC4AAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2Fz <value> <string encoding="base64">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 BAAARQQAAAgAAABtZXRhLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8b2ZmaWNlOmRvY3VtZW50LW1ldGEg CjxvZmZpY2U6ZG9jdW1lbnQtbWV0YSB4bWxuczpvZmZpY2U9InVybjpvYXNpczpuYW1lczp0Yzpv
eG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmlj cGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
ZToxLjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpk b3JnLzE5OTkveGxpbmsiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4x
Yz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOm1ldGE9InVybjpvYXNp LyIgeG1sbnM6bWV0YT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRh
czpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiIHhtbG5zOm9vbz0iaHR0cDov OjEuMCIgeG1sbnM6b29vPSJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9vZmZpY2UiIHhtbG5z
L29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlIiB4bWxuczpncmRkbD0iaHR0cDovL3d3dy53My5v OmdyZGRsPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL2cvZGF0YS12aWV3IyIgb2ZmaWNlOnZlcnNp
cmcvMjAwMy9nL2RhdGEtdmlldyMiIG9mZmljZTp2ZXJzaW9uPSIxLjIiIGdyZGRsOnRyYW5zZm9y b249IjEuMiIgZ3JkZGw6dHJhbnNmb3JtYXRpb249Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3Jn
bWF0aW9uPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZmZpY2UvMS4yL3hzbHQvb2RmMnJk L29mZmljZS8xLjIveHNsdC9vZGYycmRmLnhzbCI+PG9mZmljZTptZXRhPjxtZXRhOmdlbmVyYXRv
Zi54c2wiPjxvZmZpY2U6bWV0YT48bWV0YTpnZW5lcmF0b3I+T3Blbk9mZmljZS5vcmcvMy4yJFVu cj5PcGVuT2ZmaWNlLm9yZy8zLjIkVW5peCBPcGVuT2ZmaWNlLm9yZ19wcm9qZWN0LzMyMG0xMiRC
aXggT3Blbk9mZmljZS5vcmdfcHJvamVjdC8zMjBtMTIkQnVpbGQtOTQ4MzwvbWV0YTpnZW5lcmF0 dWlsZC05NDgzPC9tZXRhOmdlbmVyYXRvcj48bWV0YTpjcmVhdGlvbi1kYXRlPjIwMTEtMDEtMTFU
b3I+PG1ldGE6Y3JlYXRpb24tZGF0ZT4yMDExLTAxLTExVDEyOjM3OjQ0PC9tZXRhOmNyZWF0aW9u MTI6Mzc6NDQ8L21ldGE6Y3JlYXRpb24tZGF0ZT48ZGM6bGFuZ3VhZ2U+ZnItRlI8L2RjOmxhbmd1
LWRhdGU+PGRjOmxhbmd1YWdlPmZyLUZSPC9kYzpsYW5ndWFnZT48bWV0YTplZGl0aW5nLWN5Y2xl YWdlPjxtZXRhOmVkaXRpbmctY3ljbGVzPjIyPC9tZXRhOmVkaXRpbmctY3ljbGVzPjxtZXRhOmVk
cz4xODwvbWV0YTplZGl0aW5nLWN5Y2xlcz48bWV0YTplZGl0aW5nLWR1cmF0aW9uPlBUMDBINDVN aXRpbmctZHVyYXRpb24+UFQwMEg0OU0wMlM8L21ldGE6ZWRpdGluZy1kdXJhdGlvbj48ZGM6ZGF0
MDRTPC9tZXRhOmVkaXRpbmctZHVyYXRpb24+PGRjOmRhdGU+MjAxMS0wMy0yOVQxMToyNzoyODwv ZT4yMDExLTA0LTA2VDAwOjA0OjA2PC9kYzpkYXRlPjxtZXRhOmRvY3VtZW50LXN0YXRpc3RpYyBt
ZGM6ZGF0ZT48bWV0YTpkb2N1bWVudC1zdGF0aXN0aWMgbWV0YTp0YWJsZS1jb3VudD0iMSIgbWV0 ZXRhOnRhYmxlLWNvdW50PSIxIiBtZXRhOmNlbGwtY291bnQ9IjE4IiBtZXRhOm9iamVjdC1jb3Vu
YTpjZWxsLWNvdW50PSIyMSIgbWV0YTpvYmplY3QtY291bnQ9IjAiLz48bWV0YTp1c2VyLWRlZmlu dD0iMCIvPjxtZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5hbWU9IkluZm8gMSIvPjxtZXRhOnVzZXIt
ZWQgbWV0YTpuYW1lPSJJbmZvIDEiLz48bWV0YTp1c2VyLWRlZmluZWQgbWV0YTpuYW1lPSJJbmZv ZGVmaW5lZCBtZXRhOm5hbWU9IkluZm8gMiIvPjxtZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5hbWU9
IDIiLz48bWV0YTp1c2VyLWRlZmluZWQgbWV0YTpuYW1lPSJJbmZvIDMiLz48bWV0YTp1c2VyLWRl IkluZm8gMyIvPjxtZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5hbWU9IkluZm8gNCIvPjwvb2ZmaWNl
ZmluZWQgbWV0YTpuYW1lPSJJbmZvIDQiLz48L29mZmljZTptZXRhPjwvb2ZmaWNlOmRvY3VtZW50 Om1ldGE+PC9vZmZpY2U6ZG9jdW1lbnQtbWV0YT5QSwMEFAAICAgAgxiGPgAAAAAAAAAAAAAAABgA
LW1ldGE+UEsDBBQACAgIAG5zfT4AAAAAAAAAAAAAAAAYAAAAVGh1bWJuYWlscy90aHVtYm5haWwu AABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmftV+k/G1jbNtO306oyb61ttXQZ1JqpJdZSWlTtWqLW
cG5n7Vf5O9Rv99eCZAmTJUQIZalEdqbs0pCskYhk37KbGTK27Fv27VOUso99G2MfypLsxhLKhDEM qqXVbNZYYpmnjzK2Gkt0iFQ7ahlEYk2TIKXELm0VsYSi1ghSkiCJPJnn33jfT+f87g/nd65zX/d1
MTOY8X1/n+/1vZ4/4Pn1uX+57+s613Wfc5/zOq/XueMeG+mxXuS7SEdHx2qgr/0E2JF0dGfoLpwF XSfTzcVe+tT5UxISEtIOd257iNdGCYkfJE7+KN5F10pwxfVuh9vW9+PLWAwwRH5clcp2d2OnKwXE
Tn7ldId0dJfEDLQfmAUXbBdCPcz6hfot71cizLu1d7lkrF2SYi5OWiLIdESukFndOP2VWJ0+xkvd W+d62b5/UnOn4s9rATfbbfU+15w5c6RgXXTp5Nz/nlk6riB/X1bhup2hopvH5bPOp6lKd0//EmDz
PGcdYP88gNExxYsxyHOXN2rqy8vygpCyqeQLHEn3zTUnP3M1mr1/tzxHnfZVInkZtmMXZQrGhPLn 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 AAAAAAAAGgAAAENvbmZpZ3VyYXRpb25zMi90b29scGFuZWwvUEsDBBQAAAgAAIMYhj4AAAAAAAAA
AAAAAAAAAAAAJwAAAENvbmZpZ3VyYXRpb25zMi9hY2NlbGVyYXRvci9jdXJyZW50LnhtbAMAUEsH AAAAAAAYAAAAQ29uZmlndXJhdGlvbnMyL21lbnViYXIvUEsDBBQAAAgAAIMYhj4AAAAAAAAAAAAA
CAAAAAACAAAAAAAAAFBLAwQUAAAIAABuc30+AAAAAAAAAAAAAAAAHAAAAENvbmZpZ3VyYXRpb25z AAAYAAAAQ29uZmlndXJhdGlvbnMyL3Rvb2xiYXIvUEsDBBQAAAgAAIMYhj4AAAAAAAAAAAAAAAAf
Mi9wcm9ncmVzc2Jhci9QSwMEFAAACAAAbnN9PgAAAAAAAAAAAAAAABgAAABDb25maWd1cmF0aW9u AAAAQ29uZmlndXJhdGlvbnMyL2ltYWdlcy9CaXRtYXBzL1BLAwQUAAAIAACDGIY+AAAAAAAAAAAA
czIvZmxvYXRlci9QSwMEFAAACAAAbnN9PgAAAAAAAAAAAAAAABoAAABDb25maWd1cmF0aW9uczIv AAAAGgAAAENvbmZpZ3VyYXRpb25zMi9zdGF0dXNiYXIvUEsDBBQACAgIAIMYhj4AAAAAAAAAAAAA
cG9wdXBtZW51L1BLAwQUAAAIAABuc30+AAAAAAAAAAAAAAAAGgAAAENvbmZpZ3VyYXRpb25zMi90 AAAMAAAAc2V0dGluZ3MueG1s7VrbcuI4EH3fr6D8upVgyIRdqMCUcQIkk2QSm0vCm2w3oIksuSQZ
b29scGFuZWwvUEsDBBQAAAgAAG5zfT4AAAAAAAAAAAAAAAAYAAAAQ29uZmlndXJhdGlvbnMyL21l Q75+ZS5ZxsFAAE9lapcHwJZ0utXdap2WffF14pPcGLjAjFa1wqmu5YC6zMN0WNU67cbJ39rX2h8X
bnViYXIvUEsDBBQAAAgAAG5zfT4AAAAAAAAAAAAAAAAYAAAAQ29uZmlndXJhdGlvbnMyL3Rvb2xi bDDALlQ85oY+UHkiQErVReTUcCoq8+aqFnJaYUhgUaHIB1GRboUFQJfDKqu9KzNh8zsTgulLVRtJ
YXIvUEsDBBQAAAgAAG5zfT4AAAAAAAAAAAAAAAAfAAAAQ29uZmlndXJhdGlvbnMyL2ltYWdlcy9C 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 SwECFAAUAAgICACDGIY+AAAAAAIAAAAAAAAAJwAAAAAAAAAAAAAAAAA1HQAAQ29uZmlndXJhdGlv
AAAAAAAAAAAAAAAAbWltZXR5cGVQSwECFAAUAAgICABuc30+YC2/87EFAADIHQAACwAAAAAAAAAA bnMyL2FjY2VsZXJhdG9yL2N1cnJlbnQueG1sUEsBAhQAFAAACAAAgxiGPgAAAAAAAAAAAAAAABwA
AAAAAABUAAAAY29udGVudC54bWxQSwECFAAUAAgICABuc30+H80TWxEGAAACGwAACgAAAAAAAAAA AAAAAAAAAAAAAAAAjB0AAENvbmZpZ3VyYXRpb25zMi9wcm9ncmVzc2Jhci9QSwECFAAUAAAIAACD
AAAAAAA+BgAAc3R5bGVzLnhtbFBLAQIUABQAAAgAAG5zfT5QdvBYRQQAAEUEAAAIAAAAAAAAAAAA GIY+AAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAADGHQAAQ29uZmlndXJhdGlvbnMyL2Zsb2F0ZXIv
AAAAAIcMAABtZXRhLnhtbFBLAQIUABQACAgIAG5zfT4AQGOuOA0AAF4PAAAYAAAAAAAAAAAAAAAA UEsBAhQAFAAACAAAgxiGPgAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAA/B0AAENvbmZpZ3VyYXRp
APIQAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmdQSwECFAAUAAgICABuc30+AAAAAAIAAAAAAAAA b25zMi9wb3B1cG1lbnUvUEsBAhQAFAAACAAAgxiGPgAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAA
JwAAAAAAAAAAAAAAAABwHgAAQ29uZmlndXJhdGlvbnMyL2FjY2VsZXJhdG9yL2N1cnJlbnQueG1s NB4AAENvbmZpZ3VyYXRpb25zMi90b29scGFuZWwvUEsBAhQAFAAACAAAgxiGPgAAAAAAAAAAAAAA
UEsBAhQAFAAACAAAbnN9PgAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAxx4AAENvbmZpZ3VyYXRp ABgAAAAAAAAAAAAAAAAAbB4AAENvbmZpZ3VyYXRpb25zMi9tZW51YmFyL1BLAQIUABQAAAgAAIMY
b25zMi9wcm9ncmVzc2Jhci9QSwECFAAUAAAIAABuc30+AAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAA hj4AAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAKIeAABDb25maWd1cmF0aW9uczIvdG9vbGJhci9Q
AAABHwAAQ29uZmlndXJhdGlvbnMyL2Zsb2F0ZXIvUEsBAhQAFAAACAAAbnN9PgAAAAAAAAAAAAAA SwECFAAUAAAIAACDGIY+AAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAADYHgAAQ29uZmlndXJhdGlv
ABoAAAAAAAAAAAAAAAAANx8AAENvbmZpZ3VyYXRpb25zMi9wb3B1cG1lbnUvUEsBAhQAFAAACAAA bnMyL2ltYWdlcy9CaXRtYXBzL1BLAQIUABQAAAgAAIMYhj4AAAAAAAAAAAAAAAAaAAAAAAAAAAAA
bnN9PgAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAbx8AAENvbmZpZ3VyYXRpb25zMi90b29scGFu AAAAABUfAABDb25maWd1cmF0aW9uczIvc3RhdHVzYmFyL1BLAQIUABQACAgIAIMYhj7jTXiM8QQA
ZWwvUEsBAhQAFAAACAAAbnN9PgAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAApx8AAENvbmZpZ3Vy APshAAAMAAAAAAAAAAAAAAAAAE0fAABzZXR0aW5ncy54bWxQSwECFAAUAAgICACDGIY+gT3rMlEB
YXRpb25zMi9tZW51YmFyL1BLAQIUABQAAAgAAG5zfT4AAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAA AADHBwAAFQAAAAAAAAAAAAAAAAB4JAAATUVUQS1JTkYvbWFuaWZlc3QueG1sUEsFBgAAAAAQABAA
AN0fAABDb25maWd1cmF0aW9uczIvdG9vbGJhci9QSwECFAAUAAAIAABuc30+AAAAAAAAAAAAAAAA NgQAAAwmAAAAAA==</string> </value>
HwAAAAAAAAAAAAAAAAATIAAAQ29uZmlndXJhdGlvbnMyL2ltYWdlcy9CaXRtYXBzL1BLAQIUABQA
AAgAAG5zfT4AAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAAFAgAABDb25maWd1cmF0aW9uczIvc3Rh
dHVzYmFyL1BLAQIUABQACAgIAG5zfT6olxWr8QQAAPshAAAMAAAAAAAAAAAAAAAAAIggAABzZXR0
aW5ncy54bWxQSwECFAAUAAgICABuc30+gT3rMlEBAADHBwAAFQAAAAAAAAAAAAAAAACzJQAATUVU
QS1JTkYvbWFuaWZlc3QueG1sUEsFBgAAAAAQABAANgQAAEcnAAAAAA==</string> </value>
</item> </item>
<item> <item>
<key> <string>precondition</string> </key> <key> <string>precondition</string> </key>
...@@ -227,7 +222,7 @@ QS1JTkYvbWFuaWZlc3QueG1sUEsFBgAAAAAQABAANgQAAEcnAAAAAA==</string> </value> ...@@ -227,7 +222,7 @@ QS1JTkYvbWFuaWZlc3QueG1sUEsFBgAAAAAQABAANgQAAEcnAAAAAA==</string> </value>
</item> </item>
<item> <item>
<key> <string>size</string> </key> <key> <string>size</string> </key>
<value> <int>11155</int> </value> <value> <int>10840</int> </value>
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
......
...@@ -87,10 +87,6 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase): ...@@ -87,10 +87,6 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase):
stepSetupPreferenceConfiguration%(country)s stepSetupPreferenceConfiguration%(country)s
stepConfiguratorNext stepConfiguratorNext
stepTic stepTic
stepCheckConfigureWebSiteForm
stepSetupWebSiteConfiguration
stepConfiguratorNext
stepTic
stepCheckConfigureInstallationForm stepCheckConfigureInstallationForm
stepSetupInstallConfiguration stepSetupInstallConfiguration
stepConfiguratorNext stepConfiguratorNext
...@@ -115,13 +111,11 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase): ...@@ -115,13 +111,11 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase):
def afterSetUp(self): def afterSetUp(self):
self.portal.portal_templates.updateRepositoryBusinessTemplateList( self.portal.portal_templates.updateRepositoryBusinessTemplateList(
['http://www.erp5.org/dists/snapshot/bt5/']) ['http://www.erp5.org/dists/snapshot/bt5/'])
if not self.portal.portal_catalog.getResultValue(portal_types="System Preference", preference = self.portal.portal_preferences.newContent(portal_type="System Preference")
title="global_system_preference"): preference.setTitle("global_system_preference")
preference = self.portal.portal_preferences.newContent(portal_type="System Preference") preference.setPreferredOoodocServerAddress("localhost")
preference.setTitle("global_system_preference") preference.setPreferredOoodocServerPortNumber(8011)
preference.setPreferredOoodocServerAddress("localhost") preference.enable()
preference.setPreferredOoodocServerPortNumber(8011)
preference.enable()
def stepCreateBusinessConfiguration(self, sequence=None, sequence_list=None, **kw): def stepCreateBusinessConfiguration(self, sequence=None, sequence_list=None, **kw):
""" Create one Business Configuration """ """ Create one Business Configuration """
...@@ -240,20 +234,20 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase): ...@@ -240,20 +234,20 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase):
self.assertEquals('show', response_dict['command']) self.assertEquals('show', response_dict['command'])
self.assertEquals('Previous', response_dict['previous']) self.assertEquals('Previous', response_dict['previous'])
self.assertEquals('Configure ERP5 Preferences', response_dict['next']) self.assertEquals('Configure ERP5 Preferences', response_dict['next'])
self.assertCurrentStep('ERP5 preferences', response_dict) self.assertCurrentStep('UNG Preferences', response_dict)
def stepSetupPreferenceConfigurationBrazil(self, sequence=None, sequence_list=None, **kw): def stepSetupPreferenceConfigurationBrazil(self, sequence=None, sequence_list=None, **kw):
""" Setup the Brazil preference configuration """ """ Setup the Brazil preference configuration """
next_dict = dict(field_your_preferred_date_order='dmy', next_dict = dict(field_your_preferred_date_order='dmy',
field_your_lang='erp5_l10n_fr', field_your_default_available_language='pt-BR',
field_your_preferred_event_sender_email="test@test.com", field_your_preferred_event_sender_email="test@test.com",
default_field_your_lang=1) default_field_your_lang=1)
sequence.edit(next_dict=next_dict) sequence.edit(next_dict=next_dict)
def stepSetupPreferenceConfigurationFrance(self, sequence=None, sequence_list=None, **kw): def stepSetupPreferenceConfigurationFrance(self, sequence=None, sequence_list=None, **kw):
""" Setup the Brazil preference configuration """ """ Setup the France preference configuration """
next_dict = dict(field_your_preferred_date_order='ymd', next_dict = dict(field_your_preferred_date_order='ymd',
field_your_lang='erp5_l10n_pt-BR', field_your_default_available_language='fr',
field_your_preferred_event_sender_email="test@test.com", field_your_preferred_event_sender_email="test@test.com",
default_field_your_lang=1) default_field_your_lang=1)
sequence.edit(next_dict=next_dict) sequence.edit(next_dict=next_dict)
...@@ -263,7 +257,7 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase): ...@@ -263,7 +257,7 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase):
response_dict = sequence.get("response_dict") response_dict = sequence.get("response_dict")
self.assertEquals('show', response_dict['command']) self.assertEquals('show', response_dict['command'])
self.assertEquals('Previous', response_dict['previous']) self.assertEquals('Previous', response_dict['previous'])
self.assertEquals('Configure Web Site', response_dict['next']) self.assertEquals('Install', response_dict['next'])
def stepCheckMultipleUserAccountThreeBrazil(self, sequence=None, sequence_list=None, **kw): def stepCheckMultipleUserAccountThreeBrazil(self, sequence=None, sequence_list=None, **kw):
""" Check if the users were created correctly """ """ Check if the users were created correctly """
...@@ -291,8 +285,6 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase): ...@@ -291,8 +285,6 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase):
""" Check the installation form """ """ Check the installation form """
response_dict = sequence.get("response_dict") response_dict = sequence.get("response_dict")
self.assertEquals('show', response_dict['command']) self.assertEquals('show', response_dict['command'])
self.assertEquals('Previous', response_dict['previous'])
self.assertEquals('Install', response_dict['next'])
def stepSetupInstallConfiguration(self, sequence=None, sequence_list=None, **kw): def stepSetupInstallConfiguration(self, sequence=None, sequence_list=None, **kw):
""" Install the Configuration """ """ Install the Configuration """
...@@ -311,14 +303,13 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase): ...@@ -311,14 +303,13 @@ class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase):
def stepCheckSystemPreferenceAfterInstallation(self, sequence=None, sequence_list=None, **kw): def stepCheckSystemPreferenceAfterInstallation(self, sequence=None, sequence_list=None, **kw):
""" Check System Preference""" """ Check System Preference"""
import ipdb;ipdb.set_trace()
system_preference = self.portal.portal_catalog.getResultValue(portal_type="System Preference") system_preference = self.portal.portal_catalog.getResultValue(portal_type="System Preference")
self.assertEquals(system_preference.getPreferredOoodocServerPortNumber(), 8011) self.assertEquals(system_preference.getPreferredOoodocServerPortNumber(), 8011)
self.assertEquals(system_preference.getPreferredOoodocServerAddress(), "localhost") self.assertEquals(system_preference.getPreferredOoodocServerAddress(), "localhost")
def stepCheckUserPreferenceAfterInstallation(self, sequence=None, sequence_list=None, **kw): def stepCheckUserPreferenceAfterInstallation(self, sequence=None, sequence_list=None, **kw):
""" Check System Preference""" """ Check System Preference"""
portal_catalog = portal.portal_catalog portal_catalog = self.portal.portal_catalog
preference = portal_catalog.getResultValue(portal_type="Preference", preference = portal_catalog.getResultValue(portal_type="Preference",
reference='Preference for Person Assignor') reference='Preference for Person Assignor')
self.assertEquals(preference.getPreferenceState(), "enabled") self.assertEquals(preference.getPreferenceState(), "enabled")
......
35 36
\ No newline at end of file \ 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