Commit 19de09b5 authored by Jérome Perrin's avatar Jérome Perrin

configurator: py3

parent 30d7183e
......@@ -347,8 +347,8 @@ 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)
existing_conf_items = list(configuration_save.objectIds())
if existing_conf_items:
configuration_save.manage_delObjects(existing_conf_items)
modified_form_kw = {}
......
......@@ -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')
......
......@@ -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
......
......@@ -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
......
##############################################################################
# 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 = \
......
password_confirm = request.get('field_your_password_confirm', None)
if editor.encode('ascii', 'ignore') != editor:
return False
return password_confirm == editor
......@@ -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():
......
# 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]
......@@ -1981,11 +1981,8 @@ class TestConsultingConfiguratorWorkflow(StandardConfigurationMixin):
def uploadFile(self, file_id):
file_obj = getattr(self.portal, file_id)
file_path = tests_home + '/%s' % file_id
temp_file = open(file_path, 'w+b')
try:
temp_file.write(str(file_obj))
finally:
temp_file.close()
with open(file_path, 'w+b') as temp_file:
temp_file.write(bytes(file_obj))
return (file_path, FileUpload(file_path, file_id))
......
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