Skip to content

Commit

Permalink
Merge PR #494 into 18.0
Browse files Browse the repository at this point in the history
Signed-off-by simahawk
  • Loading branch information
OCA-git-bot committed Oct 17, 2024
2 parents 78ffbf3 + 69c0896 commit 3b6e7b9
Show file tree
Hide file tree
Showing 141 changed files with 20,917 additions and 0 deletions.
166 changes: 166 additions & 0 deletions connector/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
=========
Connector
=========

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:c3fb5d7af399741b082a3725c3698dd038043c4a6a855da345ea1f9f9cb3a979
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fconnector-lightgray.png?logo=github
:target: https://github.com/OCA/connector/tree/18.0/connector
:alt: OCA/connector
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/connector-18-0/connector-18-0-connector
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/connector&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This is a framework designed to build connectors with external systems,
usually called ``Backends`` in the documentation.

Documentation: http://odoo-connector.com

It features:

- A jobs queue

In which the connectors can push functions (synchronization tasks)
to be executed later.

- An event pattern

The connectors can subscribe listener functions on the events,
executed when the events are fired.

- Connector base classes

Called ``ConnectorUnit``.

Include base classes for the use in connectors, ready to be
extended:

- ``Synchronizer``: flow of an import or export
- ``Mapper``: transform a record according to mapping rules
- ``Binder``: link external IDs with local IDS
- ``BackendAdapter``: adapter interface for the exchanges with
the backend
- But ``ConnectorUnit`` can be extended to accomplish any task

- A multi-backend support

Each ``ConnectorUnit`` can be registered amongst a backend type
(eg. Magento) and a backend version (allow to have a different
``Mapper`` for each backend's version for instance)

It is used for example used to connect
`Magento <http://odoo-magento-connector.com>`__ and
`Prestashop <https://github.com/OCA/connector-prestashop>`__, but also
used with Solr, CMIS, ...

**Table of contents**

.. contents::
:local:

Usage
=====

This module does nothing on its own. It is a ground for developing
advanced connector modules. For further information, please go on:
http://odoo-connector.com

Changelog
=========

Next
----

12.0.1.0.0 (2018-11-26)
-----------------------

- [MIGRATION] from 12.0 branched at rev. 324e006

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/connector/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/connector/issues/new?body=module:%20connector%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Camptocamp

Contributors
------------

- Guewen Baconnier at Camptocamp
- Alexandre Fayolle at Camptocamp
- Benoit Guillot at Akretion
- Nicolas Bessi at Camptocamp
- Joël Grand-Guillaume at Camptocamp
- Arthur Vuillard at Akretion
- Sebastien Beau at Akretion
- Laurent Mignon at Acsone
- Leonardo Pistone at Camptocamp
- David Béal at Akretion
- Christophe Combelles at Anybox
- Stéphane Bidoul at Acsone
- Malte Jacobi at IBO / HTW
- Laetitia Gangloff at Acsone
- David Lefever at Taktik S.A.
- Jos de Graeve at Apertoso NV
- Jean-Sébastien Suzanne at Anybox
- Leonardo Donelli at MONK Software
- Mathias Colpaert
- Yannick Vaucher at Camptocamp
- Nicolas Piganeau at NDP Systèmes
- Florent Thomas at Mind And Go
- Matthieu Dietrich at Camptocamp
- Olivier Laurent at Acsone
- Eric Antones at NuoBiT Solutions S.L.
- Asier Neira at Factor Libre S.L.
- Nguyen Minh Chien at Trobz.

Other credits
-------------

The migration of this module from 17.0 to 18.0 was financially supported
by Camptocamp.

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/connector <https://github.com/OCA/connector/tree/18.0/connector>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions connector/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import components
from . import models
18 changes: 18 additions & 0 deletions connector/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright 2013 Camptocamp SA
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html)

{
"name": "Connector",
"version": "18.0.1.0.0",
"author": "Camptocamp,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/connector",
"license": "LGPL-3",
"category": "Generic Modules",
"depends": ["mail", "queue_job", "component", "component_event"],
"data": [
"security/connector_security.xml",
"views/connector_menu.xml",
"views/res_partner_views.xml",
],
"installable": True,
}
7 changes: 7 additions & 0 deletions connector/components/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from . import core
from . import backend_adapter
from . import binder
from . import mapper
from . import listener
from . import locker
from . import synchronizer
64 changes: 64 additions & 0 deletions connector/components/backend_adapter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Copyright 2013 Camptocamp SA
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html)

"""
Backend Adapter
===============
An external adapter has a common interface to speak with the backend.
It translates the basic orders (search, read, write) to the protocol
used by the backend.
"""

from odoo.addons.component.core import AbstractComponent


class BackendAdapter(AbstractComponent):
"""Base Backend Adapter for the connectors"""

_name = "base.backend.adapter"
_inherit = "base.connector"
_usage = "backend.adapter"


# pylint: disable=W8106
class CRUDAdapter(AbstractComponent):
"""Base External Adapter specialized in the handling
of records on external systems.
This is an empty shell, Components can inherit and implement their own
implementation for the methods.
"""

_name = "base.backend.adapter.crud"
_inherit = "base.backend.adapter"
_usage = "backend.adapter"

def search(self, *args, **kwargs):
"""Search records according to some criterias
and returns a list of ids"""
raise NotImplementedError

def read(self, *args, **kwargs):
"""Returns the information of a record"""
raise NotImplementedError

def search_read(self, *args, **kwargs):
"""Search records according to some criterias
and returns their information"""
raise NotImplementedError

def create(self, *args, **kwargs):
"""Create a record on the external system"""
raise NotImplementedError

def write(self, *args, **kwargs):
"""Update records on the external system"""
raise NotImplementedError

def delete(self, *args, **kwargs):
"""Delete a record on the external system"""
raise NotImplementedError
Loading

0 comments on commit 3b6e7b9

Please sign in to comment.