diff --git a/.gitignore b/.gitignore index cf8b95a..a97b84a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ fishbowl.log fishbowl/fishbowl.ini +fishbowl_api.egg-info \ No newline at end of file diff --git a/fishbowl/api.py b/fishbowl/api.py index 14265b6..2a43d56 100644 --- a/fishbowl/api.py +++ b/fishbowl/api.py @@ -665,8 +665,9 @@ def get_so(self, number): def save_so(self, so): request = xmlrequests.SaveSO(so, key=self.key) response = self.send_message(request) + # print etree.tostring(response) check_status(response.find('FbiMsgsRs')) - return objects.SalesOrder(response.find('SalesOrder')) + return objects.SalesOrder(response.find('.//SalesOrder')) class FishbowlAPI(object): diff --git a/fishbowl/objects.py b/fishbowl/objects.py index 55b0c93..80bc700 100644 --- a/fishbowl/objects.py +++ b/fishbowl/objects.py @@ -142,7 +142,7 @@ def get_xml_data(self, base_el): if six.PY2: key = key.encode(self.encoding) if children: - if [el for el in child if el.text.strip()]: + if [el for el in child if el.text and el.text.strip()]: data[key] = self.get_xml_data(child) else: inner = [] @@ -167,8 +167,13 @@ def __setitem__(self, key, value): raise KeyError('No field named {}'.format(key)) expected_type = self.fields[key] expected_type = getattr(expected_type, 'type', expected_type) + if expected_type is None: expected_type = six.text_type + + if not inspect.isclass(expected_type): + expected_type = expected_type.__class__ + if not isinstance(value, expected_type): raise ValueError('Value was not type {}'.format(expected_type)) self.mapped[key] = value @@ -414,6 +419,7 @@ class SalesOrderItem(FishbowlObject): ('RevisionLevel', int), ('TotalCost', decimal.Decimal), ('TaxableFlag', fishbowl_boolean), + ('Note', None) ])