From c534798ad59de744c21f2e7f8646f33b150d17e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Sun, 28 Jun 2020 16:07:49 +0900
Subject: [PATCH] configurator: Introduce scripts to get region and function
 items

Some configurator profiles uses a spreadsheet to define categories
(consulting configurator), some use a business templates.

For the ones using business template, because the categories are not available
yet we have the values directly in the script.
---
 .../my_empty_mode_default_address_region.xml  |   2 +-
 .../my_empty_mode_function.xml                |   2 +-
 ...sConfiguration_getFunctionTitleItemList.py |  60 +++++
 ...Configuration_getFunctionTitleItemList.xml |  62 +++++
 ...essConfiguration_getRegionTitleItemList.py | 248 ++++++++++++++++++
 ...ssConfiguration_getRegionTitleItemList.xml |  62 +++++
 6 files changed, 434 insertions(+), 2 deletions(-)
 create mode 100644 bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getFunctionTitleItemList.py
 create mode 100644 bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getFunctionTitleItemList.xml
 create mode 100644 bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getRegionTitleItemList.py
 create mode 100644 bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getRegionTitleItemList.xml

diff --git a/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/Base_viewConfiguratorFieldLibrary/my_empty_mode_default_address_region.xml b/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/Base_viewConfiguratorFieldLibrary/my_empty_mode_default_address_region.xml
index f258494b3e..5b4ae81ee8 100644
--- a/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/Base_viewConfiguratorFieldLibrary/my_empty_mode_default_address_region.xml
+++ b/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/Base_viewConfiguratorFieldLibrary/my_empty_mode_default_address_region.xml
@@ -151,7 +151,7 @@
       <dictionary>
         <item>
             <key> <string>_text</string> </key>
