fix(amazon-mws): python3 compatibility changes (#19209)
Signed-off-by: Chinmay D. Pai <chinmaydpai@gmail.com>
diff --git a/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_methods.py b/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_methods.py
index b9be9c0..2f39dc5 100644
--- a/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_methods.py
+++ b/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_methods.py
@@ -4,10 +4,7 @@
from __future__ import unicode_literals
import frappe, time, dateutil, math, csv
-try:
- from StringIO import StringIO
-except ImportError:
- from io import StringIO
+from six import StringIO
import erpnext.erpnext_integrations.doctype.amazon_mws_settings.amazon_mws_api as mws
from frappe import _
@@ -26,7 +23,7 @@
listings_response = reports.get_report(report_id=report_id)
#Get ASIN Codes
- string_io = StringIO(listings_response.original)
+ string_io = StringIO(frappe.safe_decode(listings_response.original))
csv_rows = list(csv.reader(string_io, delimiter=str('\t')))
asin_list = list(set([row[1] for row in csv_rows[1:]]))
#break into chunks of 10
@@ -294,7 +291,8 @@
so.submit()
except Exception as e:
- frappe.log_error(message=e, title="Create Sales Order")
+ import traceback
+ frappe.log_error(message=traceback.format_exc(), title="Create Sales Order")
def create_customer(order_json):
order_customer_name = ""
@@ -451,7 +449,7 @@
shipment_item_list = return_as_list(shipment_event.ShipmentEvent.ShipmentItemList.ShipmentItem)
for shipment_item in shipment_item_list:
- charges, fees = []
+ charges, fees = [], []
if 'ItemChargeList' in shipment_item.keys():
charges = return_as_list(shipment_item.ItemChargeList.ChargeComponent)
diff --git a/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_mws_api.py b/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_mws_api.py
index 68c2b9c..9925dc4 100755
--- a/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_mws_api.py
+++ b/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_mws_api.py
@@ -65,7 +65,8 @@
"""
md = hashlib.md5()
md.update(string)
- return base64.encodestring(md.digest()).strip('\n')
+ return base64.encodestring(md.digest()).strip('\n') if six.PY2 \
+ else base64.encodebytes(md.digest()).decode().strip()
def remove_empty(d):
"""
@@ -87,8 +88,7 @@
self.original = xml
self._rootkey = rootkey
self._mydict = xml_utils.xml2dict().fromstring(remove_namespace(xml))
- self._response_dict = self._mydict.get(self._mydict.keys()[0],
- self._mydict)
+ self._response_dict = self._mydict.get(list(self._mydict)[0], self._mydict)
@property
def parsed(self):