diff --git a/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.BusinessConfiguration.py b/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.BusinessConfiguration.py index 764a8ca8b89055252da2e44f243643ac3d802a85..7e3e520550e60021a8c5875d907ca297cf38a925 100644 --- a/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.BusinessConfiguration.py +++ b/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.BusinessConfiguration.py @@ -150,7 +150,6 @@ class StateError(Exception): """ Must call only an available transition """ - pass def executeTransition(state, transition, document, form_kw=None): """ Execute transition on the object. @@ -347,9 +346,9 @@ class BusinessConfiguration(Item): ## we have already created configuration save for this state ## so remove from it already existing configuration items if configuration_save != self: # don't delete ourselves - existing_conf_items = configuration_save.objectIds() - existing_conf_items = map(None, existing_conf_items) - configuration_save.manage_delObjects(existing_conf_items) + existing_conf_items = list(configuration_save.objectIds()) + if existing_conf_items: + configuration_save.manage_delObjects(existing_conf_items) modified_form_kw = {} for k in form_kw.keys(): diff --git a/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.CategoriesSpreadsheetConfiguratorItem.py b/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.CategoriesSpreadsheetConfiguratorItem.py index 8570f21f5664cf3ac0044b45ac5c2f5afa6d8aa4..dc45ec0c49d91d448c428c13a968facd8c22f2c5 100644 --- a/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.CategoriesSpreadsheetConfiguratorItem.py +++ b/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.CategoriesSpreadsheetConfiguratorItem.py @@ -27,7 +27,7 @@ ############################################################################## import zope.interface -from six.moves import cStringIO as StringIO +import io from Acquisition import aq_base from AccessControl import ClassSecurityInfo from Products.ERP5Type import Permissions, PropertySheet @@ -37,10 +37,6 @@ from erp5.component.interface.IConfiguratorItem import IConfiguratorItem import six -class UnrestrictedStringIO(StringIO): - __allow_access_to_unprotected_subobjects__ = 1 - - @zope.interface.implementer(IConfiguratorItem) class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject): """Import a categories spreadsheet. @@ -95,9 +91,7 @@ class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject): path = path[cat] edit_dict = category_info.copy() edit_dict.pop('path') - if 'id' in edit_dict.keys(): - edit_dict.pop('id') - + edit_dict.pop('id', None) path.edit(**edit_dict) ## add to customer template business_configuration = self.getBusinessConfigurationValue() @@ -117,7 +111,7 @@ class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject): # TODO use a invalid_spreadsheet_error_handler to report invalid # spreadsheet messages (see http://svn.erp5.org?rev=24908&view=rev ) aq_self._category_cache = self.Base_getCategoriesSpreadSheetMapping( - UnrestrictedStringIO(self.getDefaultConfigurationSpreadsheetData())) + io.BytesIO(self.getDefaultConfigurationSpreadsheetData())) security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultConfigurationSpreadsheetFile') diff --git a/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.PortalTypeRolesSpreadsheetConfiguratorItem.py b/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.PortalTypeRolesSpreadsheetConfiguratorItem.py index 67d8682e712eb76926329f2f42169b593a92661b..ead20ec76cc618b8b3222816317df34859fedaff 100644 --- a/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.PortalTypeRolesSpreadsheetConfiguratorItem.py +++ b/bt5/erp5_configurator/DocumentTemplateItem/portal_components/document.erp5.PortalTypeRolesSpreadsheetConfiguratorItem.py @@ -93,7 +93,7 @@ class PortalTypeRolesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObjec business_configuration = self.getBusinessConfigurationValue() bt5_obj = business_configuration.getSpecialiseValue() if bt5_obj is not None: - bt5_obj.edit(template_portal_type_role_list=portal_type_role_dict.keys()) + bt5_obj.edit(template_portal_type_role_list=list(portal_type_role_dict.keys())) return error_list diff --git a/bt5/erp5_configurator/ExtensionTemplateItem/portal_components/extension.erp5.ConfigurationTemplate_readOOoCalcFile.py b/bt5/erp5_configurator/ExtensionTemplateItem/portal_components/extension.erp5.ConfigurationTemplate_readOOoCalcFile.py index 084b8f94a4e993a8bcccefa4d4289df7200bdb40..26f8a20fc67ce862160734fbb73fe7c1336508de 100644 --- a/bt5/erp5_configurator/ExtensionTemplateItem/portal_components/extension.erp5.ConfigurationTemplate_readOOoCalcFile.py +++ b/bt5/erp5_configurator/ExtensionTemplateItem/portal_components/extension.erp5.ConfigurationTemplate_readOOoCalcFile.py @@ -30,6 +30,8 @@ # This extension should be replaced by a clever parser provided by # ERP5OOo or probably by CloudOOo itself. +import six + from io import BytesIO def read(self, filename, data): @@ -38,7 +40,7 @@ def read(self, filename, data): """ if data is None: oo_template_file = getattr(self, filename) - fp = BytesIO(oo_template_file) + fp = BytesIO(bytes(oo_template_file)) else: fp = BytesIO(data) fp.filename = filename @@ -61,7 +63,9 @@ def getIdFromString(string): # Following line is a workaround for this, # because \u2013 does not exist in latin1 string = string.replace(u'\u2013', '-') - for char in string.encode('utf-8'):#('iso8859_1'): + if six.PY2: + string = string.encode('utf-8') + for char in string: if char == '_' or char.isalnum(): clean_id += char elif char.isspace() or char in ('+', '-'): @@ -119,12 +123,16 @@ def convert(self, filename, data=None): # Get the property corresponding to the cell data property_id = property_map[cell_index] # Convert the value to something like '\xc3\xa9' not '\xc3\xa9' - object_property_dict[property_id] = cell.encode('UTF-8') + if six.PY2: + cell = cell.encode('UTF-8') + object_property_dict[property_id] = cell cell_index += 1 if len(object_property_dict) > 0: object_list.append(object_property_dict) - table_dict[table_name.encode('UTF-8')] = object_list + if six.PY2: + table_name = table_name.encode('UTF-8') + table_dict[table_name] = object_list if len(table_dict.keys()) == 1: return object_list diff --git a/bt5/erp5_configurator/ModuleComponentTemplateItem/portal_components/module.erp5.ConfiguratorTestMixin.py b/bt5/erp5_configurator/ModuleComponentTemplateItem/portal_components/module.erp5.ConfiguratorTestMixin.py index 85ee88185f58dbe5d5b40d40484dd764e4f218cb..612fbd2b258411461fdf78da110c8ad4c141770b 100644 --- a/bt5/erp5_configurator/ModuleComponentTemplateItem/portal_components/module.erp5.ConfiguratorTestMixin.py +++ b/bt5/erp5_configurator/ModuleComponentTemplateItem/portal_components/module.erp5.ConfiguratorTestMixin.py @@ -1,4 +1,5 @@ ############################################################################## +# coding: utf-8 # Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved. # Rafael Monnerat <rafael@nexedi.com> # Ivan Tyagov <ivan@nexedi.com> @@ -340,9 +341,7 @@ class TestLiveConfiguratorWorkflowMixin(SecurityTestCase): # title is translated here title = account_business_configuration_item.getTitle() - self.assertIn(title, ('Capital', 'Gezeichnetes Kapital', - '\xd0\xa3\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xbd\xd1\x8b\xd0\xb9 ' \ - '\xd0\xba\xd0\xb0\xd0\xbf\xd0\xb8\xd1\x82\xd0\xb0\xd0\xbb')) + self.assertIn(title, ('Capital', 'Gezeichnetes Kapital', '校褋褌邪胁薪褘泄 泻邪锌懈褌邪谢')) # 4. An accounting period configuration item accounting_period_configuration_item = \ diff --git a/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/BusinessConfiguration_validateCustomerPassword.py b/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/BusinessConfiguration_validateCustomerPassword.py index a04a4b38d4d2a0ea1bf51c11e223e065255164c8..2a4fbaefe7d483661ac3836f242ce1209bc6a259 100644 --- a/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/BusinessConfiguration_validateCustomerPassword.py +++ b/bt5/erp5_configurator/SkinTemplateItem/portal_skins/erp5_configurator/BusinessConfiguration_validateCustomerPassword.py @@ -1,4 +1,2 @@ password_confirm = request.get('field_your_password_confirm', None) -if editor.encode('ascii', 'ignore') != editor: - return False return password_confirm == editor diff --git a/bt5/erp5_configurator/ToolComponentTemplateItem/portal_components/tool.erp5.ConfiguratorTool.py b/bt5/erp5_configurator/ToolComponentTemplateItem/portal_components/tool.erp5.ConfiguratorTool.py index 103a9a53e1ed2027122176ccfbff9235830c5a2b..5371650511e3b9fe7ea728a0270d56a7cf04655d 100644 --- a/bt5/erp5_configurator/ToolComponentTemplateItem/portal_components/tool.erp5.ConfiguratorTool.py +++ b/bt5/erp5_configurator/ToolComponentTemplateItem/portal_components/tool.erp5.ConfiguratorTool.py @@ -53,12 +53,14 @@ def _validateFormToRequest(form, REQUEST, **kw): form.validate_all_to_request(REQUEST) validation_status = 0 validation_errors = None - except FormValidationError as validation_errors: + except FormValidationError as e: ## not all fields valid validation_status = 1 - except Exception as validation_errors: + validation_errors = e + except Exception as e: ## missing fields validation_status = 2 + validation_errors = e ## extract form arguments and remove leading prefixes if validation_status == 0: for field in form.get_fields(): 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 index be4a68d88a7101919482db1ea47817d0cbe22a6a..85c920cf21b3844071eecf027a5e918219cad893 100644 --- 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 @@ -1,4 +1,5 @@ # coding: utf-8 +import six from Products.ERP5Type.Message import translateString if context.getGlobalConfigurationAttr('categories_spreadsheet_configuration_save_relative_url'): @@ -54,7 +55,10 @@ function_item_list = [ ] +prefix = u"\N{NO-BREAK SPACE}" * 4 +if six.PY2: + prefix = prefix.encode('utf-8') return [['', '']] + [[ - (u"\N{NO-BREAK SPACE}" * 4 * depth ).encode('utf-8') + str(translateString(title)), + ( prefix * depth ) + 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_getRegionTitleItemList.py b/bt5/erp5_configurator_standard/SkinTemplateItem/portal_skins/erp5_configurator_standard/BusinessConfiguration_getRegionTitleItemList.py index 4392e6c021d92469c55d35be87bf994fa0da8993..a5928ffa89a95f5fa9f36156d53eb0c65dff96f9 100644 --- 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 @@ -6,243 +6,243 @@ if context.getGlobalConfigurationAttr('categories_spreadsheet_configuration_save 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'), + (b'Afghanistan', 'asia/southern_asia/afghanistan'), + (b'Albania', 'europe/southern_europe/albania'), + (b'Algeria', 'africa/northern_africa/algeria'), + (b'American Samoa', 'oceania/polynesia/american_samoa'), + (b'Andorra', 'europe/southern_europe/andorra'), + (b'Angola', 'africa/middle_africa/angola'), + (b'Anguilla', 'americas/caribbean/anguilla'), + (b'Antigua and Barbuda', 'americas/caribbean/antigua_and_barbuda'), + (b'Argentina', 'americas/south_america/argentina'), + (b'Armenia', 'asia/western_asia/armenia'), + (b'Aruba', 'americas/caribbean/aruba'), + (b'Australia', 'oceania/australia/australia'), + (b'Austria', 'europe/western_europe/austria'), + (b'Azerbaijan', 'asia/western_asia/azerbaijan'), + (b'Bahamas', 'americas/caribbean/bahamas'), + (b'Bahrain', 'asia/western_asia/bahrain'), + (b'Bangladesh', 'asia/southern_asia/bangladesh'), + (b'Barbados', 'americas/caribbean/barbados'), + (b'Belarus', 'europe/eastern_europe/belarus'), + (b'Belgium', 'europe/western_europe/belgium'), + (b'Belize', 'americas/central_america/belize'), + (b'Benin', 'africa/western_africa/benin'), + (b'Bermuda', 'americas/northern_america/bermuda'), + (b'Bhutan', 'asia/southern_asia/bhutan'), + (b'Bolivia', 'americas/south_america/bolivia'), + (b'Bosnia and Herzegovina', 'europe/southern_europe/bosnia_and_herzegovina'), + (b'Botswana', 'africa/southern_africa/botswana'), + (b'Brazil', 'americas/south_america/brazil'), + (b'British Virgin Islands', 'americas/caribbean/british_virgin_islands'), + (b'Brunei Darussalam', 'asia/south-eastern_asia/brunei_darussalam'), + (b'Bulgaria', 'europe/eastern_europe/bulgaria'), + (b'Burkina Faso', 'africa/western_africa/burkina_faso'), + (b'Burundi', 'africa/eastern_africa/burundi'), + (b'Cambodia', 'asia/south-eastern_asia/cambodia'), + (b'Cameroon', 'africa/middle_africa/cameroon'), + (b'Canada', 'americas/northern_america/canada'), + (b'Cape Verde', 'africa/western_africa/cape_verde'), + (b'Cayman Islands', 'americas/caribbean/cayman_islands'), + (b'Central African Republic', 'africa/middle_africa/central_african_republic'), + (b'Chad', 'africa/middle_africa/chad'), + (b'Channel Islands', 'europe/northern_europe/channel_islands'), + (b'Chile', 'americas/south_america/chile'), + (b'China', 'asia/eastern_asia/china'), + (b'Colombia', 'americas/south_america/colombia'), + (b'Comoros', 'africa/eastern_africa/comoros'), + (b'Congo', 'africa/middle_africa/congo'), + (b'Cook Islands', 'oceania/polynesia/cook_islands'), + (b'Costa Rica', 'americas/central_america/costa_rica'), + (b"Cote d'Ivoire", 'africa/western_africa/cote_diivoire'), + (b'Croatia', 'europe/southern_europe/croatia'), + (b'Cuba', 'americas/caribbean/cuba'), + (b'Cyprus', 'asia/western_asia/cyprus'), + (b'Czech Republic', 'europe/eastern_europe/czech_republic'), + (b"Democratic People's Republic of Korea", 'asia/eastern_asia/democratic_peoples_republic_of_korea'), + (b'Democratic Republic of the Congo', 'africa/middle_africa/democratic_republic_of_the_congo'), + (b'Denmark', 'europe/northern_europe/denmark'), + (b'Djibouti', 'africa/eastern_africa/djibouti'), + (b'Dominica', 'americas/caribbean/dominica'), + (b'Dominican Republic', 'americas/caribbean/dominican_republic'), + (b'Ecuador', 'americas/south_america/ecuador'), + (b'Egypt', 'africa/northern_africa/egypt'), + (b'El Salvador', 'americas/central_america/el_salvador'), + (b'Equatorial Guinea', 'africa/middle_africa/equatorial_guinea'), + (b'Eritrea', 'africa/eastern_africa/eritrea'), + (b'Estonia', 'europe/northern_europe/estonia'), + (b'Ethiopia', 'africa/eastern_africa/ethiopia'), + (b'Faeroe Islands', 'europe/northern_europe/faeroe_islands'), + (b'Falkland Islands (Malvinas)', 'americas/south_america/falkland_islands'), + (b'Fiji', 'oceania/melanesia/fiji'), + (b'Finland', 'europe/northern_europe/finland'), + (b'France', 'europe/western_europe/france'), + (b'French Guiana', 'americas/south_america/french_guiana'), + (b'French Polynesia', 'oceania/polynesia/french_polynesia'), + (b'Gabon', 'africa/middle_africa/gabon'), + (b'Gambia', 'africa/western_africa/gambia'), + (b'Georgia', 'asia/western_asia/georgia'), + (b'Germany', 'europe/western_europe/germany'), + (b'Ghana', 'africa/western_africa/ghana'), + (b'Gibraltar', 'europe/southern_europe/gibraltar'), + (b'Greece', 'europe/southern_europe/greece'), + (b'Greenland', 'americas/northern_america/greenland'), + (b'Grenada', 'americas/caribbean/grenada'), + (b'Guadeloupe', 'americas/caribbean/guadeloupe'), + (b'Guam', 'oceania/micronesia/guam'), + (b'Guatemala', 'americas/central_america/guatemala'), + (b'Guernsey', 'europe/northern_europe/guernsey'), + (b'Guinea', 'africa/western_africa/guinea'), + (b'Guinea-Bissau', 'africa/western_africa/guinea-bissau'), + (b'Guyana', 'americas/south_america/guyana'), + (b'Haiti', 'americas/caribbean/haiti'), + (b'Holy See', 'europe/southern_europe/holy_see'), + (b'Honduras', 'americas/central_america/honduras'), + (b'Hong Kong Special Administrative Region of China', 'asia/eastern_asia/hong_kong'), + (b'Hungary', 'europe/eastern_europe/hungary'), + (b'Iceland', 'europe/northern_europe/iceland'), + (b'India', 'asia/southern_asia/india'), + (b'Indonesia', 'asia/south-eastern_asia/indonesia'), + (b'Iran, Islamic Republic of', 'asia/southern_asia/iran'), + (b'Iraq', 'asia/western_asia/iraq'), + (b'Ireland', 'europe/northern_europe/ireland'), + (b'Isle of Man', 'europe/northern_europe/isle_of_man'), + (b'Israel', 'asia/western_asia/israel'), + (b'Italy', 'europe/southern_europe/italy'), + (b'Jamaica', 'americas/caribbean/jamaica'), + (b'Japan', 'asia/eastern_asia/japan'), + (b'Jersey', 'europe/northern_europe/jersey'), + (b'Jordan', 'asia/western_asia/jordan'), + (b'Kazakhstan', 'asia/central_asia/kazakhstan'), + (b'Kenya', 'africa/eastern_africa/kenya'), + (b'Kiribati', 'oceania/micronesia/kiribati'), + (b'Kuwait', 'asia/western_asia/kuwait'), + (b'Kyrgyzstan', 'asia/central_asia/kyrgyzstan'), + (b"Lao People's Democratic Republic", 'asia/south-eastern_asia/lao_peoples_democratic_republic'), + (b'Latvia', 'europe/northern_europe/latvia'), + (b'Lebanon', 'asia/western_asia/lebanon'), + (b'Lesotho', 'africa/southern_africa/lesotho'), + (b'Liberia', 'africa/western_africa/liberia'), + (b'Libyan Arab Jamahiriya', 'africa/northern_africa/libyan_arab_jamahiriya'), + (b'Liechtenstein', 'europe/western_europe/liechtenstein'), + (b'Lithuania', 'europe/northern_europe/lithuania'), + (b'Luxembourg', 'europe/western_europe/luxembourg'), + (b'Macao Special Administrative Region of China', 'asia/eastern_asia/macao'), + (b'Madagascar', 'africa/eastern_africa/madagascar'), + (b'Malawi', 'africa/eastern_africa/malawi'), + (b'Malaysia', 'asia/south-eastern_asia/malaysia'), + (b'Maldives', 'asia/southern_asia/maldives'), + (b'Mali', 'africa/western_africa/mali'), + (b'Malta', 'europe/southern_europe/malta'), + (b'Marshall Islands', 'oceania/micronesia/marshall_islands'), + (b'Martinique', 'americas/caribbean/martinique'), + (b'Mauritania', 'africa/western_africa/mauritania'), + (b'Mauritius', 'africa/eastern_africa/mauritius'), + (b'Mayotte', 'africa/eastern_africa/mayotte'), + (b'Mexico', 'americas/central_america/mexico'), + (b'Micronesia, Federated States of', 'oceania/micronesia/federated_states_of_micronesia'), + (b'Monaco', 'europe/western_europe/monaco'), + (b'Mongolia', 'asia/eastern_asia/mongolia'), + (b'Montenegro', 'europe/southern_europe/montenegro'), + (b'Montserrat', 'americas/caribbean/montserrat'), + (b'Morocco', 'africa/northern_africa/morocco'), + (b'Mozambique', 'africa/eastern_africa/mozambique'), + (b'Myanmar', 'asia/south-eastern_asia/myanmar'), + (b'Namibia', 'africa/southern_africa/namibia'), + (b'Nauru', 'oceania/micronesia/nauru'), + (b'Nepal', 'asia/southern_asia/nepal'), + (b'Netherlands', 'europe/western_europe/netherlands'), + (b'Netherlands Antilles', 'americas/caribbean/netherlands_antilles'), + (b'New Caledonia', 'oceania/melanesia/new_caledonia'), + (b'New Zealand', 'oceania/australia/new_zealand'), + (b'Nicaragua', 'americas/central_america/nicaragua'), + (b'Niger', 'africa/western_africa/niger'), + (b'Nigeria', 'africa/western_africa/nigeria'), + (b'Niue', 'oceania/polynesia/niue'), + (b'Norfolk Island', 'oceania/australia/norfolk_island'), + (b'Northern Mariana Islands', 'oceania/micronesia/northern_mariana_islands'), + (b'Norway', 'europe/northern_europe/norway'), + (b'Occupied Palestinian Territory', 'asia/western_asia/occupied_palestinian_territory'), + (b'Oman', 'asia/western_asia/oman'), + (b'Pakistan', 'asia/southern_asia/pakistan'), + (b'Palau', 'oceania/micronesia/palau'), + (b'Panama', 'americas/central_america/panama'), + (b'Papua New Guinea', 'oceania/melanesia/papua_new_guinea'), + (b'Paraguay', 'americas/south_america/paraguay'), + (b'Peru', 'americas/south_america/peru'), + (b'Philippines', 'asia/south-eastern_asia/philippines'), + (b'Pitcairn', 'oceania/polynesia/pitcairn'), + (b'Poland', 'europe/eastern_europe/poland'), + (b'Portugal', 'europe/southern_europe/portugal'), + (b'Puerto Rico', 'americas/caribbean/puerto_rico'), + (b'Qatar', 'asia/western_asia/qatar'), + (b'Republic of Korea', 'asia/eastern_asia/republic_of_korea'), + (b'Republic of Moldova', 'europe/eastern_europe/republic_of_moldova'), + (b'Romania', 'europe/eastern_europe/romania'), + (b'Russian Federation', 'europe/eastern_europe/russian_federation'), + (b'Rwanda', 'africa/eastern_africa/rwanda'), + (b'R\xc3\xa9union', 'africa/eastern_africa/reunion'), + (b'Saint Helena', 'africa/western_africa/saint_helena'), + (b'Saint Kitts and Nevis', 'americas/caribbean/saint_kitts_and_nevis'), + (b'Saint Lucia', 'americas/caribbean/saint_lucia'), + (b'Saint Martin (French part)', 'americas/caribbean/saint_martin'), + (b'Saint Pierre and Miquelon', 'americas/northern_america/saint_pierre_and_miquelon'), + (b'Saint Vincent and the Grenadines', 'americas/caribbean/saint_vincent_and_the_grenadines'), + (b'Saint-Barth\xc3\xa9lemy', 'americas/caribbean/saint-barthelemy'), + (b'Samoa', 'oceania/polynesia/samoa'), + (b'San Marino', 'europe/southern_europe/san_marino'), + (b'Sao Tome and Principe', 'africa/middle_africa/sao_tome_and_principe'), + (b'Saudi Arabia', 'asia/western_asia/saudi_arabia'), + (b'Senegal', 'africa/western_africa/senegal'), + (b'Serbia', 'europe/southern_europe/serbia'), + (b'Seychelles', 'africa/eastern_africa/seychelles'), + (b'Sierra Leone', 'africa/western_africa/sierra_leone'), + (b'Singapore', 'asia/south-eastern_asia/singapore'), + (b'Slovakia', 'europe/eastern_europe/slovakia'), + (b'Slovenia', 'europe/southern_europe/slovenia'), + (b'Solomon Islands', 'oceania/melanesia/solomon_islands'), + (b'Somalia', 'africa/eastern_africa/somalia'), + (b'South Africa', 'africa/southern_africa/south_africa'), + (b'Spain', 'europe/southern_europe/spain'), + (b'Sri Lanka', 'asia/southern_asia/sri_lanka'), + (b'Sudan', 'africa/northern_africa/sudan'), + (b'Suriname', 'americas/south_america/suriname'), + (b'Svalbard and Jan Mayen Islands', 'europe/northern_europe/svalbard_and_jan_mayen_islands'), + (b'Swaziland', 'africa/southern_africa/swaziland'), + (b'Sweden', 'europe/northern_europe/sweden'), + (b'Switzerland', 'europe/western_europe/switzerland'), + (b'Syrian Arab Republic', 'asia/western_asia/syrian_arab_republic'), + (b'Tajikistan', 'asia/central_asia/tajikistan'), + (b'Thailand', 'asia/south-eastern_asia/thailand'), + (b'The former Yugoslav Republic of Macedonia', 'europe/southern_europe/macedonia'), + (b'Timor-Leste', 'asia/south-eastern_asia/timor-leste'), + (b'Togo', 'africa/western_africa/togo'), + (b'Tokelau', 'oceania/polynesia/tokelau'), + (b'Tonga', 'oceania/polynesia/tonga'), + (b'Trinidad and Tobago', 'americas/caribbean/trinidad_and_tobago'), + (b'Tunisia', 'africa/northern_africa/tunisia'), + (b'Turkey', 'asia/western_asia/turkey'), + (b'Turkmenistan', 'asia/central_asia/turkmenistan'), + (b'Turks and Caicos Islands', 'americas/caribbean/turks_and_caicos_islands'), + (b'Tuvalu', 'oceania/polynesia/tuvalu'), + (b'Uganda', 'africa/eastern_africa/uganda'), + (b'Ukraine', 'europe/eastern_europe/ukraine'), + (b'United Arab Emirates', 'asia/western_asia/united_arab_emirates'), + (b'United Kingdom of Great Britain and Northern Ireland', 'europe/northern_europe/united_kingdom'), + (b'United Republic of Tanzania', 'africa/eastern_africa/united_republic_of_tanzania'), + (b'United States Virgin Islands', 'americas/caribbean/united_states_virgin_islands'), + (b'United States of America', 'americas/northern_america/united_states_of_america'), + (b'Uruguay', 'americas/south_america/uruguay'), + (b'Uzbekistan', 'asia/central_asia/uzbekistan'), + (b'Vanuatu', 'oceania/melanesia/vanuatu'), + (b'Venezuela (Bolivarian Republic of)', 'americas/south_america/venezuela'), + (b'Viet Nam', 'asia/south-eastern_asia/viet_nam'), + (b'Wallis and Futuna Islands', 'oceania/polynesia/wallis_and_futuna_islands'), + (b'Western Sahara', 'africa/northern_africa/western_sahara'), + (b'Yemen', 'asia/western_asia/yemen'), + (b'Zambia', 'africa/eastern_africa/zambia'), + (b'Zimbabwe', 'africa/eastern_africa/zimbabwe'), + (b'\xc3\x85land Islands', 'europe/northern_europe/aland_islands'), ] -return [['', '']] + [[str(translateString(title)), relative_url] for (title, relative_url) in region_item_list] +return [['', '']] + [[str(translateString(title.decode('utf-8'))), relative_url] for (title, relative_url) in region_item_list]