Commit afb48dd5 authored by Jérome Perrin's avatar Jérome Perrin

configurator: py3

parent c7209e70
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
############################################################################## ##############################################################################
import zope.interface import zope.interface
from six.moves import cStringIO as StringIO import io
from Acquisition import aq_base from Acquisition import aq_base
from AccessControl import ClassSecurityInfo from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet from Products.ERP5Type import Permissions, PropertySheet
...@@ -37,10 +37,6 @@ from erp5.component.interface.IConfiguratorItem import IConfiguratorItem ...@@ -37,10 +37,6 @@ from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
import six import six
class UnrestrictedStringIO(StringIO):
__allow_access_to_unprotected_subobjects__ = 1
@zope.interface.implementer(IConfiguratorItem) @zope.interface.implementer(IConfiguratorItem)
class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject): class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject):
"""Import a categories spreadsheet. """Import a categories spreadsheet.
...@@ -117,7 +113,7 @@ class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -117,7 +113,7 @@ class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject):
# TODO use a invalid_spreadsheet_error_handler to report invalid # TODO use a invalid_spreadsheet_error_handler to report invalid
# spreadsheet messages (see http://svn.erp5.org?rev=24908&view=rev ) # spreadsheet messages (see http://svn.erp5.org?rev=24908&view=rev )
aq_self._category_cache = self.Base_getCategoriesSpreadSheetMapping( aq_self._category_cache = self.Base_getCategoriesSpreadSheetMapping(
UnrestrictedStringIO(self.getDefaultConfigurationSpreadsheetData())) io.BytesIO(self.getDefaultConfigurationSpreadsheetData()))
security.declareProtected(Permissions.ModifyPortalContent, security.declareProtected(Permissions.ModifyPortalContent,
'setDefaultConfigurationSpreadsheetFile') 'setDefaultConfigurationSpreadsheetFile')
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
# This extension should be replaced by a clever parser provided by # This extension should be replaced by a clever parser provided by
# ERP5OOo or probably by CloudOOo itself. # ERP5OOo or probably by CloudOOo itself.
import six
from io import BytesIO from io import BytesIO
def read(self, filename, data): def read(self, filename, data):
...@@ -38,7 +40,7 @@ def read(self, filename, data): ...@@ -38,7 +40,7 @@ def read(self, filename, data):
""" """
if data is None: if data is None:
oo_template_file = getattr(self, filename) oo_template_file = getattr(self, filename)
fp = BytesIO(oo_template_file) fp = BytesIO(bytes(oo_template_file))
else: else:
fp = BytesIO(data) fp = BytesIO(data)
fp.filename = filename fp.filename = filename
...@@ -61,7 +63,9 @@ def getIdFromString(string): ...@@ -61,7 +63,9 @@ def getIdFromString(string):
# Following line is a workaround for this, # Following line is a workaround for this,
# because \u2013 does not exist in latin1 # because \u2013 does not exist in latin1
string = string.replace(u'\u2013', '-') 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(): if char == '_' or char.isalnum():
clean_id += char clean_id += char
elif char.isspace() or char in ('+', '-'): elif char.isspace() or char in ('+', '-'):
...@@ -119,12 +123,16 @@ def convert(self, filename, data=None): ...@@ -119,12 +123,16 @@ def convert(self, filename, data=None):
# Get the property corresponding to the cell data # Get the property corresponding to the cell data
property_id = property_map[cell_index] property_id = property_map[cell_index]
# Convert the value to something like '\xc3\xa9' not '\xc3\xa9' # 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 cell_index += 1
if len(object_property_dict) > 0: if len(object_property_dict) > 0:
object_list.append(object_property_dict) 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: if len(table_dict.keys()) == 1:
return object_list return object_list
......
...@@ -53,12 +53,14 @@ def _validateFormToRequest(form, REQUEST, **kw): ...@@ -53,12 +53,14 @@ def _validateFormToRequest(form, REQUEST, **kw):
form.validate_all_to_request(REQUEST) form.validate_all_to_request(REQUEST)
validation_status = 0 validation_status = 0
validation_errors = None validation_errors = None
except FormValidationError as validation_errors: except FormValidationError as e:
## not all fields valid ## not all fields valid
validation_status = 1 validation_status = 1
except Exception as validation_errors: validation_errors = e
except Exception as e:
## missing fields ## missing fields
validation_status = 2 validation_status = 2
validation_errors = e
## extract form arguments and remove leading prefixes ## extract form arguments and remove leading prefixes
if validation_status == 0: if validation_status == 0:
for field in form.get_fields(): for field in form.get_fields():
......
...@@ -1981,11 +1981,8 @@ class TestConsultingConfiguratorWorkflow(StandardConfigurationMixin): ...@@ -1981,11 +1981,8 @@ class TestConsultingConfiguratorWorkflow(StandardConfigurationMixin):
def uploadFile(self, file_id): def uploadFile(self, file_id):
file_obj = getattr(self.portal, file_id) file_obj = getattr(self.portal, file_id)
file_path = tests_home + '/%s' % file_id file_path = tests_home + '/%s' % file_id
temp_file = open(file_path, 'w+b') with open(file_path, 'w+b') as temp_file:
try: temp_file.write(bytes(file_obj))
temp_file.write(str(file_obj))
finally:
temp_file.close()
return (file_path, FileUpload(file_path, file_id)) 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