Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions setup/webservice/odoo/addons/webservice
6 changes: 6 additions & 0 deletions setup/webservice/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)
73 changes: 73 additions & 0 deletions webservice/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
==========
WebService
==========

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fedi-lightgray.png?logo=github
:target: https://github.com/OCA/edi/tree/14.0/webservice
:alt: OCA/edi
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/edi-14-0/edi-14-0-webservice
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/226/14.0
:alt: Try me on Runbot

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

This module creates WebService frameworks to be used globally

**Table of contents**

.. contents::
:local:

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/edi/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/edi/issues/new?body=module:%20webservice%0Aversion:%2014.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
~~~~~~~

* Creu Blanca

Contributors
~~~~~~~~~~~~

* Enric Tobella <etobella@creublanca.es>

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/edi <https://github.com/OCA/edi/tree/14.0/webservice>`_ 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 webservice/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import components
from . import models
17 changes: 17 additions & 0 deletions webservice/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2020 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "WebService",
"summary": """
Provide unified way to handle external webservices configuration and calls.
""",
"version": "14.0.1.1.0",
"license": "AGPL-3",
"development_status": "Beta",
"author": "Creu Blanca,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/web-api",
"depends": ["component", "server_environment"],
"data": ["security/ir.model.access.csv", "views/webservice_backend.xml"],
"maintainers": ["etobella", "simahawk"],
}
2 changes: 2 additions & 0 deletions webservice/components/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import base_adapter
from . import request_adapter
20 changes: 20 additions & 0 deletions webservice/components/base_adapter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2020 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo.addons.component.core import AbstractComponent


class BaseWebServiceAdapter(AbstractComponent):
_name = "base.webservice.adapter"
_collection = "webservice.backend"
_webservice_protocol = False
_usage = "webservice.request"

@classmethod
def _component_match(cls, work, usage=None, model_name=None, **kw):
"""Match by protocol.

When landing here, registry lookup filtered already by usage and model_name.
Now, narrow match by webservice's protocol.
"""
return kw.get("webservice_protocol") in (None, cls._webservice_protocol)
49 changes: 49 additions & 0 deletions webservice/components/request_adapter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Copyright 2020 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

import requests

from odoo.addons.component.core import Component


class BaseRestRequestsAdapter(Component):
"""Generic adapter for HTTP requests."""

_name = "base.request"
_inherit = "base.webservice.adapter"
_webservice_protocol = "http"

def _request(self, method, **kwargs):
new_kwargs = kwargs.copy()
new_kwargs.update(
{"auth": self._get_auth(**kwargs), "headers": self._get_headers(**kwargs)}
)
request = requests.request(
method, self.collection.url.format(**kwargs), **new_kwargs
)
request.raise_for_status()
return request.content

def get(self, **kwargs):
return self._request("get", **kwargs)

def post(self, **kwargs):
return self._request("post", **kwargs)

def put(self, **kwargs):
return self._request("put", **kwargs)

def _get_auth(self, auth=False, **kwargs):
if auth:
return auth
if self.collection.username and self.collection.password:
return self.collection.username, self.collection.password
return None

def _get_headers(self, content_type=False, headers=False, **kwargs):
result = {
"Content-Type": content_type or self.collection.content_type,
}
if isinstance(headers, dict):
result.update(headers)
return result
174 changes: 174 additions & 0 deletions webservice/i18n/fr.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * webservice
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-06-17 15:48+0000\n"
"Last-Translator: Yves Le Doeuff <yld@alliasys.fr>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.3.2\n"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__content_type
msgid "Content Type"
msgstr "Type de contenu"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__content_type_env_default
msgid "Content Type Env Default"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__content_type_env_is_editable
msgid "Content Type Env Is Editable"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__create_uid
msgid "Created by"
msgstr "Créé par"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__create_date
msgid "Created on"
msgstr "Crée le"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__display_name
msgid "Display Name"
msgstr "Afficher Nom"

#. module: webservice
#: model:ir.model.fields.selection,name:webservice.selection__webservice_backend__content_type__application/x-www-form-urlencoded
msgid "Form"
msgstr "Formulaire"

#. module: webservice
#: model:ir.model.fields.selection,name:webservice.selection__webservice_backend__protocol__http
msgid "HTTP Request"
msgstr "Requête HTTP"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__id
msgid "ID"
msgstr "ID"

#. module: webservice
#: model:ir.model.fields.selection,name:webservice.selection__webservice_backend__content_type__application/json
msgid "JSON"
msgstr "JSON"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__name
msgid "Name"
msgstr "Nom"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__password
msgid "Password"
msgstr "Mot de passe"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__password_env_default
msgid "Password Env Default"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__password_env_is_editable
msgid "Password Env Is Editable"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__protocol
msgid "Protocol"
msgstr "Protocole"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__protocol_env_default
msgid "Protocol Env Default"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__protocol_env_is_editable
msgid "Protocol Env Is Editable"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__server_env_defaults
msgid "Server Env Defaults"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__tech_name
msgid "Tech Name"
msgstr ""

#. module: webservice
#: model:ir.model.fields,help:webservice.field_webservice_backend__tech_name
msgid "Unique name for technical purposes. Eg: server env keys."
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__url
msgid "Url"
msgstr "Url"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__url_env_default
msgid "Url Env Default"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__url_env_is_editable
msgid "Url Env Is Editable"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__username
msgid "Username"
msgstr "nom d'utilisateur :"

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__username_env_default
msgid "Username Env Default"
msgstr ""

#. module: webservice
#: model:ir.model.fields,field_description:webservice.field_webservice_backend__username_env_is_editable
msgid "Username Env Is Editable"
msgstr ""

#. module: webservice
#: model:ir.actions.act_window,name:webservice.webservice_backend_act_window
#: model:ir.model,name:webservice.model_webservice_backend
#: model:ir.ui.menu,name:webservice.webservice_backend_menu
msgid "WebService Backend"
msgstr ""

#. module: webservice
#: model:ir.model.fields.selection,name:webservice.selection__webservice_backend__content_type__application/xml
msgid "XML"
msgstr "XLM"
Loading