mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[REL] connector_amazon_sp: for 11.0
This commit is contained in:
79
connector_amazon_sp/components/backend_adapter.py
Normal file
79
connector_amazon_sp/components/backend_adapter.py
Normal file
@@ -0,0 +1,79 @@
|
||||
# © 2021 Hibou Corp.
|
||||
|
||||
from odoo.addons.component.core import AbstractComponent
|
||||
|
||||
# Feed API
|
||||
from datetime import datetime
|
||||
from xml.etree import ElementTree
|
||||
|
||||
|
||||
class BaseAmazonConnectorComponent(AbstractComponent):
|
||||
""" Base Amazon Connector Component
|
||||
|
||||
All components of this connector should inherit from it.
|
||||
"""
|
||||
_name = 'base.amazon.connector'
|
||||
_inherit = 'base.connector'
|
||||
_collection = 'amazon.backend'
|
||||
|
||||
|
||||
class AmazonAdapter(AbstractComponent):
|
||||
_name = 'amazon.adapter'
|
||||
_inherit = ['base.backend.adapter', 'base.amazon.connector']
|
||||
|
||||
ElementTree = ElementTree
|
||||
FEED_ENCODING = 'iso-8859-1'
|
||||
|
||||
def search(self, filters=None):
|
||||
""" Search records according to some criterias
|
||||
and returns a list of ids """
|
||||
raise NotImplementedError
|
||||
|
||||
def read(self, id, attributes=None):
|
||||
""" Returns the information of a record """
|
||||
raise NotImplementedError
|
||||
|
||||
def search_read(self, filters=None):
|
||||
""" Search records according to some criterias
|
||||
and returns their information"""
|
||||
raise NotImplementedError
|
||||
|
||||
def create(self, data):
|
||||
""" Create a record on the external system """
|
||||
raise NotImplementedError
|
||||
|
||||
def write(self, id, data):
|
||||
""" Update records on the external system """
|
||||
raise NotImplementedError
|
||||
|
||||
def delete(self, id):
|
||||
""" Delete a record on the external system """
|
||||
raise NotImplementedError
|
||||
|
||||
def _feed(self, message_type, backend):
|
||||
root = self.ElementTree.Element('AmazonEnvelope',
|
||||
{'{http://www.w3.org/2001/XMLSchema-instance}noNamespaceSchemaLocation': 'amzn-envelope.xsd'})
|
||||
header = self.ElementTree.SubElement(root, 'Header')
|
||||
self.ElementTree.SubElement(header, 'DocumentVersion').text = '1.01'
|
||||
self.ElementTree.SubElement(header, 'MerchantIdentifier').text = backend.merchant_id
|
||||
self.ElementTree.SubElement(root, 'MessageType').text = message_type
|
||||
|
||||
# note that you can remove and add your own Message node
|
||||
message = self.ElementTree.SubElement(root, 'Message')
|
||||
self.ElementTree.SubElement(message, 'MessageID').text = str(int(datetime.now().timestamp()))
|
||||
return root, message
|
||||
|
||||
def _feed_string(self, node):
|
||||
return self.ElementTree.tostring(node, encoding=self.FEED_ENCODING, method='xml')
|
||||
|
||||
@property
|
||||
def api_instance(self):
|
||||
try:
|
||||
amazon_api = getattr(self.work, 'amazon_api')
|
||||
except AttributeError:
|
||||
raise AttributeError(
|
||||
'You must provide a amazon_api attribute with a '
|
||||
'Amazon instance to be able to use the '
|
||||
'Backend Adapter.'
|
||||
)
|
||||
return amazon_api
|
||||
Reference in New Issue
Block a user