diff --git a/modules/document_incoming/document.py b/modules/document_incoming/document.py index a1a819f..07825d1 100755 --- a/modules/document_incoming/document.py +++ b/modules/document_incoming/document.py @@ -181,33 +181,97 @@ class Incoming(DeactivableMixin, Workflow, ModelSQL, ModelView): def _split_mime_types(cls): return ['application/pdf'] + # @classmethod + # def from_inbound_email(cls, email_, rule): + # message = email_.as_dict() + # attachments = message.get('attachments') + # active = False + # data = message.get('text', message.get('html')) + # logger.info("DATA_FROM_INBOUND_MAIL:%s",data) + # if isinstance(data, str): + # data = data.encode() + # body = message.get('text') or message.get('html') or '' + # if isinstance(body, str): + # body_bytes = body.encode('utf-8') + # else: + # body_bytes = body + # document = cls( + # active=active, + # name=message.get('subject', 'No Subject'), + # company=rule.document_incoming_company, + # data=data, + # type=rule.document_incoming_type if active else None, + # source='inbound_email', + # ) + # children = [] + # if attachments: + # for attachment in attachments: + # child = cls( + # name=attachment['filename'] or 'data.bin', + # company=rule.document_incoming_company, + # data=attachment['data'], + # type=rule.document_incoming_type, + # source='inbound_email') + # children.append(child) + # else: + # child = cls( + # name='mail_' + message.get('subject', 'No Subject') + '.txt', + # company=rule.document_incoming_company, + # data=body_bytes, + # type=rule.document_incoming_type, + # source='inbound_email', + # ) + # children.append(child) + # document.children = children + # document.save() + # return document @classmethod def from_inbound_email(cls, email_, rule): message = email_.as_dict() + + def clean(value): + if not value: + return value + return ( + value + .replace('\n', ' ') + .replace('\r', ' ') + .replace("'", '') + .replace('"', '') + .strip() + ) + + subject = clean(message.get('subject', 'No Subject')) + attachments = message.get('attachments') active = False data = message.get('text', message.get('html')) - logger.info("DATA_FROM_INBOUND_MAIL:%s",data) + logger.info("DATA_FROM_INBOUND_MAIL:%s", data) + if isinstance(data, str): data = data.encode() + body = message.get('text') or message.get('html') or '' if isinstance(body, str): body_bytes = body.encode('utf-8') else: body_bytes = body + document = cls( active=active, - name=message.get('subject', 'No Subject'), + name=subject, company=rule.document_incoming_company, data=data, type=rule.document_incoming_type if active else None, source='inbound_email', - ) + ) + children = [] if attachments: for attachment in attachments: + filename = clean(attachment['filename'] or 'data.bin') child = cls( - name=attachment['filename'] or 'data.bin', + name=filename, company=rule.document_incoming_company, data=attachment['data'], type=rule.document_incoming_type, @@ -215,13 +279,14 @@ class Incoming(DeactivableMixin, Workflow, ModelSQL, ModelView): children.append(child) else: child = cls( - name='mail_' + message.get('subject', 'No Subject') + '.txt', + name='mail_' + subject + '.txt', company=rule.document_incoming_company, data=body_bytes, type=rule.document_incoming_type, source='inbound_email', ) children.append(child) + document.children = children document.save() return document @@ -284,7 +349,6 @@ class Incoming(DeactivableMixin, Workflow, ModelSQL, ModelView): default.setdefault('children') return super().copy(documents, default=default) - def iter_pages(expression, size): ranges = set() for pages in expression.split(','): diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py index c7c2f44..021121d 100755 --- a/modules/purchase_trade/sale.py +++ b/modules/purchase_trade/sale.py @@ -312,7 +312,7 @@ class Sale(metaclass=PoolMeta): id = 1 for cont in shipment.container: if id == 1: - info += ' Containers' + info += ' Container(s)' if cont.container_no: info += ' ' + cont.container_no else: