Files
suite/connector_walmart/models/walmart_binding/common.py

67 lines
2.5 KiB
Python

# © 2017,2018 Hibou Corp.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, models, fields
from odoo.addons.queue_job.job import job, related_action
class WalmartBinding(models.AbstractModel):
""" Abstract Model for the Bindings.
All of the models used as bindings between Walmart and Odoo
(``walmart.sale.order``) should ``_inherit`` from it.
"""
_name = 'walmart.binding'
_inherit = 'external.binding'
_description = 'Walmart Binding (abstract)'
backend_id = fields.Many2one(
comodel_name='walmart.backend',
string='Walmart Backend',
required=True,
ondelete='restrict',
)
external_id = fields.Char(string='ID in Walmart')
_sql_constraints = [
('walmart_uniq', 'unique(backend_id, external_id)', 'A binding already exists for this Walmart ID.'),
]
@job(default_channel='root.walmart')
@related_action(action='related_action_walmart_link')
@api.model
def import_batch(self, backend, filters=None):
""" Prepare the import of records modified on Walmart """
if filters is None:
filters = {}
with backend.work_on(self._name) as work:
importer = work.component(usage='batch.importer')
return importer.run(filters=filters)
@job(default_channel='root.walmart')
@related_action(action='related_action_walmart_link')
@api.model
def import_record(self, backend, external_id, force=False):
""" Import a Walmart record """
with backend.work_on(self._name) as work:
importer = work.component(usage='record.importer')
return importer.run(external_id, force=force)
# @job(default_channel='root.walmart')
# @related_action(action='related_action_unwrap_binding')
# @api.multi
# def export_record(self, fields=None):
# """ Export a record on Walmart """
# self.ensure_one()
# with self.backend_id.work_on(self._name) as work:
# exporter = work.component(usage='record.exporter')
# return exporter.run(self, fields)
#
# @job(default_channel='root.walmart')
# @related_action(action='related_action_walmart_link')
# def export_delete_record(self, backend, external_id):
# """ Delete a record on Walmart """
# with backend.work_on(self._name) as work:
# deleter = work.component(usage='record.exporter.deleter')
# return deleter.run(external_id)