-            <value> <string>python: context.BusinessConfiguration_getCategoriesSpreadsheetConfiguratorItem().getCategoryTitleItemList(\'region\')</string> </value>
+            <value> <string>context/BusinessConfiguration_getRegionTitleItemList</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/Base_viewConfiguratorFieldLibrary/my_empty_mode_function.xml b/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/Base_viewConfiguratorFieldLibrary/my_empty_mode_function.xml
index 842513a2f8..1849326de6 100644
--- a/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/Base_viewConfiguratorFieldLibrary/my_empty_mode_function.xml
+++ b/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/Base_viewConfiguratorFieldLibrary/my_empty_mode_function.xml
@@ -127,7 +127,7 @@
       <dictionary>
         <item>
             <key> <string>_text</string> </key>
-            <value> <string>python: context.BusinessConfiguration_getCategoriesSpreadsheetConfiguratorItem().getCategoryTitleItemList(\'function\')</string> </value>
+            <value> <string>context/BusinessConfiguration_getFunctionTitleItemList</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getFunctionTitleItemList.py b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getFunctionTitleItemList.py
new file mode 100644
index 0000000000..be4a68d88a
--- /dev/null
+++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getFunctionTitleItemList.py
@@ -0,0 +1,60 @@
+# coding: utf-8
+from Products.ERP5Type.Message import translateString
+
+if context.getGlobalConfigurationAttr('categories_spreadsheet_configuration_save_relative_url'):
+  item_list_from_spreadsheet = context.BusinessConfiguration_getCategoriesSpreadsheetConfiguratorItem().getCategoryTitleItemList('function')
+  if item_list_from_spreadsheet != [('', '')]:
+    return item_list_from_spreadsheet
+
+function_item_list = [
+  (u'Accounting & Finance', None, 0),
+  (u'Accounting', None, 1),
+  (u'Accounting Agent', 'af/accounting/agent', 2),
+  (u'Accounting Manager', 'af/accounting/manager', 2),
+  (u'Accounting & Finance Manager', 'af/manager', 1),
+  (u'Company', None, 0),
+  (u'Company Agent', 'company/agent', 1),
+  (u'Company Executive', 'company/executive', 1),
+  (u'Company Manager', 'company/manager', 1),
+  (u'Headquarters', None, 0),
+  (u'Headquarters Agent', 'hq/agent', 1),
+  (u'Headquarters Executive', 'hq/executive', 1),
+  (u'Headquarters Manager', 'hq/manager', 1),
+  (u'Human Resources', None, 0),
+  (u'Human Resources Agent', 'hr/agent', 1),
+  (u'Human Resources Manager', 'hr/manager', 1),
+  (u'Information Systems', None, 0),
+  (u'Information Systems Manager', 'is/manager', 1),
+  (u'Software Developer', 'is/developer', 1),
+  (u'System Administrator', 'is/admin', 1),
+  (u'Marketing', None, 0),
+  (u'Marketing Agent', 'marketing/agent', 1),
+  (u'Marketing Manager', 'marketing/manager', 1),
+  (u'Production – Manufacturing', None, 0),
+  (u'Production Agent', 'production/agent', 1),
+  (u'Production Manager', 'production/manager', 1),
+  (u'Project Management & Implementation', None, 0),
+  (u'Developer for a Project', 'project/developer', 1),
+  (u'Project Manager', 'project/manager', 1),
+  (u'Purchase', None, 0),
+  (u'Purchase Agent', 'purchase/agent', 1),
+  (u'Purchase Manager', 'purchase/manager', 1),
+  (u'Research and Development', None, 0),
+  (u'Research and Development Agent', 'rd/agent', 1),
+  (u'Research and Development Manager', 'rd/manager', 1),
+  (u'Sales', None, 0),
+  (u'Sales Agent', 'sales/agent', 1),
+  (u'Sales Manager', 'sales/manager', 1),
+  (u'Subsidiary', None, 0),
+  (u'Subsidiary Agent', 'subsidiary/agent', 1),
+  (u'Subsidiary Manager', 'subsidiary/manager', 1),
+  (u'Warehouse', None, 0),
+  (u'Warehouse Agent', 'warehouse/agent', 1),
+  (u'Warehouse Manager', 'warehouse/manager', 1),
+]
+
+
+return [['', '']] + [[
+    (u"\N{NO-BREAK SPACE}" * 4 * depth ).encode('utf-8') + str(translateString(title)),
+    relative_url,
+  ] for (title, relative_url, depth) in function_item_list]
diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getFunctionTitleItemList.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getFunctionTitleItemList.xml
new file mode 100644
index 0000000000..89b91a1985
--- /dev/null
+++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getFunctionTitleItemList.xml
@@ -0,0 +1,62 @@
+<?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>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>BusinessConfiguration_getFunctionTitleItemList</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getRegionTitleItemList.py b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getRegionTitleItemList.py
new file mode 100644
index 0000000000..4392e6c021
--- /dev/null
+++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getRegionTitleItemList.py
@@ -0,0 +1,248 @@
+from Products.ERP5Type.Message import translateString
+
+if context.getGlobalConfigurationAttr('categories_spreadsheet_configuration_save_relative_url'):
+  item_list_from_spreadsheet = context.BusinessConfiguration_getCategoriesSpreadsheetConfiguratorItem().getCategoryTitleItemList('region')
+  if item_list_from_spreadsheet != [('', '')]:
+    return item_list_from_spreadsheet
+
+region_item_list = [
+  ('Afghanistan', 'asia/southern_asia/afghanistan'),
+  ('Albania', 'europe/southern_europe/albania'),
+  ('Algeria', 'africa/northern_africa/algeria'),
+  ('American Samoa', 'oceania/polynesia/american_samoa'),
+  ('Andorra', 'europe/southern_europe/andorra'),
+  ('Angola', 'africa/middle_africa/angola'),
+  ('Anguilla', 'americas/caribbean/anguilla'),
+  ('Antigua and Barbuda', 'americas/caribbean/antigua_and_barbuda'),
+  ('Argentina', 'americas/south_america/argentina'),
+  ('Armenia', 'asia/western_asia/armenia'),
+  ('Aruba', 'americas/caribbean/aruba'),
+  ('Australia', 'oceania/australia/australia'),
+  ('Austria', 'europe/western_europe/austria'),
+  ('Azerbaijan', 'asia/western_asia/azerbaijan'),
+  ('Bahamas', 'americas/caribbean/bahamas'),
+  ('Bahrain', 'asia/western_asia/bahrain'),
+  ('Bangladesh', 'asia/southern_asia/bangladesh'),
+  ('Barbados', 'americas/caribbean/barbados'),
+  ('Belarus', 'europe/eastern_europe/belarus'),
+  ('Belgium', 'europe/western_europe/belgium'),
+  ('Belize', 'americas/central_america/belize'),
+  ('Benin', 'africa/western_africa/benin'),
+  ('Bermuda', 'americas/northern_america/bermuda'),
+  ('Bhutan', 'asia/southern_asia/bhutan'),
+  ('Bolivia', 'americas/south_america/bolivia'),
+  ('Bosnia and Herzegovina', 'europe/southern_europe/bosnia_and_herzegovina'),
+  ('Botswana', 'africa/southern_africa/botswana'),
+  ('Brazil', 'americas/south_america/brazil'),
+  ('British Virgin Islands', 'americas/caribbean/british_virgin_islands'),
+  ('Brunei Darussalam', 'asia/south-eastern_asia/brunei_darussalam'),
+  ('Bulgaria', 'europe/eastern_europe/bulgaria'),
+  ('Burkina Faso', 'africa/western_africa/burkina_faso'),
+  ('Burundi', 'africa/eastern_africa/burundi'),
+  ('Cambodia', 'asia/south-eastern_asia/cambodia'),
+  ('Cameroon', 'africa/middle_africa/cameroon'),
+  ('Canada', 'americas/northern_america/canada'),
+  ('Cape Verde', 'africa/western_africa/cape_verde'),
+  ('Cayman Islands', 'americas/caribbean/cayman_islands'),
+  ('Central African Republic', 'africa/middle_africa/central_african_republic'),
+  ('Chad', 'africa/middle_africa/chad'),
+  ('Channel Islands', 'europe/northern_europe/channel_islands'),
+  ('Chile', 'americas/south_america/chile'),
+  ('China', 'asia/eastern_asia/china'),
+  ('Colombia', 'americas/south_america/colombia'),
+  ('Comoros', 'africa/eastern_africa/comoros'),
+  ('Congo', 'africa/middle_africa/congo'),
+  ('Cook Islands', 'oceania/polynesia/cook_islands'),
+  ('Costa Rica', 'americas/central_america/costa_rica'),
+  ("Cote d'Ivoire", 'africa/western_africa/cote_diivoire'),
+  ('Croatia', 'europe/southern_europe/croatia'),
+  ('Cuba', 'americas/caribbean/cuba'),
+  ('Cyprus', 'asia/western_asia/cyprus'),
+  ('Czech Republic', 'europe/eastern_europe/czech_republic'),
+  ("Democratic People's Republic of Korea", 'asia/eastern_asia/democratic_peoples_republic_of_korea'),
+  ('Democratic Republic of the Congo', 'africa/middle_africa/democratic_republic_of_the_congo'),
+  ('Denmark', 'europe/northern_europe/denmark'),
+  ('Djibouti', 'africa/eastern_africa/djibouti'),
+  ('Dominica', 'americas/caribbean/dominica'),
+  ('Dominican Republic', 'americas/caribbean/dominican_republic'),
+  ('Ecuador', 'americas/south_america/ecuador'),
+  ('Egypt', 'africa/northern_africa/egypt'),
+  ('El Salvador', 'americas/central_america/el_salvador'),
+  ('Equatorial Guinea', 'africa/middle_africa/equatorial_guinea'),
+  ('Eritrea', 'africa/eastern_africa/eritrea'),
+  ('Estonia', 'europe/northern_europe/estonia'),
+  ('Ethiopia', 'africa/eastern_africa/ethiopia'),
+  ('Faeroe Islands', 'europe/northern_europe/faeroe_islands'),
+  ('Falkland Islands (Malvinas)', 'americas/south_america/falkland_islands'),
+  ('Fiji', 'oceania/melanesia/fiji'),
+  ('Finland', 'europe/northern_europe/finland'),
+  ('France', 'europe/western_europe/france'),
+  ('French Guiana', 'americas/south_america/french_guiana'),
+  ('French Polynesia', 'oceania/polynesia/french_polynesia'),
+  ('Gabon', 'africa/middle_africa/gabon'),
+  ('Gambia', 'africa/western_africa/gambia'),
+  ('Georgia', 'asia/western_asia/georgia'),
+  ('Germany', 'europe/western_europe/germany'),
+  ('Ghana', 'africa/western_africa/ghana'),
+  ('Gibraltar', 'europe/southern_europe/gibraltar'),
+  ('Greece', 'europe/southern_europe/greece'),
+  ('Greenland', 'americas/northern_america/greenland'),
+  ('Grenada', 'americas/caribbean/grenada'),
+  ('Guadeloupe', 'americas/caribbean/guadeloupe'),
+  ('Guam', 'oceania/micronesia/guam'),
+  ('Guatemala', 'americas/central_america/guatemala'),
+  ('Guernsey', 'europe/northern_europe/guernsey'),
+  ('Guinea', 'africa/western_africa/guinea'),
+  ('Guinea-Bissau', 'africa/western_africa/guinea-bissau'),
+  ('Guyana', 'americas/south_america/guyana'),
+  ('Haiti', 'americas/caribbean/haiti'),
+  ('Holy See', 'europe/southern_europe/holy_see'),
+  ('Honduras', 'americas/central_america/honduras'),
+  ('Hong Kong Special Administrative Region of China', 'asia/eastern_asia/hong_kong'),
+  ('Hungary', 'europe/eastern_europe/hungary'),
+  ('Iceland', 'europe/northern_europe/iceland'),
+  ('India', 'asia/southern_asia/india'),
+  ('Indonesia', 'asia/south-eastern_asia/indonesia'),
+  ('Iran, Islamic Republic of', 'asia/southern_asia/iran'),
+  ('Iraq', 'asia/western_asia/iraq'),
+  ('Ireland', 'europe/northern_europe/ireland'),
+  ('Isle of Man', 'europe/northern_europe/isle_of_man'),
+  ('Israel', 'asia/western_asia/israel'),
+  ('Italy', 'europe/southern_europe/italy'),
+  ('Jamaica', 'americas/caribbean/jamaica'),
+  ('Japan', 'asia/eastern_asia/japan'),
+  ('Jersey', 'europe/northern_europe/jersey'),
+  ('Jordan', 'asia/western_asia/jordan'),
+  ('Kazakhstan', 'asia/central_asia/kazakhstan'),
+  ('Kenya', 'africa/eastern_africa/kenya'),
+  ('Kiribati', 'oceania/micronesia/kiribati'),
+  ('Kuwait', 'asia/western_asia/kuwait'),
+  ('Kyrgyzstan', 'asia/central_asia/kyrgyzstan'),
+  ("Lao People's Democratic Republic", 'asia/south-eastern_asia/lao_peoples_democratic_republic'),
+  ('Latvia', 'europe/northern_europe/latvia'),
+  ('Lebanon', 'asia/western_asia/lebanon'),
+  ('Lesotho', 'africa/southern_africa/lesotho'),
+  ('Liberia', 'africa/western_africa/liberia'),
+  ('Libyan Arab Jamahiriya', 'africa/northern_africa/libyan_arab_jamahiriya'),
+  ('Liechtenstein', 'europe/western_europe/liechtenstein'),
+  ('Lithuania', 'europe/northern_europe/lithuania'),
+  ('Luxembourg', 'europe/western_europe/luxembourg'),
+  ('Macao Special Administrative Region of China', 'asia/eastern_asia/macao'),
+  ('Madagascar', 'africa/eastern_africa/madagascar'),
+  ('Malawi', 'africa/eastern_africa/malawi'),
+  ('Malaysia', 'asia/south-eastern_asia/malaysia'),
+  ('Maldives', 'asia/southern_asia/maldives'),
+  ('Mali', 'africa/western_africa/mali'),
+  ('Malta', 'europe/southern_europe/malta'),
+  ('Marshall Islands', 'oceania/micronesia/marshall_islands'),
+  ('Martinique', 'americas/caribbean/martinique'),
+  ('Mauritania', 'africa/western_africa/mauritania'),
+  ('Mauritius', 'africa/eastern_africa/mauritius'),
+  ('Mayotte', 'africa/eastern_africa/mayotte'),
+  ('Mexico', 'americas/central_america/mexico'),
+  ('Micronesia, Federated States of', 'oceania/micronesia/federated_states_of_micronesia'),
+  ('Monaco', 'europe/western_europe/monaco'),
+  ('Mongolia', 'asia/eastern_asia/mongolia'),
+  ('Montenegro', 'europe/southern_europe/montenegro'),
+  ('Montserrat', 'americas/caribbean/montserrat'),
+  ('Morocco', 'africa/northern_africa/morocco'),
+  ('Mozambique', 'africa/eastern_africa/mozambique'),
+  ('Myanmar', 'asia/south-eastern_asia/myanmar'),
+  ('Namibia', 'africa/southern_africa/namibia'),
+  ('Nauru', 'oceania/micronesia/nauru'),
+  ('Nepal', 'asia/southern_asia/nepal'),
+  ('Netherlands', 'europe/western_europe/netherlands'),
+  ('Netherlands Antilles', 'americas/caribbean/netherlands_antilles'),
+  ('New Caledonia', 'oceania/melanesia/new_caledonia'),
+  ('New Zealand', 'oceania/australia/new_zealand'),
+  ('Nicaragua', 'americas/central_america/nicaragua'),
+  ('Niger', 'africa/western_africa/niger'),
+  ('Nigeria', 'africa/western_africa/nigeria'),
+  ('Niue', 'oceania/polynesia/niue'),
+  ('Norfolk Island', 'oceania/australia/norfolk_island'),
+  ('Northern Mariana Islands', 'oceania/micronesia/northern_mariana_islands'),
+  ('Norway', 'europe/northern_europe/norway'),
+  ('Occupied Palestinian Territory', 'asia/western_asia/occupied_palestinian_territory'),
+  ('Oman', 'asia/western_asia/oman'),
+  ('Pakistan', 'asia/southern_asia/pakistan'),
+  ('Palau', 'oceania/micronesia/palau'),
+  ('Panama', 'americas/central_america/panama'),
+  ('Papua New Guinea', 'oceania/melanesia/papua_new_guinea'),
+  ('Paraguay', 'americas/south_america/paraguay'),
+  ('Peru', 'americas/south_america/peru'),
+  ('Philippines', 'asia/south-eastern_asia/philippines'),
+  ('Pitcairn', 'oceania/polynesia/pitcairn'),
+  ('Poland', 'europe/eastern_europe/poland'),
+  ('Portugal', 'europe/southern_europe/portugal'),
+  ('Puerto Rico', 'americas/caribbean/puerto_rico'),
+  ('Qatar', 'asia/western_asia/qatar'),
+  ('Republic of Korea', 'asia/eastern_asia/republic_of_korea'),
+  ('Republic of Moldova', 'europe/eastern_europe/republic_of_moldova'),
+  ('Romania', 'europe/eastern_europe/romania'),
+  ('Russian Federation', 'europe/eastern_europe/russian_federation'),
+  ('Rwanda', 'africa/eastern_africa/rwanda'),
+  ('R\xc3\xa9union', 'africa/eastern_africa/reunion'),
+  ('Saint Helena', 'africa/western_africa/saint_helena'),
+  ('Saint Kitts and Nevis', 'americas/caribbean/saint_kitts_and_nevis'),
+  ('Saint Lucia', 'americas/caribbean/saint_lucia'),
+  ('Saint Martin (French part)', 'americas/caribbean/saint_martin'),
+  ('Saint Pierre and Miquelon', 'americas/northern_america/saint_pierre_and_miquelon'),
+  ('Saint Vincent and the Grenadines', 'americas/caribbean/saint_vincent_and_the_grenadines'),
+  ('Saint-Barth\xc3\xa9lemy', 'americas/caribbean/saint-barthelemy'),
+  ('Samoa', 'oceania/polynesia/samoa'),
+  ('San Marino', 'europe/southern_europe/san_marino'),
+  ('Sao Tome and Principe', 'africa/middle_africa/sao_tome_and_principe'),
+  ('Saudi Arabia', 'asia/western_asia/saudi_arabia'),
+  ('Senegal', 'africa/western_africa/senegal'),
+  ('Serbia', 'europe/southern_europe/serbia'),
+  ('Seychelles', 'africa/eastern_africa/seychelles'),
+  ('Sierra Leone', 'africa/western_africa/sierra_leone'),
+  ('Singapore', 'asia/south-eastern_asia/singapore'),
+  ('Slovakia', 'europe/eastern_europe/slovakia'),
+  ('Slovenia', 'europe/southern_europe/slovenia'),
+  ('Solomon Islands', 'oceania/melanesia/solomon_islands'),
+  ('Somalia', 'africa/eastern_africa/somalia'),
+  ('South Africa', 'africa/southern_africa/south_africa'),
+  ('Spain', 'europe/southern_europe/spain'),
+  ('Sri Lanka', 'asia/southern_asia/sri_lanka'),
+  ('Sudan', 'africa/northern_africa/sudan'),
+  ('Suriname', 'americas/south_america/suriname'),
+  ('Svalbard and Jan Mayen Islands', 'europe/northern_europe/svalbard_and_jan_mayen_islands'),
+  ('Swaziland', 'africa/southern_africa/swaziland'),
+  ('Sweden', 'europe/northern_europe/sweden'),
+  ('Switzerland', 'europe/western_europe/switzerland'),
+  ('Syrian Arab Republic', 'asia/western_asia/syrian_arab_republic'),
+  ('Tajikistan', 'asia/central_asia/tajikistan'),
+  ('Thailand', 'asia/south-eastern_asia/thailand'),
+  ('The former Yugoslav Republic of Macedonia', 'europe/southern_europe/macedonia'),
+  ('Timor-Leste', 'asia/south-eastern_asia/timor-leste'),
+  ('Togo', 'africa/western_africa/togo'),
+  ('Tokelau', 'oceania/polynesia/tokelau'),
+  ('Tonga', 'oceania/polynesia/tonga'),
+  ('Trinidad and Tobago', 'americas/caribbean/trinidad_and_tobago'),
+  ('Tunisia', 'africa/northern_africa/tunisia'),
+  ('Turkey', 'asia/western_asia/turkey'),
+  ('Turkmenistan', 'asia/central_asia/turkmenistan'),
+  ('Turks and Caicos Islands', 'americas/caribbean/turks_and_caicos_islands'),
+  ('Tuvalu', 'oceania/polynesia/tuvalu'),
+  ('Uganda', 'africa/eastern_africa/uganda'),
+  ('Ukraine', 'europe/eastern_europe/ukraine'),
+  ('United Arab Emirates', 'asia/western_asia/united_arab_emirates'),
+  ('United Kingdom of Great Britain and Northern Ireland', 'europe/northern_europe/united_kingdom'),
+  ('United Republic of Tanzania', 'africa/eastern_africa/united_republic_of_tanzania'),
+  ('United States Virgin Islands', 'americas/caribbean/united_states_virgin_islands'),
+  ('United States of America', 'americas/northern_america/united_states_of_america'),
+  ('Uruguay', 'americas/south_america/uruguay'),
+  ('Uzbekistan', 'asia/central_asia/uzbekistan'),
+  ('Vanuatu', 'oceania/melanesia/vanuatu'),
+  ('Venezuela (Bolivarian Republic of)', 'americas/south_america/venezuela'),
+  ('Viet Nam', 'asia/south-eastern_asia/viet_nam'),
+  ('Wallis and Futuna Islands', 'oceania/polynesia/wallis_and_futuna_islands'),
+  ('Western Sahara', 'africa/northern_africa/western_sahara'),
+  ('Yemen', 'asia/western_asia/yemen'),
+  ('Zambia', 'africa/eastern_africa/zambia'),
+  ('Zimbabwe', 'africa/eastern_africa/zimbabwe'),
+  ('\xc3\x85land Islands', 'europe/northern_europe/aland_islands'),
+]
+
+return [['', '']] + [[str(translateString(title)), relative_url] for (title, relative_url) in region_item_list]
diff --git a/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getRegionTitleItemList.xml b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getRegionTitleItemList.xml
new file mode 100644
index 0000000000..61f0d12abb
--- /dev/null
+++ b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getRegionTitleItemList.xml
@@ -0,0 +1,62 @@
+<?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>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>BusinessConfiguration_getRegionTitleItemList</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
-- 
2.30.9