From 49391fb2101b4e5b677d868989e4f4e544241319 Mon Sep 17 00:00:00 2001 From: Javier Ruiz Date: Thu, 8 Feb 2024 10:51:29 +0100 Subject: [PATCH] 17.0 port API modules - base_api - openapi --- base_api/README.rst | 31 + base_api/__init__.py | 4 + base_api/__manifest__.py | 25 + base_api/doc/changelog.rst | 8 + base_api/doc/index.rst | 317 ++++++ base_api/i18n/fr.po | 28 + base_api/lib/__init__.py | 1 + base_api/lib/pinguin.py | 355 +++++++ base_api/models/__init__.py | 3 + base_api/models/base.py | 105 ++ base_api/static/description/icon.png | Bin 0 -> 3035 bytes base_api/tests/__init__.py | 3 + base_api/tests/test_base.py | 215 ++++ openapi/README.rst | 79 ++ openapi/__init__.py | 8 + openapi/__manifest__.py | 35 + openapi/controllers/__init__.py | 5 + openapi/controllers/api.py | 227 +++++ openapi/controllers/main.py | 51 + openapi/controllers/pinguin.py | 945 ++++++++++++++++++ openapi/demo/openapi_demo.xml | 65 ++ openapi/demo/openapi_security_demo.xml | 7 + openapi/doc/changelog.rst | 87 ++ openapi/doc/index.rst | 173 ++++ openapi/i18n/fr.po | 535 ++++++++++ openapi/images/openapi-swagger.png | Bin 0 -> 42816 bytes openapi/models/__init__.py | 7 + openapi/models/ir_exports.py | 33 + openapi/models/ir_model.py | 18 + openapi/models/openapi_access.py | 536 ++++++++++ openapi/models/openapi_log.py | 16 + openapi/models/openapi_namespace.py | 265 +++++ openapi/models/res_users.py | 33 + openapi/security/ir.model.access.csv | 9 + openapi/security/openapi_security.xml | 23 + openapi/security/res_users_token.xml | 5 + openapi/static/description/aws.png | Bin 0 -> 9294 bytes openapi/static/description/dataiku.png | Bin 0 -> 29607 bytes openapi/static/description/dots.jpg | Bin 0 -> 9203 bytes openapi/static/description/icon.png | Bin 0 -> 9678 bytes .../openapi-configuration-model.png | Bin 0 -> 43364 bytes .../openapi-configuration-namespace.png | Bin 0 -> 37960 bytes openapi/static/description/openapi-logs.png | Bin 0 -> 208169 bytes openapi/static/description/powerbi.png | Bin 0 -> 30786 bytes openapi/static/description/swagger-editor.png | Bin 0 -> 192180 bytes openapi/static/description/syndesis.jpg | Bin 0 -> 10977 bytes openapi/tests/__init__.py | 2 + openapi/tests/test_api.py | 291 ++++++ openapi/tests/test_json_spec.py | 37 + openapi/views/ir_model_view.xml | 26 + openapi/views/openapi_view.xml | 262 +++++ openapi/views/res_users_view.xml | 28 + 52 files changed, 4903 insertions(+) create mode 100644 base_api/README.rst create mode 100644 base_api/__init__.py create mode 100644 base_api/__manifest__.py create mode 100644 base_api/doc/changelog.rst create mode 100644 base_api/doc/index.rst create mode 100644 base_api/i18n/fr.po create mode 100644 base_api/lib/__init__.py create mode 100644 base_api/lib/pinguin.py create mode 100644 base_api/models/__init__.py create mode 100644 base_api/models/base.py create mode 100644 base_api/static/description/icon.png create mode 100644 base_api/tests/__init__.py create mode 100644 base_api/tests/test_base.py create mode 100644 openapi/README.rst create mode 100644 openapi/__init__.py create mode 100644 openapi/__manifest__.py create mode 100644 openapi/controllers/__init__.py create mode 100644 openapi/controllers/api.py create mode 100644 openapi/controllers/main.py create mode 100644 openapi/controllers/pinguin.py create mode 100644 openapi/demo/openapi_demo.xml create mode 100644 openapi/demo/openapi_security_demo.xml create mode 100644 openapi/doc/changelog.rst create mode 100644 openapi/doc/index.rst create mode 100644 openapi/i18n/fr.po create mode 100644 openapi/images/openapi-swagger.png create mode 100644 openapi/models/__init__.py create mode 100644 openapi/models/ir_exports.py create mode 100644 openapi/models/ir_model.py create mode 100644 openapi/models/openapi_access.py create mode 100644 openapi/models/openapi_log.py create mode 100644 openapi/models/openapi_namespace.py create mode 100644 openapi/models/res_users.py create mode 100644 openapi/security/ir.model.access.csv create mode 100644 openapi/security/openapi_security.xml create mode 100644 openapi/security/res_users_token.xml create mode 100644 openapi/static/description/aws.png create mode 100644 openapi/static/description/dataiku.png create mode 100644 openapi/static/description/dots.jpg create mode 100644 openapi/static/description/icon.png create mode 100644 openapi/static/description/openapi-configuration-model.png create mode 100644 openapi/static/description/openapi-configuration-namespace.png create mode 100644 openapi/static/description/openapi-logs.png create mode 100644 openapi/static/description/powerbi.png create mode 100644 openapi/static/description/swagger-editor.png create mode 100644 openapi/static/description/syndesis.jpg create mode 100644 openapi/tests/__init__.py create mode 100644 openapi/tests/test_api.py create mode 100644 openapi/tests/test_json_spec.py create mode 100644 openapi/views/ir_model_view.xml create mode 100644 openapi/views/openapi_view.xml create mode 100644 openapi/views/res_users_view.xml diff --git a/base_api/README.rst b/base_api/README.rst new file mode 100644 index 00000000..68a33df6 --- /dev/null +++ b/base_api/README.rst @@ -0,0 +1,31 @@ +.. image:: https://itpp.dev/images/infinity-readme.png + :alt: Tested and maintained by IT Projects Labs + :target: https://itpp.dev + +.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png + :target: https://www.gnu.org/licenses/lgpl + :alt: License: LGPL-3 + +========== + Base Api +========== + +Module extends *base*-model in purpose of creating and quering objects. + +Questions? +========== + +To get an assistance on this module contact us by email :arrow_right: help@itpp.dev + +Further information +=================== + +Odoo Apps Store: https://apps.odoo.com/apps/modules/15.0/base_api/ + + +Notifications on updates: `via Atom +`__, +`by Email +`__ + +Tested on `Odoo 15.0 `_ diff --git a/base_api/__init__.py b/base_api/__init__.py new file mode 100644 index 00000000..b29fc4cc --- /dev/null +++ b/base_api/__init__.py @@ -0,0 +1,4 @@ +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html) + +from . import models +from . import lib diff --git a/base_api/__manifest__.py b/base_api/__manifest__.py new file mode 100644 index 00000000..5847d078 --- /dev/null +++ b/base_api/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2019 Anvar Kildebekov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). + +{ + "name": """Base API""", + "summary": """Basic function and methods of API for openapi or XML-RPC""", + "category": "Hidden", + "version": "1.0.1", + "application": False, + "author": "IT-Projects LLC, Anvar Kildebekov", + "support": "apps@itpp.dev", + "website": "https://apps.odoo.com/apps/modules/13.0/base_api/", + "license": "LGPL-3", + "depends": [], + "external_dependencies": {"python": [], "bin": []}, + "data": [], + "demo": [], + "qweb": [], + "post_load": None, + "pre_init_hook": None, + "post_init_hook": None, + "uninstall_hook": None, + "auto_install": False, + "installable": True, +} diff --git a/base_api/doc/changelog.rst b/base_api/doc/changelog.rst new file mode 100644 index 00000000..6e6b4720 --- /dev/null +++ b/base_api/doc/changelog.rst @@ -0,0 +1,8 @@ +`1.0.1` +------- +- **Improvement:** Compatibility with python 3.9 + +`1.0.0` +------- + +- **Init version** diff --git a/base_api/doc/index.rst b/base_api/doc/index.rst new file mode 100644 index 00000000..2af1d159 --- /dev/null +++ b/base_api/doc/index.rst @@ -0,0 +1,317 @@ +========== + Base Api +========== + +Usage +===== + +*Methods intended for calling via API (e.g. OpenAPI or RPC)*: + +search_or_create +---------------- + +*search_or_create(self, vals, active\_test=True)* + +*– Purpose*: + - To resolve “race conditions”, comparing to separated searching + and creation, that can lead to record-duplication. + +*– Input data*: + - `vals`-variable: + - fields-values as for *create*-method + - type of dictionary (not nested) + - e.g. + .. code-block:: + + vals = { + 'name': 'John', + 'Age': 25 + } + + - `active_test`-variable (for models that have field named `active`): + - flag to search only for *active* records + - type of *boolean* + - e.g. + .. code-block:: + +  active_test = False` # to also search in *in-active* records + +*– Notes*: + - *many2one* fields in `vals`: + - type of integer + - e.g. + .. code-block:: + + vals = { + 'company_id': 1 + } + + - *x2many* fields in `vals`: + - ignored for searching + - type of list of *tuples* + - e.g. + .. code-block:: + + vals = { + 'name': John', + 'children_ids': [(4,4,0), + (4,5,0)] + } + - For more information look `here `__ + +*– Example*: + +.. code-block:: + + -> # Searching for existing record + + -> vals = {'company_id': 1 } + + -> res_partner_object.search_or_create(vals) + + (False, [22, 1, 8, 7, 3]) + + -> # Creating record (with many2one field) + + -> vals = { 'name': 'John Doe Neo', 'company_id': 1 } + + -> res_partner_object.search_or_create(vals) + + (True, [78]) + + -> # Creating record (for x2many-fields) + + -> vals = { 'name': 'Albert Bubis', 'child_ids': [(4, 11, 0), (4, 5, 0)] } + + -> res_partner_object.search_or_create(vals) + + (True, [79]) + +*– Algorithm*: + +1. Creates *domain* out of `vals` for searching + +2. Searches for records satisfiy *domain* constraints (`is_new = False`) + +3. If no record was found: + - then it creates one with `vals` + - sets *True* to `is_new` + +4. Returns two variables: + - `is_new` - *boolean*: Shows if record was created or not + - `ids` - list of records, that were found, or id of created + one + +search_read_nested +------------------ + +*search_read_nested(self, domain=None, fields=None, offset=0, limit=None, order=None, delimeter='/')* + +*– Purpose*: + - Simplifies reading data to one request; + - Comparing to default **search\_read**: + - ``fields`` can be nested, so the method will return list of + record-dictionaries with nested fields from related models (via + *x2many*, *many2one*). Nested fields are specified as slash-separated + sequence, for example: + .. code-block:: + + fields = [ + 'company_id/id', + 'company_id/name' + ] + +*– Input data*: + - `domain`-variable: + - list of statements for searching, as for usual + *search*-method + - type of list of *tuples* + - e.g.  + .. code-block:: + + domain = [ + ('name', '=', 'John'), + ('Age','>','10') + ] + + - `fields`-variable: + - fields to be read from founded records (including nested + fields via dot-notation) + - list of *strings* + - e.g. if ``author_id``, ``edition_ids`` are many2one and many2many + fields, then the variable can be specified as following: + .. code-block:: + + fields = [ + 'book_name', + 'author_id/id', + 'author_id/name', + `edition_ids/id`, + `edition_ids/year` + ] + + - `offset`-variable: + - number of records to ignore + - type of *integer* + - e.g. ``offset = 2`` # will ignore two first-founded records + - `limit`-variable: + - number of founded records to show + - type of + - e.g. ``limit = 3`` # will show three first-founded records + - `order`-variable: + - criteria of sorting founded records + - type of *string* + - e.g. ``order = 'name desc'`` # will sort records descending by ‘name’ + - `count`-variable: + - flag to return number of founded records, instead of records + itself + - type of *boolean* + - e.g. ``count = True`` + - `delimeter`-variable: + - char that divide nesting in field + - type of *char* + - e.g. ``company_id/country_id/name # delimeter='/' + +*– Notes*: + - for *many2one* fields the method returns a dictionary with + nested fields + - for *x2many* fields the method returns list of + record-dictionaries with nested fields + +*– Example* + +.. code-block:: + + -> search_domain = [('company_id.category', '=', 'Supermarket')] + + -> show_fields = [ 'name', 'company_id/id', 'company_id/name', 'company_id/website', 'country_id/id', 'child_ids/name', 'child_ids/id' ] + + -> res_partner_object.search_read_nested(domain=search_domain, fields=show_fields, '.') + + [ + { + + 'name': 'Partner #1', + + 'company_id': { + 'id': 1, + 'name': 'Supermarket for me', + 'website': 'http://superfood.com' + }, + + 'country_id': { 'id':102' }, + + 'child_ids': [ + { + 'id': 1, + 'name': Child #1, + }, { + 'id': 2, + 'name': Child #2, + } + ] + + }, + + ..., + + { + + 'name': 'Partner #37', + + 'company_id': { + 'id': 25, + 'name': 'Supermarket in Eternity', + 'website': 'http://giantbroccoly.com' + }, + + 'country_id': { 'id': 103 } + + 'child_ids': [] + + } + ] + + +*– Algorithm*: + 1. Searches for records that satisfy `domain` + + 2. Returns list of dictionaries with fields specified in `fields` + +create_or_update_by_external_id +------------------------------- + +*create_or_update_by_external_id(self, vals)* + +*– Purpose*: + - work with model (create or update values) by custom (external) + identification + +*– Input data*: + - `vals`-variable: + - type of *dictionary* as for *create*-method + - Must contain `id` field type of *string* + - e.g. + .. code-block:: + +  vals = { + 'id': 'ext.id_1', + 'name: 'John', + 'age': 37, + 'job_id': 'ext.work_1', + 'child_ids' : [ + (4, 'ext.child_1', 0), + (4, 'ext.child_2', 0) + ] + }` + +*– Notes*: + - for *x2x*-fields `id` might be *string* (external id) + + - for *x2many*-fields use *tuples* `this `__, + + - If `id` of *x2x* fields are not found, it will return error + (*raise Exception*). In order to avoid this, call the function + for the models of this fields + + - Work of function based on *External Identifiers* (**ir.model.data** ) + +*– Example* + +.. code-block:: + + -> # Create non-existed record + + -> vals = { + 'id': 'ext.id_5', + 'name': 'John', + 'customer_id': 'ext.id_3', + 'child_ids': [(4, 'ext.id_child_5, 0), (4, 5, 0)] + } + + -> sale_order_object.create_or_update_by_external_id(vals) + + (True, 38) + + -> # Update existing record + + -> vals = { + 'id': 'ext.id_5', + 'customer_id': 'ext.id_5', + 'child_ids': [(4, 'ext.id_child_4', 0)] + } + + -> sale_order_object.create_or_update_by_external_id(vals) + + (False, 38) + +*– Algorithm*: + - Searches for record by its external id (`id` in `vals`) through + *self.env.ref*-function + - If no record was found: + - then it creates one with requested values (`vals`) + - register `id` of `vals` in **ir.model.data** + - sets *True* to `is_new` + - Returns two variables: + - `is_new` - *True* or *False*: if record was created or not + - `id` (inner) of updated or created record diff --git a/base_api/i18n/fr.po b/base_api/i18n/fr.po new file mode 100644 index 00000000..9c7dc5d0 --- /dev/null +++ b/base_api/i18n/fr.po @@ -0,0 +1,28 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_api +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-09-15 18:11+0000\n" +"PO-Revision-Date: 2022-09-15 20:28+0200\n" +"Last-Translator: \n" +"Language-Team: Alpis Traduction et Interprétation \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"X-Generator: Poedit 2.0.4\n" + +#. module: base_api +#: model:ir.model,name:base_api.model_base +msgid "Base" +msgstr "Base" + +#. module: base_api +#: code:addons/base_api/lib/pinguin.py:0 +#, python-format +msgid "The model \"%s\" has no such field: \"%s\"." +msgstr "Le modèle \"%s\" n'a pas ce champ : \"%s\"." diff --git a/base_api/lib/__init__.py b/base_api/lib/__init__.py new file mode 100644 index 00000000..247b1360 --- /dev/null +++ b/base_api/lib/__init__.py @@ -0,0 +1 @@ +from . import pinguin diff --git a/base_api/lib/pinguin.py b/base_api/lib/pinguin.py new file mode 100644 index 00000000..3dacbb54 --- /dev/null +++ b/base_api/lib/pinguin.py @@ -0,0 +1,355 @@ +# Copyright 2018, XOE Solutions +# Copyright 2018-2019 Rafis Bikbov +# Copyright 2019 Yan Chirino +# Copyright 2019-2020 Anvar Kildebekov +# Copyright 2020 Ivan Yelizariev +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +# pyling: disable=redefined-builtin + + +import collections +import collections.abc +import datetime + +import six +import werkzeug.wrappers +from psycopg2.extensions import ISOLATION_LEVEL_READ_COMMITTED + +import odoo +from odoo.http import request + +try: + import simplejson as json +except ImportError: + import json + + +# 4xx Client Errors +CODE__obj_not_found = ( + 404, + "Object not found", + "This object is not available on this instance.", +) +# 5xx Server errors +CODE__invalid_spec = ( + 501, + "Invalid Field Spec", + "The field spec supplied is not valid.", +) + + +def error_response(status, error, error_descrip): + """Error responses wrapper. + :param int status: The error code. + :param str error: The error summary. + :param str error_descrip: The error description. + :returns: The werkzeug `response object`_. + :rtype: werkzeug.wrappers.Response + .. _response object: + http://werkzeug.pocoo.org/docs/0.14/wrappers/#module-werkzeug.wrappers + """ + return werkzeug.wrappers.Response( + status=status, + content_type="application/json; charset=utf-8", + response=json.dumps({"error": error, "error_descrip": error_descrip}), + ) + + +def validate_extra_field(field): + """Validates extra fields on the fly. + :param str field: The name of the field. + :returns: None, if validated, otherwise raises. + :rtype: None + :raise: werkzeug.exceptions.HTTPException if field is invalid. + """ + if not isinstance(field, str): + return werkzeug.exceptions.HTTPException( + response=error_response(*CODE__invalid_spec) + ) + + +def validate_spec(model, spec): + """Validates a spec for a given model. + :param object model: (:obj:`Model`) The model against which to validate. + :param list spec: The spec to validate. + :returns: None, if validated, otherwise raises. + :rtype: None + :raise: Exception: + * if the tuple representing the field does not have length 2. + * if the second part of the tuple representing the field is not a list or tuple. + * if if a tuple representing a field consists of two parts, but the first part is not a relative field. + * if if the second part of the tuple representing the field is of type tuple, but the field is the ratio 2many. + * if if the field is neither a string nor a tuple. + """ + self = model + for field in spec: + if isinstance(field, tuple): + # Syntax checks + if len(field) != 2: + raise Exception( + "Tuples representing fields must have length 2. (%r)" % field + ) + if not isinstance(field[1], (tuple, list)): + raise Exception( + """Tuples representing fields must have a tuple wrapped in + a list or a bare tuple as it's second item. (%r)""" + % field + ) + # Validity checks + fld = self._fields[field[0]] + if not fld.relational: + raise Exception( + "Tuples representing fields can only specify relational fields. (%r)" + % field + ) + if isinstance(field[1], tuple) and fld.type in ["one2many", "many2many"]: + raise Exception( + "Specification of a 2many record cannot be a bare tuple. (%r)" + % field + ) + elif not isinstance(field, six.string_types): + raise Exception( + "Fields are represented by either a strings or tuples. Found: %r" + % type(field) + ) + + +def update(d, u): + """Update value of a nested dictionary of varying depth. + :param dict d: Dictionary to update. + :param dict u: Dictionary with updates. + :returns: Merged dictionary. + :rtype: dict + """ + for k, v in u.items(): + if isinstance(v, collections.abc.Mapping): + d[k] = update(d.get(k, collections.OrderedDict([])), v) + else: + d[k] = v + return d + + +# Transform string fields to dictionary +def transform_strfields_to_dict(fields_list, delim="/"): + """Transform string fields to dictionary. + Example: + for ['name', 'email', 'bank_ids/bank_id/id', 'bank_ids/bank_name', 'bank_ids/id'] + the result will be the next dictionary + { + 'name': None, + 'email': None + 'bank_ids': { + 'bank_name': None, + 'bank_id': { + 'id': None + } + }, + } + :param list fields_list: The list of string fields. + :returns: The dict of transformed fields. + :rtype: dict + """ + dct = {} + for field in fields_list: + parts = field.split(delim) + data = None + for part in parts[::-1]: + if part == ".id": + part = "id" + data = {part: data} + update(dct, data) + return dct + + +def transform_dictfields_to_list_of_tuples(record, dct, ENV=False): + """Transform fields dictionary to list. + for { + 'name': None, + 'email': None + 'bank_ids': { + 'bank_name': None, + 'bank_id': { + 'id': None + } + }, + } + the result will be + ['name', 'email', ('bank_ids', ['bank_name', ('bank_id', ('id',))])] + :param odoo.models.Model record: The model object. + :param dict dct: The dictionary. + :returns: The list of transformed fields. + :rtype: list + """ + fields_with_meta = { + k: meta for k, meta in record.fields_get().items() if k in dct.keys() + } + result = {} + for key, value in dct.items(): + if isinstance(value, dict): + model_obj = get_model_for_read(fields_with_meta[key]["relation"], ENV) + inner_result = transform_dictfields_to_list_of_tuples(model_obj, value, ENV) + is_2many = fields_with_meta[key]["type"].endswith("2many") + result[key] = list(inner_result) if is_2many else tuple(inner_result) + else: + result[key] = value + return [(key, value) if value else key for key, value in result.items()] + + +####################### +# Pinguin ORM Wrapper # +####################### + + +# List of dicts from model +def get_dictlist_from_model(model, spec, **kwargs): + """Fetch dictionary from one record according to spec. + :param str model: The model against which to validate. + :param tuple spec: The spec to validate. + :param dict kwargs: Keyword arguments. + :param list kwargs['domain']: (optional). The domain to filter on. + :param int kwargs['offset']: (optional). The offset of the queried records. + :param int kwargs['limit']: (optional). The limit to query. + :param str kwargs['order']: (optional). The postgres order string. + :param tuple kwargs['include_fields']: (optional). The extra fields. + This parameter is not implemented on higher level code in order + to serve as a soft ACL implementation on top of the framework's + own ACL. + :param tuple kwargs['exclude_fields']: (optional). The excluded fields. + :param char kwargs['delimeter']: delimeter of nested fields. + :param object kwargs['env']: Model's environment. + :returns: The list of python dictionaries of the requested values. + :rtype: list + """ + domain = kwargs.get("domain", []) + offset = kwargs.get("offset", 0) + limit = kwargs.get("limit") + order = kwargs.get("order") + include_fields = kwargs.get( + "include_fields", () + ) # Not actually implemented on higher level (ACL!) + exclude_fields = kwargs.get("exclude_fields", ()) + delim = kwargs.get("delimeter", "/") + ENV = kwargs.get("env", False) + + model_obj = get_model_for_read(model, ENV) + + records = model_obj.sudo().search(domain, offset=offset, limit=limit, order=order) + + # Do some optimization for subfields + _prefetch = {} + for field in spec: + if isinstance(field, str): + continue + _fld = records._fields[field[0]] + if _fld.relational: + _prefetch[_fld.comodel] = records.mapped(field[0]).ids + + for mod, ids in _prefetch.items(): + get_model_for_read(mod, ENV).browse(ids).read() + + result = [] + for record in records: + result += [ + get_dict_from_record( + record, spec, include_fields, exclude_fields, ENV, delim + ) + ] + + return result + + +# Get a model with special context +def get_model_for_read(model, ENV=False): + """Fetch a model object from the environment optimized for read. + Postgres serialization levels are changed to allow parallel read queries. + To increase the overall efficiency, as it is unlikely this API will be used + as a mass transactional interface. Rather we assume sequential and structured + integration workflows. + :param str model: The model to retrieve from the environment. + :param object env: Environment + :returns: the framework model if exist, otherwise raises. + :rtype: odoo.models.Model + :raise: werkzeug.exceptions.HTTPException if the model not found in env. + """ + if ENV: + return ENV[model] + cr, uid = request.cr, request.session.uid + test_mode = request.registry.test_cr + if not test_mode: + # Permit parallel query execution on read + # Contrary to ISOLATION_LEVEL_SERIALIZABLE as per Odoo Standard + cr._cnx.set_isolation_level(ISOLATION_LEVEL_READ_COMMITTED) + try: + return request.env(cr, uid)[model] + except KeyError as e: + err = list(CODE__obj_not_found) + err[2] = 'The "%s" model is not available on this instance.' % model + raise werkzeug.exceptions.HTTPException(response=error_response(*err)) from e + + +# Python > 3.5 +# def get_dict_from_record(record, spec: tuple, include_fields: tuple, exclude_fields: tuple): + +# Extract nested values from a record +def get_dict_from_record( + record, spec, include_fields, exclude_fields, ENV=False, delim="/" +): + """Generates nested python dict representing one record. + Going down to the record level, as the framework does not support nested + data queries natively as they are typical for a REST API. + :param odoo.models.Model record: The singleton record to load. + :param tuple spec: The field spec to load. + :param tuple include_fields: The extra fields. + :param tuple exclude_fields: The excluded fields. + :returns: The python dictionary representing the record according to the field spec. + :rtype collections.OrderedDict + """ + map(validate_extra_field, include_fields + exclude_fields) + result = collections.OrderedDict([]) + _spec = [fld for fld in spec if fld not in exclude_fields] + list(include_fields) + if list(filter(lambda x: isinstance(x, six.string_types) and delim in x, _spec)): + _spec = transform_dictfields_to_list_of_tuples( + record, transform_strfields_to_dict(_spec, delim), ENV + ) + validate_spec(record, _spec) + + for field in _spec: + + if isinstance(field, tuple): + # It's a 2many (or a 2one specified as a list) + if isinstance(field[1], list): + result[field[0]] = [] + for rec in record[field[0]]: + result[field[0]] += [ + get_dict_from_record(rec, field[1], (), (), ENV, delim) + ] + # It's a 2one + if isinstance(field[1], tuple): + result[field[0]] = get_dict_from_record( + record[field[0]], field[1], (), (), ENV, delim + ) + # Normal field, or unspecified relational + elif isinstance(field, six.string_types): + if not hasattr(record, field): + raise odoo.exceptions.ValidationError( + odoo._('The model "%s" has no such field: "%s".') + % (record._name, field) + ) + + # result[field] = getattr(record, field) + if isinstance(record[field], datetime.date): + value = record[field].strftime("%Y-%m-%d %H:%M:%S") + else: + value = record[field] + + result[field] = value + fld = record._fields[field] + if fld.relational: + if fld.type.endswith("2one"): + result[field] = value.id + elif fld.type.endswith("2many"): + result[field] = value.ids + elif (value is False or value is None) and fld.type != "boolean": + # string field cannot be false in response json + result[field] = "" + return result diff --git a/base_api/models/__init__.py b/base_api/models/__init__.py new file mode 100644 index 00000000..b1711c2b --- /dev/null +++ b/base_api/models/__init__.py @@ -0,0 +1,3 @@ +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html) + +from . import base diff --git a/base_api/models/base.py b/base_api/models/base.py new file mode 100644 index 00000000..0fbad50e --- /dev/null +++ b/base_api/models/base.py @@ -0,0 +1,105 @@ +# Copyright 2019,2022 Ivan Yelizariev +# Copyright 2019 Anvar Kildebekov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). + +from odoo import api, models + +from ..lib import pinguin + +PREFIX = "__base_api__" + + +class Base(models.AbstractModel): + _inherit = "base" + + @api.model + def search_or_create(self, vals, active_test=True): + domain = [ + (k, "=", v) + for k, v in vals.items() + if not self._fields.get(k).type.endswith("2many") + ] + records = self.with_context(active_test=active_test).search(domain) + is_new = False + if not records: + is_new = True + records = self.create(vals) + return (is_new, records.ids) + + @api.model + def search_read_nested( + self, domain=None, fields=None, offset=0, limit=None, order=None, delimeter="/" + ): + result = pinguin.get_dictlist_from_model( + self._name, + tuple(fields), + domain=domain, + offset=offset, + limit=limit, + order=order, + env=self.env, + delimeter=delimeter, + ) + return result + + @api.model + def create_or_update_by_external_id(self, vals): + ext_id = vals.get("id") + is_new = False + imd_env = self.env["ir.model.data"] + # if external id not defined + if not isinstance(ext_id, str): + raise ValueError('"id" field must be type of "string"') + # if x2x fields values are exist + fields_2many = [] + + def convert_external_2_inner_id(ext_id, field): + try: + result = imd_env._xmlid_lookup(PREFIX + "." + ext_id)[1] + except ValueError as e: + raise ValueError( + "No object with external id in field {}: {}".format(field, ext_id) + ) from e + return result + + for field in vals: + # for many2one fields + if self._fields[field].type == "many2one" and isinstance(vals[field], str): + vals[field] = convert_external_2_inner_id(vals.get(field), field) + elif self._fields[field].type.endswith("2many"): + fields_2many.append(field) + + # for x2many fields + for field in fields_2many: + for index, tuple_record in enumerate(vals[field]): + list_record = list(tuple_record) + if list_record[0] in [1, 2, 3, 4] and isinstance(list_record[1], str): + list_record[1] = convert_external_2_inner_id(list_record[1], field) + elif list_record[0] == 6: + for record_for_replace in list_record[2]: + if isinstance(record_for_replace, str): + record_for_replace = convert_external_2_inner_id( + record_for_replace, field + ) + vals[field][index] = tuple(list_record) + + # If external id exists... + try: + inner_id = imd_env._xmlid_lookup(PREFIX + "." + ext_id)[1] + # No: Create record and register external_key + except ValueError: + is_new = True + inner_id = self.create(vals).id + imd_env.create( + { + "name": vals.get("id"), + "model": self._name, + "module": PREFIX, + "res_id": inner_id, + } + ) + else: + # Yes: Write changes to record + self.browse(inner_id).write(vals) + + return (is_new, inner_id) diff --git a/base_api/static/description/icon.png b/base_api/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b43a0a135f903a4c0c401f03a8690fbbd021a2ab GIT binary patch literal 3035 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 +# Copyright 2019 Anvar Kildebekov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +from odoo.tests import tagged +from odoo.tests.common import TransactionCase + +prefix = "__base_api__." + + +@tagged("-at_install", "post_install") +class TestBase(TransactionCase): + def test_search_or_create(self): + # define test variables + partner_obj = self.env["res.partner"] + company_obj = self.env["res.company"] + t_name = "test_search_or_create" + # + # Test #1: Record creation + # + t_vals = {"name": t_name} + partner_obj.search([("name", "=", t_name)]).unlink() + is_new, record_ids = partner_obj.search_or_create(t_vals) + record = partner_obj.browse(record_ids) + # (1) record was created + # (2) record have field's value that was requested + self.assertTrue(is_new) + self.assertEqual(record.name, t_name) + # + # Test #2: Record searching + # + is_new, record_ids2 = partner_obj.search_or_create(t_vals) + record = partner_obj.browse(record_ids2) + # (1) record have been founded (not created) + # (2) this the same record as in the Test #1 + self.assertFalse(is_new) + self.assertEqual(record_ids[0], record_ids2[0]) + # + # Test #3: Record creation (x2x fields) + # + t_child_1 = partner_obj.create({"name": "TestChild1"}) + t_child_2 = partner_obj.create({"name": "TestChild2"}) + t_company = company_obj.create({"name": "TestCompany"}) + t_vals = { + "name": "TestParent", + "child_ids": [(4, t_child_1.id, 0), (4, t_child_2.id, 0)], + "company_id": t_company.id, + } + is_new, record_ids3 = partner_obj.search_or_create(t_vals) + record = partner_obj.browse(record_ids3) + # (1) record was created + # (2) record have x2x field's values that were requested? + self.assertTrue(is_new) + self.assertEqual([t_child_1.id, t_child_2.id], record.child_ids.ids) + self.assertEqual(record.company_id.id, t_company.id) + # + # Test #4: Record searching (x2many fields are ignored) + # + is_new, record_ids4 = partner_obj.search_or_create(t_vals) + # (1) record have been founded (not created) + # (2) this is the same record as in the Test #3 + self.assertFalse(is_new) + self.assertEqual(record_ids3[0], record_ids4[0]) + + def test_search_read_nested(self): + # Define test variables + partner_obj = self.env["res.partner"] + country_obj = self.env["res.country"] + company_obj = self.env["res.company"] + category_obj = self.env["res.partner.category"] + t_country_1 = country_obj.create({"name": "TestCountry1", "code": "xxx"}) + t_country_2 = country_obj.create({"name": "TestCountry2", "code": "yyy"}) + t_company_1 = company_obj.create( + {"name": "TestCompany1", "country_id": t_country_1.id} + ) + t_company_2 = company_obj.create( + {"name": "TestCompany2", "country_id": t_country_2.id} + ) + t_category_1 = category_obj.create({"name": "TestCategory1"}) + t_category_2 = category_obj.create({"name": "TestCategory2"}) + t_category_3 = category_obj.create({"name": "TestCategory3"}) + t_category_4 = category_obj.create({"name": "TestCategory4"}) + t_partner_1 = partner_obj.create( + { + "name": "TestPartner1", + "company_id": t_company_1.id, + "category_id": [(4, t_category_1.id, 0), (4, t_category_2.id, 0)], + "street": "TestStreet", + } + ) + t_partner_2 = partner_obj.create( + { + "name": "TestPartner2", + "company_id": t_company_2.id, + "category_id": [(4, t_category_3.id, 0), (4, t_category_4.id, 0)], + "street": "TestStreet", + } + ) + correct_result = [ + { + "name": t_partner_1.name, + "category_id": [ + {"id": t_category_1.id, "name": t_category_1.name}, + {"id": t_category_2.id, "name": t_category_2.name}, + ], + "company_id": { + "id": t_company_1.id, + "name": t_company_1.name, + "country_id": {"id": t_country_1.id, "name": t_country_1.name}, + }, + }, + { + "name": t_partner_2.name, + "category_id": [ + {"id": t_category_3.id, "name": t_category_3.name}, + {"id": t_category_4.id, "name": t_category_4.name}, + ], + "company_id": { + "id": t_company_2.id, + "name": t_company_2.name, + "country_id": {"id": t_country_2.id, "name": t_country_2.name}, + }, + }, + ] + # + # Test 1: Record searching-reading + # + search_domain = [("street", "=", "TestStreet")] + show_fields = [ + "name", + "category_id.id", + "category_id.name", + "company_id.id", + "company_id.name", + "company_id.country_id.name", + "company_id.country_id.id", + ] + delimeter = "." + record_list = partner_obj.search_read_nested( + domain=search_domain, fields=show_fields, delimeter=delimeter + ) + # (1) records has requested values + self.assertEqual(correct_result, record_list) + + def test_create_or_update_by_external_id(self): + partner_obj = self.env["res.partner"] + company_obj = self.env["res.company"] + t_company_ext_id = "ext.company_1" + t_child_1_ext_id = "ext.child_1" + t_child_2_ext_id = "ext.child_2" + # + # Test #0: Check correct creation of external id + # + t_company = company_obj.browse( + company_obj.create_or_update_by_external_id( + {"id": t_company_ext_id, "name": "TestCompany"} + )[1] + ) + t_child_1 = partner_obj.browse( + partner_obj.create_or_update_by_external_id( + {"id": t_child_1_ext_id, "name": "TestChild1"} + )[1] + ) + t_child_2 = partner_obj.browse( + partner_obj.create_or_update_by_external_id( + {"id": t_child_2_ext_id, "name": "TestChild2"} + )[1] + ) + # (1) Check field value (correctness of creation) + # (2) Check field value (correctness of creation) + # (3) Check field value (correctness of creation) + self.assertEqual( + t_company.get_external_id()[t_company.id].split(".", 1)[1], t_company_ext_id + ) + self.assertEqual( + t_child_1.get_external_id()[t_child_1.id].split(".", 1)[1], t_child_1_ext_id + ) + self.assertEqual( + t_child_2.get_external_id()[t_child_2.id].split(".", 1)[1], t_child_2_ext_id + ) + # + # Test #1: Error : "External ID not defined" + # + t_vals = { + "name": "John", + "child_ids": [(4, t_child_1_ext_id, 0), (4, t_child_2_ext_id, 0)], + "company_id": t_company_ext_id, + } + with self.assertRaises(ValueError): + partner_obj.create_or_update_by_external_id(t_vals) + # + # Test #2: Record creation + # + t_vals["id"] = "ext.partner_1" + is_new, record_id2 = partner_obj.create_or_update_by_external_id(t_vals) + record = partner_obj.browse(record_id2) + # (1) record was created + # (2) record have requested external id + # (3) record have one2many-field's value that was requested + # (4) record have many2one-field's value that was requested + self.assertTrue(is_new) + self.assertEqual(record.get_external_id()[record.id], prefix + "ext.partner_1") + self.assertEqual(record.child_ids.ids, [t_child_1.id, t_child_2.id]) + self.assertEqual(record.company_id, t_company) + # + # Test #3: Record update + # + t_vals = {"id": "ext.partner_1", "child_ids": [(3, t_child_2_ext_id, 0)]} + is_new, record_id3 = partner_obj.create_or_update_by_external_id(t_vals) + record = partner_obj.browse(record_id3) + # (1) record was updated + # (2) this is the same record (by id) that was created in Test#1 + # (3) record have one2many field's value that was requested + self.assertFalse(is_new) + self.assertEqual(record_id2, record_id3) + self.assertEqual(record.child_ids.ids, [t_child_1.id]) diff --git a/openapi/README.rst b/openapi/README.rst new file mode 100644 index 00000000..10b339ee --- /dev/null +++ b/openapi/README.rst @@ -0,0 +1,79 @@ +.. image:: https://itpp.dev/images/infinity-readme.png + :alt: Tested and maintained by IT Projects Labs + :target: https://itpp.dev + +.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png + :target: https://www.gnu.org/licenses/lgpl + :alt: License: LGPL-3 + +========================== + REST API/OpenAPI/Swagger +========================== + +Set up REST API and export OpenAPI (Swagger) specification file for integration +with whatever system you need. All can be configured in Odoo UI, no extra module +is needed. + +This module implements a ``/api/v1/`` route tree. + +Authentication +============== + +* Database inference: Database name encoded and appended to the token +* User authentication through the actual token + +As a workaround for multi-db Odoo instances, system uses `Basic Authentication `__ with +``db_name:token`` credentials, where ``token`` is a new field in ``res.users`` +model. That is, whenever you see Username / Password to setup OpenAPI +connection, use Database Name / OpenAPI toekn accordingly. + +Roadmap +======= + +* TODO: Rewrite tests to replace dependency ``mail`` to ``web`` module. +* TODO: Add a button to developer menu to grant access to current model + + * `Activate Developer Mode `__ + * Open the developer tools drop down + * Click menu ``Configure REST API`` located within the dropdown + * On the form that opens, activate and configure this module for REST API accessability. + * Click ``[Apply]`` + +* TODO: when user is not authenticated api returns 200 with the message below, instead of designed 401 + + :: + + File "/opt/odoo/vendor/it-projects-llc/sync-addons/openapi/controllers/pinguin.py", line 152, in authenticate_token_for_user + raise werkzeug.exceptions.HTTPException(response=error_response(*CODE__no_user_auth)) + HTTPException: ??? Unknown Error: None + +* TODO: ``wrap__resource__create_one`` method makes ``cr.commit()``. We need to avoid that. +* TODO: add code examples for other programming languages in index.html. The examples can be based on generated swagger clients. The idea of the scripts must be the same as for python (search for partner, create if it doesn't exist, send message) +* TODO: use sudo for log creating and disable write access rights +* TODO: finish unitttests (see ``test_api.py``) +* TODO: ``.../swagger.json`` url doesn't work in multi-db mode in odoo 12.0 at least: it make strange redirection to from ``/api/v1/demo/swagger.json?token=demo_token&db=source`` to ``/api/v1/demo/swagger.json?token%3Ddemo_token%26db%3Dsource`` +* TODO: remove access to create logs and use sudo (SUPERUSER_ID) instead. It prevents making fake logs by malicous user +* TODO: Check that swagger specification and module documentaiton covers how to pass context to method calls + +Questions? +========== + +To get an assistance on this module contact us by email :arrow_right: help@itpp.dev + +Contributors +============ +* `David Arnold `__ +* `Ivan Yelizariev `__ +* `Rafis Bikbov `__ +* `Stanislav Krotov `__ + +* `XOE Solutions `__ + +=================== + +Odoo Apps Store: https://apps.odoo.com/apps/modules/15.0/openapi/ + + +Notifications on updates: `via Atom `_, `by Email `_ + +Tested on `Odoo 15.0 `_ diff --git a/openapi/__init__.py b/openapi/__init__.py new file mode 100644 index 00000000..95b5a60d --- /dev/null +++ b/openapi/__init__.py @@ -0,0 +1,8 @@ +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + + +def post_load(): + # make import in post_load to avoid applying monkey patches when this + # module is not installed + from . import models + from . import controllers diff --git a/openapi/__manifest__.py b/openapi/__manifest__.py new file mode 100644 index 00000000..e9bb9550 --- /dev/null +++ b/openapi/__manifest__.py @@ -0,0 +1,35 @@ +# Copyright 2018-2019,2022 Ivan Yelizariev +# Copyright 2021 Denis Mudarisov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +{ + "name": """REST API/OpenAPI/Swagger""", + "summary": """RESTful API to integrate Odoo with whatever system you need""", + "category": "", + "images": ["images/openapi-swagger.png"], + "version": "1.2.4", + "application": False, + "author": "IT-Projects LLC, Ivan Yelizariev", + "support": "help@itpp.dev", + "website": "https://t.me/sync_studio", + "license": "LGPL-3", + "depends": ["base_api", "mail"], + "external_dependencies": { + "python": ["bravado_core", "swagger_spec_validator", "jsonschema<4"], + "bin": [], + }, + "data": [ + "security/openapi_security.xml", + "security/ir.model.access.csv", + "security/res_users_token.xml", + "views/openapi_view.xml", + "views/res_users_view.xml", + "views/ir_model_view.xml", + ], + "demo": ["demo/openapi_demo.xml", "demo/openapi_security_demo.xml"], + "post_load": "post_load", + "pre_init_hook": None, + "post_init_hook": None, + "uninstall_hook": None, + "auto_install": False, + "installable": True, +} diff --git a/openapi/controllers/__init__.py b/openapi/controllers/__init__.py new file mode 100644 index 00000000..6bafd309 --- /dev/null +++ b/openapi/controllers/__init__.py @@ -0,0 +1,5 @@ +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from . import main +from . import api +from . import pinguin diff --git a/openapi/controllers/api.py b/openapi/controllers/api.py new file mode 100644 index 00000000..efb45165 --- /dev/null +++ b/openapi/controllers/api.py @@ -0,0 +1,227 @@ +# Copyright 2018, XOE Solutions +# Copyright 2019,2022 Ivan Yelizariev +# Copyright 2018 Rafis Bikbov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +# pylint: disable=redefined-builtin +import logging + +from odoo import http +from odoo.http import request + +from . import pinguin + +_logger = logging.getLogger(__name__) + +################################################################# +# Odoo REST API # +# Version 1 # +# --------------------------------------------------------------# +# The current api version is considered stable, although # +# the exposed models and methods change as they are configured # +# on the database level. Only if significant changes in the api # +# generation logic should be implemented in the future # +# a version bump should be considered. # +################################################################# + +API_ENDPOINT = "/api" +API_ENDPOINT_V1 = "/v1" +# API_ENDPOINT_V2 = '/v2' + +# We patch the route decorator in pinguin.py +# with authentication and DB inference logic. +# We also check if the model is installed in the database. +# Furthermore we check if api version is supported. +# This keeps the code below minial and readable. + + +class ApiV1Controller(http.Controller): + """Implements the REST API V1 endpoint. + .. methods: + + CRUD Methods: + - `POST .../` -> `CreateOne` + - `PUT ...//` -> `UpdateOne` + - `GET .../` -> `ReadMulti` + - `GET ...//` -> `ReadOne` + - `DELETE ...//` -> `UnlinkOne` + + Auxiliary Methods: + - `PATCH ...///` -> `Call Method on Singleton Record` + - `PATCH ...//` -> `Call Method on RecordSet` + - `GET .../report/pdf/` -> `Get Report as PDF` + - `GET .../report/html/` -> `Get Report as HTML` + """ + + _api_endpoint = API_ENDPOINT + API_ENDPOINT_V1 + _api_endpoint = _api_endpoint + "/" + # CreateOne # ReadMulti + _api_endpoint_model = _api_endpoint + "/" + # ReadOne # UpdateOne # UnlinkOne + _api_endpoint_model_id = _api_endpoint + "//" + # Call Method on Singleton Record + _api_endpoint_model_id_method = ( + _api_endpoint + "///call/" + ) + # Call Method on RecordSet + _api_endpoint_model_method = _api_endpoint + "//call/" + _api_endpoint_model_method_ids = _api_endpoint + "//call//" + # Get Reports + _api_report_docids = ( + _api_endpoint + + "/report///" + ) + + # ################# + # # CRUD Methods ## + # ################# + + # CreateOne + @http.route( + _api_endpoint_model, methods=["POST"], type="http", auth="none", csrf=False + ) + @pinguin.route + def create_one__POST(self, namespace, model): + data = request.get_json_data() + conf = pinguin.get_model_openapi_access(namespace, model) + pinguin.method_is_allowed( + "api_create", conf["method"], main=True, raise_exception=True + ) + # FIXME: What is contained in context and for what? + # # If context is not a python dict + # # TODO unwrap + # if isinstance(kw.get('context'), basestring): + # context = get_create_context(namespace, model, kw.get('context')) + # else: + # context = kw.get('context') or {} + return pinguin.wrap__resource__create_one( + modelname=model, + context=conf["context"], + data=data, + success_code=pinguin.CODE__created, + out_fields=conf["out_fields_read_one"], + ) + + # ReadMulti (optional: filters, offset, limit, order, include_fields, exclude_fields): + @http.route( + _api_endpoint_model, methods=["GET"], type="http", auth="none", csrf=False + ) + @pinguin.route + def read_multi__GET(self, namespace, model, **kw): + print("read_multi__GET - " * 10) + conf = pinguin.get_model_openapi_access(namespace, model) + pinguin.method_is_allowed( + "api_read", conf["method"], main=True, raise_exception=True + ) + return pinguin.wrap__resource__read_all( + modelname=model, + success_code=pinguin.CODE__success, + out_fields=conf["out_fields_read_multi"], + ) + + # ReadOne (optional: include_fields, exclude_fields) + @http.route( + _api_endpoint_model_id, methods=["GET"], type="http", auth="none", csrf=False + ) + @pinguin.route + def read_one__GET(self, namespace, model, id, **kw): + conf = pinguin.get_model_openapi_access(namespace, model) + pinguin.method_is_allowed( + "api_read", conf["method"], main=True, raise_exception=True + ) + return pinguin.wrap__resource__read_one( + modelname=model, + id=id, + success_code=pinguin.CODE__success, + out_fields=conf["out_fields_read_one"], + ) + + # UpdateOne + @http.route( + _api_endpoint_model_id, methods=["PUT"], type="http", auth="none", csrf=False + ) + @pinguin.route + def update_one__PUT(self, namespace, model, id): + data = request.get_json_data() + conf = pinguin.get_model_openapi_access(namespace, model) + pinguin.method_is_allowed( + "api_update", conf["method"], main=True, raise_exception=True + ) + return pinguin.wrap__resource__update_one( + modelname=model, id=id, success_code=pinguin.CODE__ok_no_content, data=data + ) + + # UnlinkOne + @http.route( + _api_endpoint_model_id, methods=["DELETE"], type="http", auth="none", csrf=False + ) + @pinguin.route + def unlink_one__DELETE(self, namespace, model, id): + conf = pinguin.get_model_openapi_access(namespace, model) + pinguin.method_is_allowed( + "api_delete", conf["method"], main=True, raise_exception=True + ) + return pinguin.wrap__resource__unlink_one( + modelname=model, id=id, success_code=pinguin.CODE__ok_no_content + ) + + # ###################### + # # Auxiliary Methods ## + # ###################### + + # Call Method on Singleton Record (optional: method parameters) + @http.route( + _api_endpoint_model_id_method, + methods=["PATCH"], + type="http", + auth="none", + csrf=False, + ) + @pinguin.route + def call_method_one__PATCH(self, namespace, model, id, method_name): + method_params = request.get_json_data() + conf = pinguin.get_model_openapi_access(namespace, model) + pinguin.method_is_allowed(method_name, conf["method"]) + return pinguin.wrap__resource__call_method( + modelname=model, + ids=[id], + method=method_name, + method_params=method_params, + success_code=pinguin.CODE__success, + ) + + # Call Method on RecordSet (optional: method parameters) + @http.route( + [_api_endpoint_model_method, _api_endpoint_model_method_ids], + methods=["PATCH"], + type="http", + auth="none", + csrf=False, + ) + @pinguin.route + def call_method_multi__PATCH(self, namespace, model, method_name, ids=None): + method_params = request.get_json_data() + conf = pinguin.get_model_openapi_access(namespace, model) + pinguin.method_is_allowed(method_name, conf["method"]) + ids = ids and ids.split(",") or [] + ids = [int(i) for i in ids] + return pinguin.wrap__resource__call_method( + modelname=model, + ids=ids, + method=method_name, + method_params=method_params, + success_code=pinguin.CODE__success, + ) + + # Get Report + @http.route( + _api_report_docids, methods=["GET"], type="http", auth="none", csrf=False + ) + @pinguin.route + def report__GET(self, converter, namespace, report_external_id, docids): + return pinguin.wrap__resource__get_report( + namespace=namespace, + report_external_id=report_external_id, + docids=docids, + converter=converter, + success_code=pinguin.CODE__success, + ) diff --git a/openapi/controllers/main.py b/openapi/controllers/main.py new file mode 100644 index 00000000..fc6aa671 --- /dev/null +++ b/openapi/controllers/main.py @@ -0,0 +1,51 @@ +# Copyright 2018 Ivan Yelizariev +# Copyright 2018 Rafis Bikbov +# Copyright 2021 Denis Mudarisov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +import json +import logging + +import werkzeug + +from odoo import http +from odoo.tools import date_utils + +from odoo.addons.web.controllers.utils import ensure_db + +_logger = logging.getLogger(__name__) + + +class OAS(http.Controller): + @http.route( + "/api/v1//swagger.json", + type="http", + auth="none", + csrf=False, + ) + def OAS_json_spec_download(self, namespace_name, **kwargs): + ensure_db() + namespace = ( + http.request.env["openapi.namespace"] + .sudo() + .search([("name", "=", namespace_name)]) + ) + if not namespace: + raise werkzeug.exceptions.NotFound() + if namespace.token != kwargs.get("token"): + raise werkzeug.exceptions.Forbidden() + + response_params = {"headers": [("Content-Type", "application/json")]} + if "download" in kwargs: + response_params = { + "headers": [ + ("Content-Type", "application/octet-stream; charset=binary"), + ("Content-Disposition", http.content_disposition("swagger.json")), + ], + "direct_passthrough": True, + } + + return werkzeug.wrappers.Response( + json.dumps(namespace.get_OAS(), default=date_utils.json_default), + status=200, + **response_params + ) diff --git a/openapi/controllers/pinguin.py b/openapi/controllers/pinguin.py new file mode 100644 index 00000000..d617ed45 --- /dev/null +++ b/openapi/controllers/pinguin.py @@ -0,0 +1,945 @@ +# Copyright 2018, XOE Solutions +# Copyright 2018-2019 Rafis Bikbov +# Copyright 2019 Yan Chirino +# Copyright 2019 Anvar Kildebekov +# Copyright 2021 Denis Mudarisov +# Copyright 2022 Ivan Yelizariev +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +# pylint: disable=redefined-builtin + +"""Pinguin module for Odoo REST Api. + +This module implements plumbing code to the REST interface interface concerning +authentication, validation, ORM access and error codes. + +It also implements a ORP API worker in the future (maybe). + +Todo: + * Implement API worker + * You have to also use ``sphinx.ext.todo`` extension + +.. _Google Python Style Guide: + https://google.github.io/styleguide/pyguide.html +""" +import base64 +import functools +import traceback + +import werkzeug.wrappers + +import odoo +from odoo.http import request +from odoo.service import security + +from odoo.addons.base_api.lib.pinguin import ( + error_response, + get_dict_from_record, + get_dictlist_from_model, + get_model_for_read, +) +from odoo.addons.web.controllers.main import ReportController + +try: + import simplejson as json +except ImportError: + import json + + +#################################### +# Definition of global error codes # +#################################### + +# 2xx Success +CODE__success = 200 +CODE__created = 201 +CODE__accepted = 202 +CODE__ok_no_content = 204 +# 4xx Client Errors +CODE__server_rejects = (400, "Server rejected", "Welcome to macondo!") +CODE__no_user_auth = (401, "Authentication", "Your token could not be authenticated.") +CODE__user_no_perm = (403, "Permissions", "%s") +CODE__method_blocked = ( + 403, + "Blocked Method", + "This method is not whitelisted on this model.", +) +CODE__db_not_found = (404, "Db not found", "Welcome to macondo!") +CODE__canned_ctx_not_found = ( + 404, + "Canned context not found", + "The requested canned context is not configured on this model", +) +CODE__obj_not_found = ( + 404, + "Object not found", + "This object is not available on this instance.", +) +CODE__res_not_found = (404, "Resource not found", "There is no resource with this id.") +CODE__act_not_executed = ( + 409, + "Action not executed", + "The requested action was not executed.", +) +# 5xx Server errors +CODE__invalid_method = (501, "Invalid Method", "This method is not implemented.") +CODE__invalid_spec = ( + 501, + "Invalid Field Spec", + "The field spec supplied is not valid.", +) +# If API Workers are enforced, but non is available (switched off) +CODE__no_api_worker = ( + 503, + "API worker sleeping", + "The API worker is currently not at work.", +) + + +def successful_response(status, data=None): + """Successful responses wrapper. + + :param int status: The success code. + :param data: (optional). The data that can be converted to a JSON. + + :returns: The werkzeug `response object`_. + :rtype: werkzeug.wrappers.Response + + .. _response object: + http://werkzeug.pocoo.org/docs/0.14/wrappers/#module-werkzeug.wrappers + + """ + try: + data = data.ids + except AttributeError: + pass + + return request.make_json_response(data, status=status) + + +########################## +# Pinguin Authentication # +########################## + + +# User token auth (db-scoped) +def authenticate_token_for_user(token): + """Authenticate against the database and setup user session corresponding to the token. + + :param str token: The raw access token. + + :returns: User if token is authorized for the requested user. + :rtype odoo.models.Model + + :raise: werkzeug.exceptions.HTTPException if user not found. + """ + user = request.env["res.users"].sudo().search([("openapi_token", "=", token)]) + if user.exists(): + # copy-pasted from odoo.http.py:OpenERPSession.authenticate() + request.session.uid = user.id + request.session.login = user.login + request.session.session_token = user.id and security.compute_session_token( + request.session, request.env + ) + request.update_env(user=user.id) + + return user + raise werkzeug.exceptions.HTTPException( + response=error_response(*CODE__no_user_auth) + ) + + +def get_auth_header(headers, raise_exception=False): + """check and get basic authentication header from headers + + :param werkzeug.datastructures.Headers headers: All headers in request. + :param bool raise_exception: raise exception. + + :returns: Found raw authentication header. + :rtype: str or None + + :raise: werkzeug.exceptions.HTTPException if raise_exception is **True** + and auth header is not in headers + or it is not Basic type. + """ + auth_header = headers.get("Authorization") or headers.get("authorization") + if not auth_header or not auth_header.startswith("Basic "): + if raise_exception: + raise werkzeug.exceptions.HTTPException( + response=error_response(*CODE__no_user_auth) + ) + return auth_header + + +def get_data_from_auth_header(header): + """decode basic auth header and get data + + :param str header: The raw auth header. + + :returns: a tuple of database name and user token + :rtype: tuple + :raise: werkzeug.exceptions.HTTPException if basic header is invalid base64 + string or if the basic header is + in the wrong format + """ + normalized_token = header.replace("Basic ", "").replace("\\n", "").encode("utf-8") + try: + decoded_token_parts = ( + base64.b64decode(normalized_token).decode("utf-8").split(":") + ) + except TypeError as e: + raise werkzeug.exceptions.HTTPException( + response=error_response( + 500, "Invalid header", "Basic auth header must be valid base64 string" + ) + ) from e + + if len(decoded_token_parts) == 1: + db_name, user_token = None, decoded_token_parts[0] + elif len(decoded_token_parts) == 2: + db_name, user_token = decoded_token_parts + else: + err_descrip = ( + 'Basic auth header payload must be of the form "<%s>" (encoded to base64)' + % "user_token" + if odoo.tools.config["dbfilter"] + else "db_name:user_token" + ) + raise werkzeug.exceptions.HTTPException( + response=error_response(500, "Invalid header", err_descrip) + ) + + return db_name, user_token + + +def setup_db(httprequest, db_name): + """check and setup db in session by db name + + :param httprequest: a wrapped werkzeug Request object + :type httprequest: :class:`werkzeug.wrappers.BaseRequest` + :param str db_name: Database name. + + :raise: werkzeug.exceptions.HTTPException if the database not found. + """ + if httprequest.session.db: + return + if db_name not in odoo.service.db.list_dbs(force=True): + raise werkzeug.exceptions.HTTPException( + response=error_response(*CODE__db_not_found) + ) + + httprequest.session.db = db_name + + +################### +# Pinguin Routing # +################### + + +# Try to get namespace from user allowed namespaces +def get_namespace_by_name_from_users_namespaces( + user, namespace_name, raise_exception=False +): + """check and get namespace from users namespaces by name + + :param ..models.res_users.ResUsers user: The user record. + :param str namespace_name: The name of namespace. + :param bool raise_exception: raise exception if namespace does not exist. + + :returns: Found 'openapi.namespace' record. + :rtype: ..models.openapi_namespace.Namespace + + :raise: werkzeug.exceptions.HTTPException if the namespace is not contained + in allowed user namespaces. + """ + namespace = request.env["openapi.namespace"].search([("name", "=", namespace_name)]) + + if not namespace.exists() and raise_exception: + raise werkzeug.exceptions.HTTPException( + response=error_response(*CODE__obj_not_found) + ) + + if namespace not in user.namespace_ids and raise_exception: + err = list(CODE__user_no_perm) + err[2] = "The requested namespace (integration) is not authorized." + raise werkzeug.exceptions.HTTPException(response=error_response(*err)) + + return namespace + + +# Create openapi.log record +def create_log_record(**kwargs): + test_mode = request.registry.test_cr + # don't create log in test mode as it's impossible in case of error in sql + # request (we cannot use second cursor and we cannot use aborted + # transaction) + if not test_mode: + with odoo.registry(request.session.db).cursor() as cr: + # use new to save data even in case of an error in the old cursor + env = odoo.api.Environment(cr, request.session.uid, {}) + _create_log_record(env, **kwargs) + + +def _create_log_record( + env, + namespace_id=None, + namespace_log_request=None, + namespace_log_response=None, + user_id=None, + user_request=None, + user_response=None, +): + """create log for request + + :param int namespace_id: Requested namespace id. + :param string namespace_log_request: Request save option. + :param string namespace_log_response: Response save option. + :param int user_id: User id which requests. + :param user_request: a wrapped werkzeug Request object from user. + :type user_request: :class:`werkzeug.wrappers.BaseRequest` + :param user_response: a wrapped werkzeug Response object to user. + :type user_response: :class:`werkzeug.wrappers.Response` + + :returns: New 'openapi.log' record. + :rtype: ..models.openapi_log.Log + """ + if True: # just to keep original indent + log_data = { + "namespace_id": namespace_id, + "request": "%s | %s | %d" + % (user_request.url, user_request.method, user_response.status_code), + "request_data": None, + "response_data": None, + } + if namespace_log_request == "debug": + log_data["request_data"] = user_request.__dict__ + elif namespace_log_request == "info": + log_data["request_data"] = user_request.__dict__ + for k in ["form", "files"]: + try: + del log_data["request_data"][k] + except KeyError: + pass + + if namespace_log_response == "debug": + log_data["response_data"] = user_response.__dict__ + elif namespace_log_response == "error" and user_response.status_code > 400: + log_data["response_data"] = user_response.__dict__ + + return env["openapi.log"].create(log_data) + + +# Patched http route +def route(controller_method): + """Set up the environment for route handlers. + + Patches the framework and additionally authenticates + the API token and infers database through a different mechanism. + + :param list args: Positional arguments. Transparent pass through to the patched method. + :param dict kwargs: Keyword arguments. Transparent pass through to the patched method. + + :returns: wrapped method + """ + if True: # dummy if-block to keep original indent + + @functools.wraps(controller_method) + def controller_method_wrapper(*iargs, **ikwargs): + + auth_header = get_auth_header( + request.httprequest.headers, raise_exception=True + ) + db_name, user_token = get_data_from_auth_header(auth_header) + authenticated_user = authenticate_token_for_user(user_token) + namespace = get_namespace_by_name_from_users_namespaces( + authenticated_user, ikwargs["namespace"], raise_exception=True + ) + data_for_log = { + "namespace_id": namespace.id, + "namespace_log_request": namespace.log_request, + "namespace_log_response": namespace.log_response, + "user_id": authenticated_user.id, + "user_request": None, + "user_response": None, + } + + try: + response = controller_method(*iargs, **ikwargs) + except werkzeug.exceptions.HTTPException as e: + response = e.response + except Exception as e: + traceback.print_exc() + if hasattr(e, "error") and isinstance(e.error, Exception): + e = e.error + response = error_response( + status=500, + error=type(e).__name__, + error_descrip=e.name if hasattr(e, "name") else str(e), + ) + + data_for_log.update( + {"user_request": request.httprequest, "user_response": response} + ) + create_log_record(**data_for_log) + + return response + + return controller_method_wrapper + + +############################ +# Pinguin Metadata Helpers # +############################ + + +# TODO: cache per model and database +# Get the specific context(openapi.access) +def get_create_context(namespace, model, canned_context): + """Get the requested preconfigured context of the model specification. + + The canned context is used to preconfigure default values or context flags. + That are used in a repetitive way in namespace for specific model. + + As this should, for performance reasons, not repeatedly result in calls to the persistence + layer, this method is cached in memory. + + :param str namespace: The namespace to also validate against. + :param str model: The model, for which we retrieve the configuration. + :param str canned_context: The preconfigured context, which we request. + + :returns: A dictionary containing the requested context. + :rtype: dict + :raise: werkzeug.exceptions.HTTPException TODO: add description in which case + """ + cr, uid = request.cr, request.session.uid + + # Singleton by construction (_sql_constraints) + openapi_access = request.env(cr, uid)["openapi.access"].search( + [("model_id", "=", model), ("namespace_id.name", "=", namespace)] + ) + + assert ( + len(openapi_access) == 1 + ), "'openapi_access' is not a singleton, bad construction." + # Singleton by construction (_sql_constraints) + context = openapi_access.create_context_ids.filtered( + lambda r: r["name"] == canned_context + ) + assert len(context) == 1, "'context' is not a singleton, bad construction." + + if not context: + raise werkzeug.exceptions.HTTPException( + response=error_response(*CODE__canned_ctx_not_found) + ) + + return context + + +# TODO: cache per model and database +# Get model configuration (openapi.access) +def get_model_openapi_access(namespace, model): + """Get the model configuration and validate the requested namespace against the session. + + The namespace is a lightweight ACL + default implementation to integrate + with various integration consumer, such as webstore, provisioning platform, etc. + + We validate the namespace at this latter stage, because it forms part of the http route. + The token has been related to a namespace already previously + + This is a double purpose method. + + As this should, for performance reasons, not repeatedly result in calls to the persistence + layer, this method is cached in memory. + + :param str namespace: The namespace to also validate against. + :param str model: The model, for which we retrieve the configuration. + + :returns: The error response object if namespace validation failed. + A dictionary containing the model API configuration for this namespace. + The layout of the dict is as follows: + ```python + {'context': (Dict) odoo context (default values through context), + 'out_fields_read_multi': (Tuple) field spec, + 'out_fields_read_one': (Tuple) field spec, + 'out_fields_create_one': (Tuple) field spec, + 'method' : { + 'public' : { + 'mode': (String) one of 'all', 'none', 'custom', + 'whitelist': (List) of method strings, + }, + 'private' : { + 'mode': (String) one of 'none', 'custom', + 'whitelist': (List) of method strings, + }, + 'main' : { + 'mode': (String) one of 'none', 'custom', + 'whitelist': (List) of method strings, + }, + } + ``` + :rtype: dict + :raise: werkzeug.exceptions.HTTPException if the namespace has no accesses. + """ + # TODO: this method has code duplicates with openapi specification code (e.g. get_OAS_definitions_part) + cr, uid = request.cr, request.session.uid + # Singleton by construction (_sql_constraints) + openapi_access = ( + request.env(cr, uid)["openapi.access"] + .sudo() + .search([("model_id", "=", model), ("namespace_id.name", "=", namespace)]) + ) + if not openapi_access.exists(): + raise werkzeug.exceptions.HTTPException( + response=error_response(*CODE__canned_ctx_not_found) + ) + + res = { + "context": {}, # Take ot here FIXME: make sure it is for create_context + "out_fields_read_multi": (), + "out_fields_read_one": (), + "out_fields_create_one": (), # FIXME: for what? + "method": { + "public": {"mode": "", "whitelist": []}, + "private": {"mode": "", "whitelist": []}, + "main": {"mode": "", "whitelist": []}, + }, + } + # Infer public method mode + if openapi_access.api_public_methods and openapi_access.public_methods: + res["method"]["public"]["mode"] = "custom" + res["method"]["public"]["whitelist"] = openapi_access.public_methods.split() + elif openapi_access.api_public_methods: + res["method"]["public"]["mode"] = "all" + else: + res["method"]["public"]["mode"] = "none" + + # Infer private method mode + if openapi_access.private_methods: + res["method"]["private"]["mode"] = "custom" + res["method"]["private"]["whitelist"] = openapi_access.private_methods.split() + else: + res["method"]["private"]["mode"] = "none" + + for c in openapi_access.create_context_ids.mapped("context"): + res["context"].update(json.loads(c)) + + res["out_fields_read_multi"] = openapi_access.read_many_id.export_fields.mapped( + "name" + ) or ("id",) + res["out_fields_read_one"] = openapi_access.read_one_id.export_fields.mapped( + "name" + ) or ("id",) + + if openapi_access.public_methods: + res["method"]["public"]["whitelist"] = openapi_access.public_methods.split() + if openapi_access.private_methods: + res["method"]["private"]["whitelist"] = openapi_access.private_methods.split() + + main_methods = ["api_create", "api_read", "api_update", "api_delete"] + for method in main_methods: + if openapi_access[method]: + res["method"]["main"]["whitelist"].append(method) + + if len(res["method"]["main"]["whitelist"]) == len(main_methods): + res["method"]["main"]["mode"] = "all" + elif not res["method"]["main"]["whitelist"]: + res["method"]["main"]["mode"] = "none" + else: + res["method"]["main"]["mode"] = "custom" + + return res + + +################## +# Pinguin Worker # +################## + + +def wrap__resource__create_one(modelname, context, data, success_code, out_fields): + """Function to create one record. + + :param str model: The name of the model. + :param dict context: TODO + :param dict data: Data received from the user. + :param int success_code: The success code. + :param tuple out_fields: Canned fields. + + :returns: successful response if the create operation is performed + otherwise error response + :rtype: werkzeug.wrappers.Response + """ + model_obj = get_model_for_read(modelname) + try: + created_obj = model_obj.with_context(context).create(data) + test_mode = request.registry.test_cr + if not test_mode: + # Somehow don't making a commit here may lead to error + # "Record does not exist or has been deleted" + # Probably, Odoo (10.0 at least) uses different cursors + # to create and to read fields from database + request.env.cr.commit() + except Exception as e: + return error_response(400, type(e).__name__, str(e)) + + out_data = get_dict_from_record(created_obj, out_fields, (), ()) + return successful_response(success_code, out_data) + + +def wrap__resource__read_all(modelname, success_code, out_fields): + """function to read all records. + + :param str modelname: The name of the model. + :param int success_code: The success code. + :param tuple out_fields: Canned fields. + + :returns: successful response with records data + :rtype: werkzeug.wrappers.Response + """ + data = get_dictlist_from_model(modelname, out_fields) + return successful_response(success_code, data) + + +def wrap__resource__read_one(modelname, id, success_code, out_fields): + """Function to read one record. + + :param str modelname: The name of the model. + :param int id: The record id of which we want to read. + :param int success_code: The success code. + :param tuple out_fields: Canned fields. + + :returns: successful response with the data of one record + :rtype: werkzeug.wrappers.Response + """ + out_data = get_dict_from_model(modelname, out_fields, id) + return successful_response(success_code, out_data) + + +def wrap__resource__update_one(modelname, id, success_code, data): + """Function to update one record. + + :param str modelname: The name of the model. + :param int id: The record id of which we want to update. + :param int success_code: The success code. + :param dict data: The data for update. + + :returns: successful response if the update operation is performed + otherwise error response + :rtype: werkzeug.wrappers.Response + """ + cr, uid = request.cr, request.session.uid + record = request.env(cr, uid)[modelname].browse(id) + if not record.exists(): + return error_response(*CODE__obj_not_found) + try: + record.write(data) + except Exception as e: + return error_response(400, type(e).__name__, str(e)) + return successful_response(success_code) + + +def wrap__resource__unlink_one(modelname, id, success_code): + """Function to delete one record. + + :param str modelname: The name of the model. + :param int id: The record id of which we want to delete. + :param int success_code: The success code. + + :returns: successful response if the delete operation is performed + otherwise error response + :rtype: werkzeug.wrappers.Response + """ + cr, uid = request.cr, request.session.uid + record = request.env(cr, uid)[modelname].browse([id]) + if not record.exists(): + return error_response(*CODE__obj_not_found) + record.unlink() + return successful_response(success_code) + + +def wrap__resource__call_method(modelname, ids, method, method_params, success_code): + """Function to call the model method for records by IDs. + + :param str modelname: The name of the model. + :param list ids: The record ids of which we want to call method. + :param str method: The name of the method. + :param int success_code: The success code. + + :returns: successful response if the method execution did not cause an error + otherwise error response + :rtype: werkzeug.wrappers.Response + """ + model_obj = get_model_for_read(modelname) + + if not hasattr(model_obj, method): + return error_response(*CODE__invalid_method) + + records = model_obj.browse(ids).exists() + results = [] + args = method_params.get("args", []) + kwargs = method_params.get("kwargs", {}) + for record in records or [model_obj]: + result = getattr(record, method)(*args, **kwargs) + results.append(result) + + if len(ids) <= 1 and len(results): + results = results[0] + model_obj.flush_model() # to recompute fields + return successful_response(success_code, data=results) + + +def wrap__resource__get_report( + namespace, report_external_id, docids, converter, success_code +): + """Return html or pdf report response. + + :param namespace: id/ids/browserecord of the records to print (if not used, pass an empty list) + :param docids: id/ids/browserecord of the records to print (if not used, pass an empty list) + :param docids: id/ids/browserecord of the records to print (if not used, pass an empty list) + :param report_name: Name of the template to generate an action for + """ + report = request.env.ref(report_external_id) + + if isinstance(report, type(request.env["ir.ui.view"])): + report = request.env["report"]._get_report_from_name(report_external_id) + + model = report.model + report_name = report.report_name + + get_model_openapi_access(namespace, model) + + response = ReportController().report_routes(report_name, docids, converter) + response.status_code = success_code + return response + + +####################### +# Pinguin ORM Wrapper # +####################### + + +# Dict from model +def get_dict_from_model(model, spec, id, **kwargs): + """Fetch dictionary from one record according to spec. + + :param str model: The model against which to validate. + :param tuple spec: The spec to validate. + :param int id: The id of the record. + :param dict kwargs: Keyword arguments. + :param tuple kwargs['include_fields']: The extra fields. + This parameter is not implemented on higher level code in order + to serve as a soft ACL implementation on top of the framework's + own ACL. + :param tuple kwargs['exclude_fields']: The excluded fields. + + :returns: The python dictionary of the requested values. + :rtype: dict + :raise: werkzeug.exceptions.HTTPException if the record does not exist. + """ + include_fields = kwargs.get( + "include_fields", () + ) # Not actually implemented on higher level (ACL!) + exclude_fields = kwargs.get("exclude_fields", ()) + + model_obj = get_model_for_read(model) + + record = model_obj.browse([id]) + if not record.exists(): + raise werkzeug.exceptions.HTTPException( + response=error_response(*CODE__res_not_found) + ) + return get_dict_from_record(record, spec, include_fields, exclude_fields) + + +# Check that the method is allowed +def method_is_allowed(method, methods_conf, main=False, raise_exception=False): + """Check that the method is allowed for the specified settings. + + :param str method: The name of the method. + :param dict methods_conf: The methods configuration dictionary. + A dictionary containing the methods API configuration. + The layout of the dict is as follows: + ```python + { + 'public' : { + 'mode': (String) one of 'all', 'none', 'custom', + 'whitelist': (List) of method strings, + }, + 'private' : { + 'mode': (String) one of 'none', 'custom', + 'whitelist': (List) of method strings, + }, + 'main' : { + 'mode': (String) one of 'none', 'custom', + 'whitelist': (List) of method strings, + }, + } + ``` + :param bool main: The method is a one of access fields. + :param bool raise_exception: raise exception instead of returning **False**. + + :returns: **True** if the method is allowed, otherwise **False**. + :rtype: bool + :raise: werkzeug.exceptions.HTTPException if the method is not allowed and + raise_exception is **True**. + """ + if main: + method_type = "main" + else: + method_type = "private" if method.startswith("_") else "public" + + if methods_conf[method_type]["mode"] == "all": + return True + if ( + methods_conf[method_type]["mode"] == "custom" + and method in methods_conf[method_type]["whitelist"] + ): + return True + if raise_exception: + raise werkzeug.exceptions.HTTPException( + response=error_response(*CODE__method_blocked) + ) + return False + + +############### +# Pinguin OAS # +############### + +# Get definition name +def get_definition_name(modelname, prefix="", postfix="", splitter="-"): + """Concatenation of the prefix, modelname, postfix. + + :param str modelname: The name of the model. + :param str prefix: The prefix. + :param str postfix: The postfix. + :param str splitter: The splitter. + + :returns: Concatenation of the arguments + :rtype: str + """ + return splitter.join([s for s in [prefix, modelname, postfix] if s]) + + +# Get OAS definitions part for model and nested models +def get_OAS_definitions_part( + model_obj, export_fields_dict, definition_prefix="", definition_postfix="" +): + """Recursively gets definition parts of the OAS for model by export fields. + + :param odoo.models.Model model_obj: The model object. + :param dict export_fields_dict: The dictionary with export fields. + Example of the dict is as follows: + ```python + { + u'active': None, + u'child_ids': { + u'user_ids': { + u'city': None, + u'login': None, + u'password': None, + u'id': None}, u'id': None + }, + u'email': None, + u'name': None + } + ``` + + :param str definition_prefix: The prefix for definition name. + :param str definition_postfix: The postfix for definition name. + + :returns: Definitions for the model and relative models. + :rtype: dict + """ + definition_name = get_definition_name( + model_obj._name, definition_prefix, definition_postfix + ) + + definitions = { + definition_name: {"type": "object", "properties": {}, "required": []}, + } + + fields_meta = model_obj.fields_get(export_fields_dict.keys()) + + for field, child_fields in export_fields_dict.items(): + meta = fields_meta[field] + if child_fields: + child_model = model_obj.env[meta["relation"]] + child_definition = get_OAS_definitions_part( + child_model, child_fields, definition_prefix=definition_name + ) + + if meta["type"].endswith("2one"): + field_property = child_definition[ + get_definition_name(child_model._name, prefix=definition_name) + ] + else: + field_property = { + "type": "array", + "items": child_definition[ + get_definition_name(child_model._name, prefix=definition_name) + ], + } + else: + field_property = {} + + if meta["type"] == "integer": + field_property.update(type="integer") + elif meta["type"] == "float": + field_property.update(type="number", format="float") + elif meta["type"] == "monetary": + field_property.update(type="number", format="float") + elif meta["type"] == "char": + field_property.update(type="string") + elif meta["type"] == "text": + field_property.update(type="string") + elif meta["type"] == "binary": + field_property.update(type="string", format="binary") + elif meta["type"] == "boolean": + field_property.update(type="boolean") + elif meta["type"] == "date": + field_property.update(type="string", format="date") + elif meta["type"] == "datetime": + field_property.update(type="string", format="date-time") + elif meta["type"] == "many2one": + field_property.update(type="integer") + elif meta["type"] == "selection": + field_property.update( + { + "type": "integer" + if isinstance(meta["selection"][0][0], int) + else "string", + "enum": [i[0] for i in meta["selection"]], + } + ) + elif meta["type"] in ["one2many", "many2many"]: + field_property.update({"type": "array", "items": {"type": "integer"}}) + + # We cannot have both required and readOnly flags in field openapi + # definition, for that reason we cannot blindly use odoo's + # attributed readonly and required. + # + # 1) For odoo-required, but NOT odoo-related field, we do NOT use + # openapi-readonly + # + # Example of such field can be found in sale module: + # partner_id = fields.Many2one('res.partner', readonly=True, + # states={'draft': [('readonly', False)], 'sent': [('readonly', + # False)]}, required=True, ...) + # + # 2) For odoo-required and odoo-related field, we DO use + # openapi-readonly, but we don't use openapi-required + if meta["readonly"] and (not meta["required"] or meta.get("related")): + field_property.update(readOnly=True) + + definitions[definition_name]["properties"][field] = field_property + + if meta["required"] and not meta.get("related"): + fld = model_obj._fields[field] + # Mark as required only if field doesn't have defaul value + # Boolean always has default value (False) + if fld.default is None and fld.type != "boolean": + definitions[definition_name]["required"].append(field) + + if not definitions[definition_name]["required"]: + del definitions[definition_name]["required"] + + return definitions diff --git a/openapi/demo/openapi_demo.xml b/openapi/demo/openapi_demo.xml new file mode 100644 index 00000000..829f9f67 --- /dev/null +++ b/openapi/demo/openapi_demo.xml @@ -0,0 +1,65 @@ + + + + + demo + debug + debug + demo_token + + + + demo / res.partner / read_one + res.partner + + + + demo / res.partner / read_many + res.partner + + + + default + + {"default_function": "CEO"} + + + + + + + + + + _email_send + + + + + diff --git a/openapi/demo/openapi_security_demo.xml b/openapi/demo/openapi_security_demo.xml new file mode 100644 index 00000000..4f3e0e1a --- /dev/null +++ b/openapi/demo/openapi_security_demo.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/openapi/doc/changelog.rst b/openapi/doc/changelog.rst new file mode 100644 index 00000000..36c3c13c --- /dev/null +++ b/openapi/doc/changelog.rst @@ -0,0 +1,87 @@ +`1.2.4` +------- + +- **Fix:** stopped using the internal mechanism of work with CORS because it caused conflicts +- **Fix:** added consumes field to PUT method because there were problems when working with a Swagger +- **Fix:** internal exception handling was incorrect +- **Fix:** there was no description of the monetary field + +`1.2.3` +------- + +- **Fix:** error on logging with info level + +`1.2.2` +------- + +- **Fix:** error while working with two or more databases + +`1.2.1` +------- + +- **Fix:** error on creating openapi. namespace record with context presets +- **Fix:** OpenAPI user can't create log records +- **Fix:** wrong handling error in PATCH method +- **Fix:** Error "Object of type datetime is not JSON serializable" in json + response + +`1.2.0` +------- + +- **Improvement:** Improve archive options and toggle button + +`1.1.9` +------- + +- **Fix:** Possible crash on reading multiple openapi.namespace records at once + +`1.1.8` +------- + +- **Fix:** Slow loading of integration view due to loading logs in python + +`1.1.7` +------- + +- **Improvement:** namespace's logs displays in standalone tree-view by clicking smart-button + +`1.1.6` +------- + +- **Fix:** users got same token on installation + +`1.1.5` +------- + +- **Fix:** UTF-8 Decode error, singleton error in check methods + +`1.1.4` +------- + +- **Fix:** no computation In PATCH-method for compute-fields + +`1.1.3` +------- + +- **Fix:** don't mark fields as readOnly and required at the same time + +`1.1.2` +------- + +- **Improvement:** Security rules for reading and configuration + +`1.1.1` +------- + +- **Fix:** Translation model's float-field into JSON's integer + +`1.1.0` +------- + +- **New:** search_or_create method is available in all models +- **Improvement:** no need to use extra quotes in context + +`1.0.0` +------- + +- Init version diff --git a/openapi/doc/index.rst b/openapi/doc/index.rst new file mode 100644 index 00000000..0de1cedb --- /dev/null +++ b/openapi/doc/index.rst @@ -0,0 +1,173 @@ +========================== + REST API/Openapi/Swagger +========================== + +.. contents:: + :local: + +Installation +============ + +* Install python packages: + + ``python3 -m pip install bravado_core swagger_spec_validator`` + +* `Install `__ this module in a usual way + +Configuration +============= + +Activating and customization +---------------------------- + +* Open menu ``[[ OpenAPI ]] >> OpenAPI >> Integrations`` +* Click ``[Create]`` +* Specify **Name** for integration, e.g. ``test`` +* Set **Log requests** to *Full* +* Set **Log responses** to *Full* +* In ``Accessable models`` tab click ``Add an item`` + + * Set **Model**, for example *res.users* + * Configure allowed operations + + * **[x] Create via API** + + * Set **Creation Context Presets**, for example + + * **Name**: ``brussels`` + * **Context**: ``{"default_tz":"Europe/Brussels", "default_lang":"fr_BE"}`` + + * **[x] Read via API** + + * Set **Read One Fields** -- fields to return on reading one record + * Set **Read Many Fields** -- fields to return on reading multiple records + + Note: you can use Export widget in corresponding *Model* to create *Fields list*. To do that: + + * Open menu for the *Model* + * Switch to list view + * Select any record + * click ``[Action] -> Export`` + * Set **Export Type** to *Export all Data* + * Add the fields you need to right column + * Click **Save fields list**, choose name and save the list + * Now the list is availab to set **Read One Fields**, **Read Many Fields** settings + + * **[x] Update via API** + * **[x] Delete via API** + +* Click ``[Save]`` +* Copy **Specification Link** to use it in any system that support OpenAPI + +Authentication +-------------- + +* `Activate Developer Mode `__ +* Open menu ``[[ Settings ]] >> Users & Companies >> Users`` +* Select a user that will be used for iteracting over API +* In **Allowed Integration** select some integrations +* Copy **OpenAPI Token** to use it in any system that support OpenAPI + +If necessary, you can reset the token by pressing ``[Reset OpenAPI Token]`` button + +Usage +===== + +Swagger Editor +-------------- +As the simplest example, you can try API in Swagger Editor. It allows to review and check API + +* Open http://editor.swagger.io/ +* Click menu ``File >> Import URL`` +* Set **Specification link** +* RESULT: Specification is parsed succefully and you can see API presentation +* Click ``[Authorize]`` button + + * **Username** -- set database name + * **Password** -- set **OpenAPI Token** (how to get one is described in `authentication <#authentication>`__ above) + +Note: + The Swagger Editor sends requests directly from browser which leads to CORS error and work with it is not available in `odoo.sh`. + The easiest solution is to simply copy-past the curl command from Swagger Editor and run it from the terminal. + + Alternatively, you can grant CORS headers in your web server. Below is example for Nginx:: + + location /api/v1 { + if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Allow-Origin' '*' 'always'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' 'always'; + add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' 'always'; + add_header 'Access-Control-Max-Age' 1728000; + add_header 'Content-Type' 'text/plain; charset=utf-8'; + add_header 'Content-Length' 0; + return 204; + } + if ($request_method = 'POST') { + add_header 'Access-Control-Allow-Origin' '*' 'always'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' 'always'; + add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' 'always'; + } + if ($request_method = 'GET') { + add_header 'Access-Control-Allow-Origin' '*' 'always'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' 'always'; + add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' 'always'; + } + if ($request_method = 'PUT') { + add_header 'Access-Control-Allow-Origin' '*' 'always'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' 'always'; + add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' 'always'; + } + if ($request_method = 'DELETE') { + add_header 'Access-Control-Allow-Origin' '*' 'always'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' 'always'; + add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' 'always'; + } + if ($request_method = 'PATCH') { + add_header 'Access-Control-Allow-Origin' '*' 'always'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' 'always'; + add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' 'always'; + } + + # ... + } + +How to call methods with arguments via API +------------------------------------------ + +Here is an example of calling a search method with domain. + +This is how it is usually done from python code: + +.. code-block:: python + + partner_ids = self.env["res.partner"].search([("is_company", "=", "True")]) + +On using API it would be as following: + +.. code-block:: bash + + curl -X PATCH "http://example.com/api/v1/demo/res.partner/call/search" -H "accept: application/json" \ + -H "authorization: Basic BASE64_ENCODED_EXPRESSION" -H "Content-Type: application/json" \ + -d '{ "args": [[["is_company", "=", "True" ]]]}' + + +Updating existing record +----------------------------- + +For example, to set *phone* value for a partner, make a PUT request in the following way: + +.. code-block:: bash + + curl -X PUT -H "Authorization: Basic BASE64_ENCODED_EXPRESSION" \ + -H "Content-Type: application/json" -H "Accept: */*" \ + -d '{ "phone": "+7123456789"}' "http://example.com/api/v1/demo/res.partner/41" + +To set many2one field, you need to pass id as a value: + +.. code-block:: bash + + curl -X PUT -H "Authorization: Basic BASE64_ENCODED_EXPRESSION" \ + -H "Content-Type: application/json" -H "Accept: */*" \ + -d '{ "parent_id": *RECORD_ID*}' "http://example.com/api/v1/demo/res.partner/41" + +For more examples visit https://itpp.dev/sync website diff --git a/openapi/i18n/fr.po b/openapi/i18n/fr.po new file mode 100644 index 00000000..11bc725f --- /dev/null +++ b/openapi/i18n/fr.po @@ -0,0 +1,535 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * openapi +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-09-15 18:12+0000\n" +"PO-Revision-Date: 2022-09-15 20:25+0200\n" +"Last-Translator: \n" +"Language-Team: Alpis Traduction et Interpétation \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"X-Generator: Poedit 2.0.4\n" + +#. module: openapi +#: model:ir.model.constraint,message:openapi.constraint_openapi_namespace_name_uniq +msgid "" +"A namespace already exists with this name. Namespace's name must be unique!" +msgstr "" +"Un espace de noms existe déjà avec ce préfixe. Le préfixe de l'espace de noms " +"doit être unique !" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.access_form_view +msgid "Access" +msgstr "Accès" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_ir_model__api_access_ids +msgid "Access via API" +msgstr "Accès via API" + +#. module: openapi +#: model:ir.model,name:openapi.model_openapi_access +msgid "Access via API " +msgstr "Accès via API " + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.namespace_form_view +msgid "Accessable Models" +msgstr "Modèles accessibles" + +#. module: openapi +#: model:ir.actions.act_window,name:openapi.ir_model_accesses_list_action +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__access_ids +msgid "Accesses" +msgstr "Accès" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__active +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__active +msgid "Active" +msgstr "Activer" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__private_methods +msgid "Allow Private methods" +msgstr "Autoriser les méthodes privées" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_res_users__namespace_ids +msgid "Allowed Integrations" +msgstr "Intégrations autorisées" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.res_users_view_form +msgid "Allowed Intergrations" +msgstr "Intégrations autorisées" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__user_ids +#: model_terms:ir.ui.view,arch_db:openapi.namespace_form_view +msgid "Allowed Users" +msgstr "Utilisateurs autorisés" + +#. module: openapi +#: model:ir.model.fields,help:openapi.field_openapi_access__private_methods +msgid "" +"Allowed private methods. Private methods are ones that start with underscore. " +"Format: one method per line. When empty -- private methods are not allowed" +msgstr "" +"Méthodes privées autorisées. Les méthodes privées sont celles qui commencent " +"par un souligné. Format : une méthode par ligne. Si vide -- les méthodes " +"privées ne sont pas autorisées" + +#. module: openapi +#: model:ir.model.fields,help:openapi.field_openapi_access__public_methods +msgid "" +"Allowed public methods besides basic ones.\n" +"Public methods are ones that don't start with underscore).\n" +"Format: one method per line.\n" +"When empty -- all public methods are allowed" +msgstr "" +"Méthodes publiques autorisées en plus des méthodes de base.\n" +"Les méthodes publiques sont celles qui ne commencent pas par un souligné).\n" +"Format : une méthode par ligne.\n" +"Lorsque vide -- toutes les méthodes publiques sont autorisées" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.access_form_view +#: model_terms:ir.ui.view,arch_db:openapi.namespace_form_view +msgid "Archived" +msgstr "Archivé" + +#. module: openapi +#: model:ir.model.fields,help:openapi.field_res_users__openapi_token +msgid "Authentication token for access to API (/api)." +msgstr "Jeton d'authentification pour l'accès à l'API (/api)." + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__api_public_methods +msgid "Call Public methods via API" +msgstr "Appeler les méthodes publiques via l'API" + +#. module: openapi +#: model:ir.model.fields,help:openapi.field_openapi_access__create_context_ids +msgid "Can be used to pass default values or custom context" +msgstr "" +"Peut être utilisé pour passer des valeurs par défaut ou un contexte personnalisé" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__context +msgid "Context" +msgstr "Contexte" + +#. module: openapi +#: code:addons/openapi/models/openapi_access.py:0 +#, python-format +msgid "Context must be jsonable." +msgstr "Le contexte doit être jsonable." + +#. module: openapi +#: model:ir.model,name:openapi.model_openapi_access_create_context +msgid "Context on creating via API " +msgstr "Contexte de création via API " + +#. module: openapi +#: model_terms:ir.actions.act_window,help:openapi.namespace_list_action +msgid "Create and manage the namespaces." +msgstr "Créez et gérez les espaces de noms." + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__api_create +msgid "Create via API" +msgstr "Créer via l'API" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__create_uid +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__create_uid +#: model:ir.model.fields,field_description:openapi.field_openapi_log__create_uid +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__create_date +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__create_date +#: model:ir.model.fields,field_description:openapi.field_openapi_log__create_date +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__create_context_ids +#: model_terms:ir.ui.view,arch_db:openapi.access_form_view +msgid "Creation Context Presets" +msgstr "Préréglages du contexte de création" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__api_delete +msgid "Delete via API" +msgstr "Supprimer via l'API" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__description +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__description +msgid "Description" +msgstr "Description" + +#. module: openapi +#: model:ir.model.fields.selection,name:openapi.selection__openapi_namespace__log_request__disabled +#: model:ir.model.fields.selection,name:openapi.selection__openapi_namespace__log_response__disabled +msgid "Disabled" +msgstr "Désactivé" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_ir_exports__display_name +#: model:ir.model.fields,field_description:openapi.field_ir_model__display_name +#: model:ir.model.fields,field_description:openapi.field_openapi_access__display_name +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__display_name +#: model:ir.model.fields,field_description:openapi.field_openapi_log__display_name +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__display_name +#: model:ir.model.fields,field_description:openapi.field_res_users__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.namespace_form_view +#: model_terms:ir.ui.view,arch_db:openapi.res_users_view_form +msgid "Do you want to proceed reset token?" +msgstr "Voulez-vous procéder à la réinitialisation du jeton ?" + +#. module: openapi +#: model:ir.model.fields.selection,name:openapi.selection__openapi_namespace__log_response__error +msgid "Errors only" +msgstr "Seulement les erreurs" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.access_form_view +#: model_terms:ir.ui.view,arch_db:openapi.ir_exports_form_view +msgid "Export Fields" +msgstr "Exporter les champs" + +#. module: openapi +#: model:ir.model,name:openapi.model_ir_exports +#: model_terms:ir.ui.view,arch_db:openapi.ir_exports_form_view +msgid "Exports" +msgstr "Exports" + +#. module: openapi +#: model:ir.model.fields,help:openapi.field_openapi_access__read_one_id +msgid "Fields to return on reading one record, on creating a record" +msgstr "" +"Champs à retourner à la lecture d'un enregistrement, à la création d'un " +"enregistrement" + +#. module: openapi +#: model:ir.model.fields,help:openapi.field_openapi_access__read_many_id +msgid "Fields to return on reading via non one-record endpoint" +msgstr "" +"Champs à retourner à la lecture via un point de terminaison autre qu'un " +"enregistrement" + +#. module: openapi +#: model:ir.model.fields.selection,name:openapi.selection__openapi_namespace__log_request__debug +#: model:ir.model.fields.selection,name:openapi.selection__openapi_namespace__log_response__debug +msgid "Full" +msgstr "Complet" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_ir_exports__id +#: model:ir.model.fields,field_description:openapi.field_ir_model__id +#: model:ir.model.fields,field_description:openapi.field_openapi_access__id +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__id +#: model:ir.model.fields,field_description:openapi.field_openapi_log__id +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__id +#: model:ir.model.fields,field_description:openapi.field_res_users__id +msgid "ID" +msgstr "Identifiant" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__token +msgid "Identification token" +msgstr "Jeton d'identification" + +#. module: openapi +#: model:ir.model,name:openapi.model_openapi_namespace +#: model:ir.model.fields,field_description:openapi.field_openapi_access__namespace_id +#: model:ir.model.fields,field_description:openapi.field_openapi_log__namespace_id +msgid "Integration" +msgstr "Intégration" + +#. module: openapi +#: model:ir.model.fields,help:openapi.field_openapi_namespace__name +msgid "" +"Integration name, e.g. ebay, amazon, magento, etc.\n" +" The name is used in api endpoint" +msgstr "" +"Nom de l'intégration, par exemple ebay, amazon, magento, etc.\n" +" Le nom est utilisé dans le point de terminaison api" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.namespace_form_view +msgid "Intergration" +msgstr "Intégration" + +#. module: openapi +#: model:ir.actions.act_window,name:openapi.namespace_list_action +#: model:ir.ui.menu,name:openapi.namespaces_menu +msgid "Intergrations" +msgstr "Intégrations" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_ir_exports____last_update +#: model:ir.model.fields,field_description:openapi.field_ir_model____last_update +#: model:ir.model.fields,field_description:openapi.field_openapi_access____last_update +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context____last_update +#: model:ir.model.fields,field_description:openapi.field_openapi_log____last_update +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace____last_update +#: model:ir.model.fields,field_description:openapi.field_res_users____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__write_uid +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__write_uid +#: model:ir.model.fields,field_description:openapi.field_openapi_log__write_uid +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__write_date +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__write_date +#: model:ir.model.fields,field_description:openapi.field_openapi_log__write_date +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__write_date +msgid "Last Updated on" +msgstr "Dernière Mise à Jour le" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__last_log_date +msgid "Latest usage" +msgstr "Dernière utilisation" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.openapi_log_model_view_form +msgid "Log" +msgstr "Journal d'erreurs" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__log_request +msgid "Log Requests" +msgstr "Enregistrer des appels" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__log_response +msgid "Log Responses" +msgstr "Enregistrer les réponses" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__log_count +msgid "Log count" +msgstr "Nombre d’enregistrements" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__log_ids +#: model_terms:ir.ui.view,arch_db:openapi.namespace_form_view +msgid "Logs" +msgstr "Journaux" + +#. module: openapi +#: model:res.groups,name:openapi.group_manager +msgid "Manager" +msgstr "Gestionnaire" + +#. module: openapi +#: code:addons/openapi/models/openapi_access.py:0 +#, python-format +msgid "" +"Method %r is not part of the model's method list:\n" +" %r" +msgstr "" +"La méthode %r ne fait pas partie de la liste de méthodes du modèle :\n" +" %r" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__model_id +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__model_id +msgid "Model" +msgstr "Modèle" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__model +msgid "Model Name" +msgstr "Nom du modéle" + +#. module: openapi +#: model:ir.model,name:openapi.model_ir_model +msgid "Models" +msgstr "Modèles" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access_create_context__name +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__name +msgid "Name" +msgstr "Nom" + +#. module: openapi +#: model:ir.module.category,name:openapi.module_management +#: model:ir.ui.menu,name:openapi.main_openapi_menu +#: model:ir.ui.menu,name:openapi.openapi_menu +msgid "OpenAPI" +msgstr "OpenAPI" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_res_users__openapi_token +msgid "OpenAPI Token" +msgstr "Jeton OpenAPI" + +#. module: openapi +#: model:ir.model,name:openapi.model_openapi_log +msgid "OpenAPI logs" +msgstr "Journaux OpenAPI" + +#. module: openapi +#: code:addons/openapi/models/openapi_access.py:0 +#, python-format +msgid "Private method (starting with \"_\" listed in public methods whitelist)" +msgstr "" +"Méthode privée (commençant par \"_\" répertorié dans la liste blanche des " +"méthodes publiques)" + +#. module: openapi +#: code:addons/openapi/models/openapi_access.py:0 +#, python-format +msgid "Public method (not starting with \"_\" listed in private methods whitelist" +msgstr "" +"Méthode publique (ne commençant pas par \"_\" répertoriée dans la liste blanche " +"des méthodes privées" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__read_many_id +#: model_terms:ir.ui.view,arch_db:openapi.access_form_view +msgid "Read Many Fields" +msgstr "Lire plusieurs champs" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__read_one_id +#: model_terms:ir.ui.view,arch_db:openapi.access_form_view +msgid "Read One Fields" +msgstr "Lire un champ" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__api_read +msgid "Read via API" +msgstr "Lire via API" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.view_model_form +msgid "Related openapi accesses" +msgstr "Accès openapi kiés" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_ir_model__api_accesses_count +msgid "Related openapi accesses count" +msgstr "Nombre d'accès openapi liés" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_log__request +msgid "Request" +msgstr "Demande" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_log__request_data +msgid "Request Data" +msgstr "Demande de données" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.res_users_view_form +msgid "Reset OpenAPI Token" +msgstr "Réinitialiser le jeton OpenAPI" + +#. module: openapi +#: model_terms:ir.ui.view,arch_db:openapi.namespace_form_view +msgid "Reset Token" +msgstr "Réinitialiser le jeton" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_log__response_data +msgid "Response Data" +msgstr "Données de réponse" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__public_methods +msgid "Restric Public methods" +msgstr "Restreindre les méthodes publiques" + +#. module: openapi +#: model:ir.model.fields.selection,name:openapi.selection__openapi_namespace__log_request__info +msgid "Short" +msgstr "Court" + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_namespace__spec_url +msgid "Specification Link" +msgstr "Lien de spécification" + +#. module: openapi +#: code:addons/openapi/models/openapi_access.py:0 +#, python-format +msgid "The model \"%s\" has no such field: \"%s\"." +msgstr "Le modèle \"%s\" n'a pas ce champ : \"%s\"." + +#. module: openapi +#: model:ir.model.constraint,message:openapi.constraint_openapi_access_create_context_context_model_name_uniq +msgid "There is already a context with the same name for this Model" +msgstr "Il existe déjà un contexte portant le même nom pour ce modèle" + +#. module: openapi +#: model:ir.model.constraint,message:openapi.constraint_openapi_access_namespace_model_uniq +msgid "There is already a record for this Model" +msgstr "Il y a déjà un enregistrement pour ce modèle" + +#. module: openapi +#: model:ir.model.fields,help:openapi.field_openapi_namespace__token +msgid "Token passed by a query string parameter to access the specification." +msgstr "" +"Jeton passé par un paramètre de chaîne de requête pour accéder à la " +"spécification." + +#. module: openapi +#: model:ir.model.fields,field_description:openapi.field_openapi_access__api_update +msgid "Update via API" +msgstr "Mettre à jour via API" + +#. module: openapi +#: model:res.groups,name:openapi.group_user +msgid "User" +msgstr "Utilisateur" + +#. module: openapi +#: model:ir.module.category,description:openapi.module_management +msgid "User access level for OpenAPI" +msgstr "Niveau d'accès utilisateur pour OpenAPI" + +#. module: openapi +#: model:ir.model,name:openapi.model_res_users +msgid "Users" +msgstr "Utilisateurs" + +#. module: openapi +#: code:addons/openapi/models/ir_exports.py:0 +#, python-format +msgid "You must delete the \"%s\" field or \"%s\" field" +msgstr "Vous devez supprimer le champ « %s » ou le champ « %s »" + +#. module: openapi +#: code:addons/openapi/models/openapi_access.py:0 +#, python-format +msgid "You must select at least one API method for \"%s\" model." +msgstr "Vous devez sélectionner au moins une méthode API pour le modèle \"%s\"." diff --git a/openapi/images/openapi-swagger.png b/openapi/images/openapi-swagger.png new file mode 100644 index 0000000000000000000000000000000000000000..8c684cbadc26771c9f4bf995a444ac628f3fa7f9 GIT binary patch literal 42816 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 QL%!zzoky~{xAb5AA73ZgegFUf literal 0 HcmV?d00001 diff --git a/openapi/models/__init__.py b/openapi/models/__init__.py new file mode 100644 index 00000000..f024137a --- /dev/null +++ b/openapi/models/__init__.py @@ -0,0 +1,7 @@ +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). +from . import openapi_log +from . import openapi_namespace +from . import ir_model +from . import openapi_access +from . import res_users +from . import ir_exports diff --git a/openapi/models/ir_exports.py b/openapi/models/ir_exports.py new file mode 100644 index 00000000..3ac77a00 --- /dev/null +++ b/openapi/models/ir_exports.py @@ -0,0 +1,33 @@ +# Copyright 2018 Ivan Yelizariev +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +from odoo import _, api, exceptions, models + + +class IrExports(models.Model): + _inherit = "ir.exports" + + @api.constrains("resource", "export_fields") + def _check_fields(self): + # this exports record used in openapi.access + if not self.env["openapi.access"].search_count( + ["|", ("read_one_id", "=", self.id), ("read_many_id", "=", self.id)] + ): + return True + + fields = self.export_fields.mapped("name") + for field in fields: + field_count = fields.count(field) + if field_count > 1: + self.export_fields.search( + [("name", "=", field)], limit=field_count - 1 + ).unlink() + + fields.sort() + for i in range(len(fields) - 1): + if fields[i + 1].startswith(fields[i]) and "/" in fields[i + 1].replace( + fields[i], "" + ): + raise exceptions.ValidationError( + _('You must delete the "%s" field or "%s" field') + % (fields[i], fields[i + 1]) + ) diff --git a/openapi/models/ir_model.py b/openapi/models/ir_model.py new file mode 100644 index 00000000..aa185757 --- /dev/null +++ b/openapi/models/ir_model.py @@ -0,0 +1,18 @@ +# Copyright 2018 Ivan Yelizariev +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +from odoo import fields, models + + +class IrModel(models.Model): + _inherit = "ir.model" + + api_access_ids = fields.One2many("openapi.access", "model_id", "Access via API") + api_accesses_count = fields.Integer( + compute="_compute_related_accesses_count", + string="Related openapi accesses count", + store=False, + ) + + def _compute_related_accesses_count(self): + for record in self: + record.api_accesses_count = len(record.api_access_ids) diff --git a/openapi/models/openapi_access.py b/openapi/models/openapi_access.py new file mode 100644 index 00000000..b26cc7e4 --- /dev/null +++ b/openapi/models/openapi_access.py @@ -0,0 +1,536 @@ +# Copyright 2018-2019 Ivan Yelizariev +# Copyright 2018 Rafis Bikbov +# Copyright 2021 Denis Mudarisov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +import collections +import inspect +import json +import types +import urllib.parse as urlparse +from inspect import getmro, isclass + +from odoo import _, api, exceptions, fields, models + +from odoo.addons.base_api.lib.pinguin import transform_strfields_to_dict + +from ..controllers import pinguin + +PARAM_ID = { + "name": "id", + "in": "path", + "description": "Record ID", + "required": True, + "type": "integer", + "format": "int64", +} + + +class Access(models.Model): + _name = "openapi.access" + _description = "Access via API " + + active = fields.Boolean("Active", default=True) + namespace_id = fields.Many2one("openapi.namespace", "Integration", required=True) + model_id = fields.Many2one("ir.model", "Model", required=True, ondelete="cascade") + model = fields.Char("Model Name", related="model_id.model") + api_create = fields.Boolean("Create via API", default=False) + api_read = fields.Boolean("Read via API", default=False) + api_update = fields.Boolean("Update via API", default=False) + api_delete = fields.Boolean("Delete via API", default=False) + # Options for Public methods: + # * all forbidden + # * all allowed + # * some are allowed + api_public_methods = fields.Boolean( + "Call Public methods via API", + default=False, + ) + public_methods = fields.Text( + "Restric Public methods", + help="Allowed public methods besides basic ones.\n" + "Public methods are ones that don't start with underscore).\n" + "Format: one method per line.\n" + "When empty -- all public methods are allowed", + ) + # Options for Private methods + # * all forbidden + # * some are allowed + private_methods = fields.Text( + "Allow Private methods", + help="Allowed private methods. " + "Private methods are ones that start with underscore. " + "Format: one method per line. " + "When empty -- private methods are not allowed", + ) + read_one_id = fields.Many2one( + "ir.exports", + "Read One Fields", + help="Fields to return on reading one record, on creating a record", + domain="[('resource', '=', model)]", + ) + read_many_id = fields.Many2one( + "ir.exports", + "Read Many Fields", + help="Fields to return on reading via non one-record endpoint", + domain="[('resource', '=', model)]", + ) + create_context_ids = fields.Many2many( + "openapi.access.create.context", + string="Creation Context Presets", + help="Can be used to pass default values or custom context", + domain="[('model_id', '=', model_id)]", + ) + + _sql_constraints = [ + ( + "namespace_model_uniq", + "unique (namespace_id, model_id)", + "There is already a record for this Model", + ) + ] + + @api.model + def _get_method_list(self): + return { + m[0] for m in getmembers(self.env[self.model], predicate=inspect.ismethod) + } + + @api.constrains("public_methods") + def _check_public_methods(self): + for access in self: + if not access.public_methods: + continue + for line in access.public_methods.split("\n"): + if not line: + continue + if line.startswith("_"): + raise exceptions.ValidationError( + _( + 'Private method (starting with "_" listed in public methods whitelist)' + ) + ) + if line not in self._get_method_list(): + raise exceptions.ValidationError( + _("Method %r is not part of the model's method list:\n %r") + % (line, self._get_method_list()) + ) + + @api.constrains("private_methods") + def _check_private_methods(self): + for access in self: + if not access.private_methods: + continue + for line in access.private_methods.split("\n"): + if not line: + continue + if not line.startswith("_"): + raise exceptions.ValidationError( + _( + 'Public method (not starting with "_" listed in private methods whitelist' + ) + ) + if line not in self._get_method_list(): + raise exceptions.ValidationError( + _("Method %r is not part of the model's method list:\n %r") + % (line, self._get_method_list()) + ) + + @api.constrains("api_create", "api_read", "api_update", "api_delete") + def _check_methods(self): + for record in self: + methods = [ + record.api_create, + record.api_read, + record.api_update, + record.api_delete, + record.api_public_methods, + ] + methods += (record.public_methods or "").split("\n") + methods += (record.private_methods or "").split("\n") + if all(not m for m in methods): + raise exceptions.ValidationError( + _('You must select at least one API method for "%s" model.') + % record.model + ) + + def name_get(self): + return [ + (record.id, "{}/{}".format(record.namespace_id.name, record.model)) + for record in self + ] + + def get_OAS_paths_part(self): + model_name = self.model + read_many_path = "/%s" % model_name + read_one_path = "%s/{id}" % read_many_path + patch_one_path = read_one_path + "/call/{method_name}" + patch_model_path = read_many_path + "/call/{method_name}" + patch_many_path = read_many_path + "/call/{method_name}/{ids}" + + read_many_definition_ref = "#/definitions/%s" % pinguin.get_definition_name( + self.model, "", "read_many" + ) + read_one_definition_ref = "#/definitions/%s" % pinguin.get_definition_name( + self.model, "", "read_one" + ) + patch_definition_ref = "#/definitions/%s" % pinguin.get_definition_name( + self.model, "", "patch" + ) + + capitalized_model_name = "".join( + [s.capitalize() for s in model_name.split(".")] + ) + + paths_object = collections.OrderedDict( + [ + (read_many_path, {}), + (read_one_path, {}), + (patch_model_path, {}), + (patch_many_path, {}), + (patch_one_path, {}), + ] + ) + + if self.api_create: + paths_object[read_many_path]["post"] = { + "summary": "Add a new %s object to the store" % model_name, + "description": "", + "operationId": "add%s" % capitalized_model_name, + "consumes": ["application/json"], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "%s object that needs to be added to the store" + % model_name, + "required": True, + "schema": { + "$ref": "#/definitions/%s" + % pinguin.get_definition_name(self.model) + }, + } + ], + "responses": { + "201": { + "description": "successful create", + "schema": {"$ref": "#/definitions/%s-read_one" % model_name}, + }, + }, + } + + if self.api_read: + paths_object[read_many_path]["get"] = { + "summary": "Get all %s objects" % model_name, + "description": "Returns all %s objects" % model_name, + "operationId": "getAll%s" % capitalized_model_name, + "produces": ["application/json"], + "responses": { + "200": { + "description": "A list of %s." % model_name, + "schema": { + "type": "array", + "items": {"$ref": read_many_definition_ref}, + }, + } + }, + } + + paths_object[read_one_path]["get"] = { + "summary": "Get %s by ID" % model_name, + "description": "Returns a single %s" % model_name, + "operationId": "get%sById" % capitalized_model_name, + "produces": ["application/json"], + "parameters": [PARAM_ID], + "responses": { + "200": { + "description": "successful operation", + "schema": {"$ref": read_one_definition_ref}, + }, + "404": {"description": "%s not found" % model_name}, + }, + } + + if self.api_update: + paths_object[read_one_path]["put"] = { + "summary": "Update %s by ID" % model_name, + "description": "", + "operationId": "update%sById" % capitalized_model_name, + "consumes": ["application/json"], + "parameters": [ + PARAM_ID, + { + "in": "body", + "name": "body", + "description": "Updated %s object" % model_name, + "required": True, + "schema": { + "$ref": "#/definitions/%s" + % pinguin.get_definition_name(self.model) + }, + }, + ], + "responses": { + "204": {"description": "successful update"}, + "404": {"description": "%s not found" % model_name}, + }, + } + + if self.api_delete: + paths_object[read_one_path]["delete"] = { + "summary": "Delete %s by ID" % model_name, + "description": "", + "operationId": "delete%s" % capitalized_model_name, + "produces": ["application/json"], + "parameters": [PARAM_ID], + "responses": { + "204": {"description": "successful delete"}, + "404": {"description": "%s not found" % model_name}, + }, + } + + if self.api_public_methods or self.public_methods or self.private_methods: + allowed_methods = [] + if self.api_public_methods: + allowed_methods += [ + m for m in self._get_method_list() if not m.startswith("_") + ] + elif self.public_methods: + allowed_methods += [m for m in self.public_methods.split("\n") if m] + if self.private_methods: + allowed_methods += [m for m in self.private_methods.split("\n") if m] + + allowed_methods = list(set(allowed_methods)) + + PARAM_METHOD_NAME = { + "name": "method_name", + "in": "path", + "description": "Method Name", + "required": True, + "type": "string", + "enum": allowed_methods, + } + PARAM_BODY = { + "in": "body", + "name": "body", + "description": "Parameters for calling the method on a recordset", + "schema": {"$ref": patch_definition_ref}, + } + RESPONSES = { + "200": {"description": "successful patch"}, + "403": { + "description": "Requested model method is not allowed", + "schema": {"$ref": "#/definitions/ErrorResponse"}, + }, + } + + paths_object[patch_one_path]["patch"] = { + "summary": "Patch %s by single ID" % model_name, + "description": "Call model method for single record.", + "operationId": "callMethodFor%sSingleRecord" % capitalized_model_name, + "consumes": ["application/json"], + "produces": ["application/json"], + "parameters": [PARAM_ID, PARAM_METHOD_NAME, PARAM_BODY], + "responses": RESPONSES, + } + + paths_object[patch_model_path]["patch"] = { + "summary": "Patch %s" % model_name, + "description": "Call model method on model", + "operationId": "callMethodFor%sModel" % capitalized_model_name, + "consumes": ["application/json"], + "produces": ["application/json"], + "parameters": [PARAM_METHOD_NAME, PARAM_BODY], + "responses": RESPONSES, + } + + paths_object[patch_many_path]["patch"] = { + "summary": "Patch %s by some IDs" % model_name, + "description": "Call model method for recordset.", + "operationId": "callMethodFor%sRecordset" % capitalized_model_name, + "consumes": ["application/json"], + "produces": ["application/json"], + "parameters": [ + { + "name": "ids", + "in": "path", + "description": "Comma-separated Record IDS", + "required": True, + "type": "string", + }, + PARAM_METHOD_NAME, + PARAM_BODY, + ], + "responses": RESPONSES, + } + + paths_object = {k: v for k, v in paths_object.items() if v} + for _path_item_key, path_item_value in paths_object.items(): + for path_method in path_item_value.values(): + # add tag + path_method.update({"tags": [model_name]}) + + # add global responses + path_method["responses"].update( + { + 400: {"$ref": "#/responses/400"}, + 401: {"$ref": "#/responses/401"}, + 500: {"$ref": "#/responses/500"}, + } + ) + + return paths_object + + def get_OAS_definitions_part(self): + related_model = self.env[self.model] + export_fields_read_one = transform_strfields_to_dict( + self.read_one_id.export_fields.mapped("name") or ("id",) + ) + export_fields_read_many = transform_strfields_to_dict( + self.read_many_id.export_fields.mapped("name") or ("id",) + ) + definitions = {} + definitions.update( + pinguin.get_OAS_definitions_part( + related_model, export_fields_read_one, definition_postfix="read_one" + ) + ) + definitions.update( + pinguin.get_OAS_definitions_part( + related_model, export_fields_read_many, definition_postfix="read_many" + ) + ) + if self.api_create or self.api_update: + all_fields = transform_strfields_to_dict(related_model._fields) + definitions.update( + pinguin.get_OAS_definitions_part(related_model, all_fields) + ) + + if self.api_public_methods or self.private_methods: + definitions.update( + { + pinguin.get_definition_name(self.model, "", "patch"): { + "type": "object", + "example": { + "args": [], + "kwargs": { + "body": "Message is posted via API by calling message_post method", + "subject": "Test API", + }, + "context": {}, + }, + } + } + ) + return definitions + + def get_OAS_part(self): + self = self.sudo() + return { + "definitions": self.get_OAS_definitions_part(), + "paths": self.get_OAS_paths_part(), + "tag": { + "name": "%s" % self.model, + "description": "Everything about %s" % self.model, + }, + } + + +class AccessCreateContext(models.Model): + _name = "openapi.access.create.context" + _description = "Context on creating via API " + + name = fields.Char("Name", required=True) + description = fields.Char("Description") + model_id = fields.Many2one("ir.model", "Model", required=True, ondelete="cascade") + context = fields.Text("Context", required=True) + + _sql_constraints = [ + ( + "context_model_name_uniq", + "unique (name, model_id)", + "There is already a context with the same name for this Model", + ) + ] + + @api.model + def _fix_name(self, vals): + if "name" in vals: + vals["name"] = urlparse.quote_plus(vals["name"].lower()) + return vals + + @api.model_create_multi + def create(self, vals): + for val in vals: + val = self._fix_name(val) + return super(AccessCreateContext, self).create(vals) + + def write(self, vals): + vals = self._fix_name(vals) + return super(AccessCreateContext, self).write(vals) + + @api.constrains("context") + def _check_context(self): + Model = self.env[self.model_id.model] + fields = Model.fields_get() + for record in self: + try: + data = json.loads(record.context) + except ValueError as e: + raise exceptions.ValidationError(_("Context must be jsonable.")) from e + + for k, _v in data.items(): + if k.startswith("default_") and k[8:] not in fields: + raise exceptions.ValidationError( + _('The model "%s" has no such field: "%s".') % (Model, k[8:]) + ) + + +def getmembers(obj, predicate=None): + # This is copy-pasted method from inspect lib with updates marked as NEW + """Return all members of an object as (name, value) pairs sorted by name. + Optionally, only return members that satisfy a given predicate.""" + if isclass(obj): + mro = (obj,) + getmro(obj) + else: + mro = () + results = [] + processed = set() + names = dir(obj) + # :dd any DynamicClassAttributes to the list of names if object is a class; + # this may result in duplicate entries if, for example, a virtual + # attribute with the same name as a DynamicClassAttribute exists + try: + for base in obj.__bases__: + for k, v in base.__dict__.items(): + if isinstance(v, types.DynamicClassAttribute): + names.append(k) + except AttributeError: + pass + for key in names: + if key == "_cache": + # NEW + # trying to read this key will return error in odoo 11.0+ + # AssertionError: Unexpected RecordCache(res.partner()) + continue + # First try to get the value via getattr. Some descriptors don't + # like calling their __get__ (see bug #1785), so fall back to + # looking in the __dict__. + try: + value = getattr(obj, key) + # handle the duplicate key + if key in processed: + raise AttributeError + except AttributeError: + for base in mro: + if key in base.__dict__: + value = base.__dict__[key] + break + else: + # could be a (currently) missing slot member, or a buggy + # __dir__; discard and move on + continue + if not predicate or predicate(value): + results.append((key, value)) + processed.add(key) + results.sort(key=lambda pair: pair[0]) + return results diff --git a/openapi/models/openapi_log.py b/openapi/models/openapi_log.py new file mode 100644 index 00000000..3017a796 --- /dev/null +++ b/openapi/models/openapi_log.py @@ -0,0 +1,16 @@ +# Copyright 2018 Ivan Yelizariev +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +from odoo import fields, models + + +class Log(models.Model): + _name = "openapi.log" + _order = "id desc" + _description = "OpenAPI logs" + + namespace_id = fields.Many2one("openapi.namespace", "Integration") + request = fields.Char("Request") + request_data = fields.Text("Request Data") + response_data = fields.Text("Response Data") + # create_uid -- auto field + # create_date -- auto field diff --git a/openapi/models/openapi_namespace.py b/openapi/models/openapi_namespace.py new file mode 100644 index 00000000..63a570cd --- /dev/null +++ b/openapi/models/openapi_namespace.py @@ -0,0 +1,265 @@ +# Copyright 2018-2019 Ivan Yelizariev +# Copyright 2018 Rafis Bikbov +# Copyright 2019 Yan Chirino +# Copyright 2020 Anvar Kildebekov +# Copyright 2021 Denis Mudarisov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +import collections +import urllib.parse as urlparse +import uuid + +from odoo import api, fields, models + +from odoo.addons.base_api.lib import pinguin + + +class Namespace(models.Model): + _name = "openapi.namespace" + _description = "Integration" + + active = fields.Boolean("Active", default=True) + name = fields.Char( + "Name", + required=True, + help="""Integration name, e.g. ebay, amazon, magento, etc. + The name is used in api endpoint""", + ) + description = fields.Char("Description") + log_ids = fields.One2many("openapi.log", "namespace_id", string="Logs") + log_count = fields.Integer("Log count", compute="_compute_log_count") + log_request = fields.Selection( + [("disabled", "Disabled"), ("info", "Short"), ("debug", "Full")], + "Log Requests", + default="disabled", + ) + + log_response = fields.Selection( + [("disabled", "Disabled"), ("error", "Errors only"), ("debug", "Full")], + "Log Responses", + default="error", + ) + + last_log_date = fields.Datetime(compute="_compute_last_used", string="Latest usage") + + access_ids = fields.One2many( + "openapi.access", + "namespace_id", + string="Accesses", + context={"active_test": False}, + ) + user_ids = fields.Many2many( + "res.users", string="Allowed Users", default=lambda self: self.env.user + ) + + token = fields.Char( + "Identification token", + default=lambda self: str(uuid.uuid4()), + readonly=True, + required=True, + copy=False, + help="Token passed by a query string parameter to access the specification.", + ) + spec_url = fields.Char("Specification Link", compute="_compute_spec_url") + + _sql_constraints = [ + ( + "name_uniq", + "unique (name)", + "A namespace already exists with this name. Namespace's name must be unique!", + ) + ] + + def name_get(self): + return [ + ( + record.id, + "/api/v1/%s%s" + % ( + record.name, + " (%s)" % record.description if record.description else "", + ), + ) + for record in self + ] + + @api.model + def _fix_name(self, vals): + if "name" in vals: + vals["name"] = urlparse.quote_plus(vals["name"].lower()) + return vals + + @api.model_create_multi + def create(self, vals): + for val in vals: + val = self._fix_name(val) + return super(Namespace, self).create(vals) + + def write(self, vals): + vals = self._fix_name(vals) + return super(Namespace, self).write(vals) + + def get_OAS(self): + current_host = self.env["ir.config_parameter"].sudo().get_param("web.base.url") + parsed_current_host = urlparse.urlparse(current_host) + + report_parameters = [ + { + "name": "report_external_id", + "in": "path", + "description": "Report xml id or report name", + "required": True, + "type": "string", + }, + { + "name": "docids", + "in": "path", + "description": "One identifier or several identifiers separated by commas", + "required": True, + "type": "string", + }, + ] + spec = collections.OrderedDict( + [ + ("swagger", "2.0"), + ("info", {"title": self.name, "version": self.write_date}), + ("host", parsed_current_host.netloc), + ("basePath", "/api/v1/%s" % self.name), + ("schemes", [parsed_current_host.scheme]), + ( + "consumes", + ["multipart/form-data", "application/x-www-form-urlencoded"], + ), + ("produces", ["application/json"]), + ( + "paths", + { + "/report/pdf/{report_external_id}/{docids}": { + "get": { + "summary": "Get PDF report file for %s namespace" + % self.name, + "description": "Returns PDF report file for %s namespace" + % self.name, + "operationId": "getPdfReportFileFor%sNamespace" + % self.name.capitalize(), + "produces": ["application/pdf"], + "responses": { + "200": { + "description": "A PDF report file for %s namespace." + % self.name, + "schema": {"type": "file"}, + } + }, + "parameters": report_parameters, + "tags": ["report"], + } + }, + "/report/html/{report_external_id}/{docids}": { + "get": { + "summary": "Get HTML report file for %s namespace" + % self.name, + "description": "Returns HTML report file for %s namespace" + % self.name, + "operationId": "getHtmlReportFileFor%sNamespace" + % self.name.capitalize(), + "produces": ["application/pdf"], + "responses": { + "200": { + "description": "A HTML report file for %s namespace." + % self.name, + "schema": {"type": "file"}, + } + }, + "parameters": report_parameters, + "tags": ["report"], + } + }, + }, + ), + ( + "definitions", + { + "ErrorResponse": { + "type": "object", + "required": ["error", "error_descrip"], + "properties": { + "error": {"type": "string"}, + "error_descrip": {"type": "string"}, + }, + }, + }, + ), + ( + "responses", + { + "400": { + "description": "Invalid Data", + "schema": {"$ref": "#/definitions/ErrorResponse"}, + }, + "401": { + "description": "Authentication information is missing or invalid", + "schema": {"$ref": "#/definitions/ErrorResponse"}, + }, + "500": { + "description": "Server Error", + "schema": {"$ref": "#/definitions/ErrorResponse"}, + }, + }, + ), + ("securityDefinitions", {"basicAuth": {"type": "basic"}}), + ("security", [{"basicAuth": []}]), + ("tags", []), + ] + ) + + for openapi_access in self.access_ids.filtered("active"): + OAS_part_for_model = openapi_access.get_OAS_part() + spec["tags"].append(OAS_part_for_model["tag"]) + del OAS_part_for_model["tag"] + pinguin.update(spec, OAS_part_for_model) + + return spec + + @api.depends("name", "token") + def _compute_spec_url(self): + base_url = self.env["ir.config_parameter"].sudo().get_param("web.base.url") + for record in self: + record.spec_url = "{}/api/v1/{}/swagger.json?token={}&db={}".format( + base_url, + record.name, + record.token, + self._cr.dbname, + ) + + def reset_token(self): + for record in self: + token = str(uuid.uuid4()) + while self.search([("token", "=", token)]).exists(): + token = str(uuid.uuid4()) + record.write({"token": token}) + + def action_show_logs(self): + return { + "name": "Logs", + "view_mode": "tree,form", + "res_model": "openapi.log", + "type": "ir.actions.act_window", + "domain": [["namespace_id", "=", self.id]], + } + + def _compute_last_used(self): + for s in self: + s.last_log_date = ( + s.env["openapi.log"] + .search( + [("namespace_id", "=", s.id), ("create_date", "!=", False)], + limit=1, + order="id desc", + ) + .create_date + ) + + def _compute_log_count(self): + self._cr.execute( + "SELECT COUNT(*) FROM openapi_log WHERE namespace_id=(%s);", [str(self.id)] + ) + self.log_count = self._cr.dictfetchone()["count"] diff --git a/openapi/models/res_users.py b/openapi/models/res_users.py new file mode 100644 index 00000000..a197025a --- /dev/null +++ b/openapi/models/res_users.py @@ -0,0 +1,33 @@ +# Copyright 2018-2019 Ivan Yelizariev +# Copyright 2018 Rafis Bikbov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +import uuid + +from odoo import api, fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + namespace_ids = fields.Many2many("openapi.namespace", string="Allowed Integrations") + openapi_token = fields.Char( + "OpenAPI Token", + default=lambda self: self._get_unique_openapi_token(), + required=True, + copy=False, + help="Authentication token for access to API (/api).", + ) + + def reset_openapi_token(self): + for record in self: + record.write({"openapi_token": self._get_unique_openapi_token()}) + + def _get_unique_openapi_token(self): + openapi_token = str(uuid.uuid4()) + while self.search_count([("openapi_token", "=", openapi_token)]): + openapi_token = str(uuid.uuid4()) + return openapi_token + + @api.model + def reset_all_openapi_tokens(self): + self.search([]).reset_openapi_token() diff --git a/openapi/security/ir.model.access.csv b/openapi/security/ir.model.access.csv new file mode 100644 index 00000000..b1cb50a9 --- /dev/null +++ b/openapi/security/ir.model.access.csv @@ -0,0 +1,9 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +user_access_openapi_log,access_openapi_log,model_openapi_log,openapi.group_user,1,0,1,0 +user_access_openapi_namespace,access_openapi_namespace,model_openapi_namespace,openapi.group_user,1,0,0,0 +user_access_openapi_access,access_openapi_access,model_openapi_access,openapi.group_user,1,0,0,0 +user_access_openapi_access_create_context,access_openapi_access_create_context,model_openapi_access_create_context,openapi.group_user,1,0,0,0 +manager_access_openapi_log,access_openapi_log,model_openapi_log,openapi.group_manager,1,1,1,1 +manager_access_openapi_namespace,access_openapi_namespace,model_openapi_namespace,openapi.group_manager,1,1,1,1 +manager_access_openapi_access,access_openapi_access,model_openapi_access,openapi.group_manager,1,1,1,1 +manager_access_openapi_access_create_context,access_openapi_access_create_context,model_openapi_access_create_context,openapi.group_manager,1,1,1,1 diff --git a/openapi/security/openapi_security.xml b/openapi/security/openapi_security.xml new file mode 100644 index 00000000..bc87ba10 --- /dev/null +++ b/openapi/security/openapi_security.xml @@ -0,0 +1,23 @@ + + + + OpenAPI + User access level for OpenAPI + 4 + + + User + + + + + Manager + + + + + diff --git a/openapi/security/res_users_token.xml b/openapi/security/res_users_token.xml new file mode 100644 index 00000000..72b0d3e4 --- /dev/null +++ b/openapi/security/res_users_token.xml @@ -0,0 +1,5 @@ + + + + diff --git a/openapi/static/description/aws.png b/openapi/static/description/aws.png new file mode 100644 index 0000000000000000000000000000000000000000..362198c0fcde8cef630d69ed5e93181cd0417ef3 GIT binary patch literal 9294 zcmdUTMN}LNtnM(lQ{1h%4DK?xyB4?N?oe!SmqKwb?pj<1Z*eK^QYh|LWbS`=Z+&+! zo8;u2B;U#6i^OWE$z!6Cq5%K^OhpA5EdT)iKNGGI<$o13+RY9CfW}}iEv;d1hDi>gX&JM$h#6ekq>f^dkP!poN5UOi`+@No<2eJPsJbSV5;{!O@f{We!6?#306$ zwUot2htq@$kO+g|hHE-iewJHO3iS8C{PX8=Ol*72_R{llHDLP(2tdaH260ei0I3rh zcaQ_RW7iwo`9^{S_~LYvIcc(dpE0?@&UrTY(q30ovABH0OI`d4lIqA zHJsx=u=v-w{EYGRd!ipI4pF#=9}GTd?`scZlnhT2(KA{4b1{ON=WGjQeQi&J-ry>9kg zwhRZ&!dtX?q-uLY0|>XlQHNY&=PuCz=wyQ&sh;-4d9QouP!ULc%FBg>gcyvmCS;6f zx9`Ce?@@hzg|SZ^+Y{2h`*fUwnL|Bi-G?uC#)E&CHAdg2NO zVyWYQ0OfFlI5dB|Q0B7kl;8d}-U@Np17p0T5gr-RDZMdDB=W&&!RtU?H;^^(X(cSN z;(Us>Uk;JDXUrDJJvf&IdfcdsV41*v(^{D*n}d6Ri%?(AA=A6oe|!~>H9xf|J=k2glB zaS^c*?FdGeX)@_D-NUM}N2z{_&Wg6bbW>K{9ns;VrU+0)3| zdhm&|wZ}@f>85?nWzqS5Zf!Kjb<=Xm)X|-ZQdOj6S-WvZs;%fzvd3>=!`_+Y7uUVQ*tU1d*P;h z(maOz`~0;0WFfFGm*;MGYiE!956{h=FI$-Iw_dDnr@oo)*q#kuAqT~~U;oaXah=-# z>72gpAzGVQc1&K5X^#__=$;E$8XL6@S5M~nB{1AR|JYO*O10fELG|!>y?qKZ?|kss zx=8}y>`*ic>{t}JnA_|;N@f*7i>iwl2Mz~L!vmz5XqsqLX&R(Wq~fJ7qmLs|hq{L7 zhpYz4hPGuoWWUKI$mPhn#Pm>>5sxIEB#g>M%L~ZN)VY~8xsJ#r=&A%yUMX#+*XWy? zly$IpFJ^!G^~vV!m!OxijIs6xvJIdmNr>o@!i)ku;bDDlD`q9qq`bO7j;w}i%RN9- zOlQF|N8|3g=ap)uWiXGioNn|h=<8X!aoQ^bJ@p@jaVZBG2S-v6JLnu=Jt}kXR8e2m zEMGj!BI|1*SB`yVCx>Uo<%H|cux33QZ?wwqg;nCk1#Y=+Yyk#7x)1AlS9xhQW%{>z zk9Az1T0Ex?43mGDHAvT4)t#C)^aW4+Yr>o+a}bas+ZXV0o!|J@Zg1IgbXa19Vx-mf zn&OyYl=|Y}IJ{IZn%*zb5CSMM75E)I<+p=Gv+=shkKm*gML5Y?XfL$UKw4<>^y$c z_s3*&tqs_s-wkHhY36SmsW);Fhn=pNF0BjFty>&l6sg%JH>c|GpFK8LPE=C0n0k@k zkoI*Db6h|5IvK~Z!m_0b)}k`qe&O3c9Yq?68jMPo_mh`PMxr{mZ?$)F(sE&OiOP+f zS{SoT+I$*4&z&aR&sftlbli1!GxmEuZg=0tD!dY#3rclw{v&dJS-sBWjCii`lJl^d zRGKt5T{%6VEnd;peb&9!C-D6K)Bb)z*Y@)aej$C{lt{Om%Xw$#Eyc8 zgzIMSyr8JyUAZr_-uR&-uxYvTaf2Y5wW49oM9e$Uy>7qj{{BI{rmu~vHrVd8{lb;1 zk>qcWML>z8+wsn7Zju1UhDW#ebKB$jsq{oNQuI*NWx{Ym!j{E$c319~$C2K%fZIm_ zumqUNkLkYg?CVWQ7u9`;6U7foF`h&IrANVo>o@nMr)I=xz_`zwgmb;n7nfro}$M^+~pq8&KcpOh0gu(1zs;+K+vQFr4dWL!? zn^yD|glJ#s?Viv1CiwPVe%w-@J_>{eGr=lhO{Zy>70BrJ=;-}$j}f;oOlwmf|1FMc z8Y()nFc{1`FzW99zNE6AT}WO<*HT1I`y+=qEF19l^0cwFb9{2v(KBFX=Q%MwAD@~7 zyW5AAkihD=U?;y|9m=rn2H1clY&jb?8x8yE^|c>n1OSl4D#}Re_^qAguln4wU_^#z zXOL{eoM&Vg76xz?hL0~>U%Fk+zA4y6tz-U&>w8rQ~Qo)V1N#zV1A8 zY~`$E&;Ey^=Ef*^gI!=<^SRk^`dG}n;=gq7-ZjXS#mJ5 zSpIH?cTWxWpSG#-2{JxMO})p>=*@1VeS0kIOsJD60qdu~Slvvj)evxN(O9)wZ8O%g zCowDJ_Cl<>+1_0HZ~RJFCo5{FWxOx$O`c(fhg^XYEty??f=GHhYl?-Glz1>=D~yt$ zdUv&E2UnFdLUJ$MHvc*x-R&$IBKk)+14Ha<4CAAag9E|3xxj_Nej{6@xCJq5j`z96 z<5@_JF!(4YB!O$G^sX~nZS2EP|C-%_qb((V7PVkuqihG3L3ink)n05PDfG)_4yWJI z$gIDrV1DPPoL~iU>qPQB2j%un3->043%Y9uH9Vz?FVkzE6xQz*#NQK;8n0_; zQ5s7Gb?{U;g^E^q52gBfaoSHcH-4evVDA6+T(1oE%gBTOy76);UVdYye{PT7#)t7pfWZ-+>-`jh)eGtUh!ihpn6qWo2FEyi^)4fmPSHYJ8M9|1vf|c5B-vsvBDavfKig zeoTF+;!WzdQox&~oY;A!@0Qjm`|>ka-j)7+si5zZG86Qk0Qw9fKirCX8z?m^B*{np zPIR#l(bG6T-k~*i#_kBfKYufN`O7PS)9%O$sp)0@!XwW<_*pIWbl@8z+--Rx^}0no zul!IOhryx{;Ic)oUUH*;OrBMSQ#K$){8~Y=n>>a zp5`HW@lsvmbNm^x0WG{!)mR4=M~6)&ZW#X{3GukpE-TA$g6tI*UmhA4aB!7`%R7~A z%=JkNbp=t(o>ta!a)}FvnQ>}6+_9zX+{dVG+DV{F^K1`y+nVV2XIc6mw5l}OJT@Ey zuKHB-UB* zGx9)!sUpFOh>2Xa$HkIXeFwcDN<^|_PP!5R3LHeC^zWe=DBHkRe0I*u>!dXOnWoqD zWR+)&6e|E};p$r<=TTshfyY}`w|nH5rBx#h@fip+6_SY@l`UM)mRvWWFT$(atQ#DWne;FuEreID9(+uOur z+;Y030r2cCQi+G6zhZt%9Fi5Y_q#K`*qn&qBf%V*)$TL?kOYovWk`4ovqm&Wv(@z+ z+6rhMt8C_NHJYiK+#yDDErv7Kh2wXZK4e3np1CJQfICmP^ao49%K_L}Abks4jhzLh z)y%#oh?af4Ig!{`CLWN0ff|LMsu2TV?n>j0A|z=aVRe)va9bIyK4 zgc!R7U#B0#+;)7M%JiHX#5>dx%q|6h&e+U=eRwW{rTu;INT&=Aj*hEkNy;HK_9U8!VQ3yN*C>+q$8G3g}pFf38ic?ZU=)Jdm^H!I9J%$gN=17%g z7C|M5b7G1T$C34FI!Hy5AyNq^@gq@6yhbLF5YLgq7z+G>C$r3bZ_|ZFefn7;K7PMP z*6^=v8w@8z4=%?`@S16R``s>0bu^6wLyCi*ti2Z42;|s#E9`%p!G~OjCW&}>wgex6 z(45bkk?$U^t&!)5Dxo9x>R(~MOjt}lp*Ai^6vtYkmgGr`v!xoCAdmc5+cE0^vk!+9 z0TiD|cz)pK9{91{B#A9PV+B;j2Wwzlh1Zk6iz~h}qBSBK&{I#o`EbP0|6GVk0BL4t zzERuaV3>XD?R-+lhq$PTJ6#To_CRxm3GvUuDQDMxx6Y~wDv8NDDq)xV{hEMXzc>QA z=UB#cdv5P76nV1x<}94S?C+T}E5|oW7;j5>K^ef=ilo3>rKllJ7}#DMU%Iar#J-x* z`lfZcN*%L)58Uy0*sptB&CoJrF8j3J&9xXEO#lH+1>bJPT4e3Fss8Thp+op2eiGss zB#G=+x_1wRD7JUsmY4RNBkKzu{ZS^>!cWTWKI6`Gl@~kH;|XWu&L6D5 z<`~Ds>@Wo2FtpUKpZj#5m(^q?~D2Xp}YyLNa z0UZSVo7U2i9?Oip@URepwnfn3+O`l8YLo--^qoic{+cbJCg2X z@)zBE62h=r(nQ8{qc}0(%hg3JiXSLs zg)`wlla;+KAIrt!?!!Oy<&MnDUN4CxHV@nUG{ty9;juUys(4LSd{A=pt!oq5*FA znj`f^eV8&WKnL6C&;(>cCiK`o*_D51Tm5`qDNn;pY5#1Vg9bO)B6gj>2!TWuDGx(0 zdJ4ztSpoKC= zO>DuvjoJ^wdmy-Fly)4Tn`)VjuKz`Phn4xMfGV%M>qBwhR`R!!EP9`qFqqZl_)_kV zV)IXlD?f%_`t3MU4}G0b=~9}YJnhc6oqKGa4_RpvWPM3>-*-v@y>IfO+L`o^p9Q~t zUBi{B(T6iV0U{}wArKEf+pd!oe{T5}$QV$-_BZvM4ykuYS;0{OfzJL2ER zyC9Nv{PEvU>V&y>wUQDKZGx?l$T38Uf{4UEeBz|p9x&^1Q_%8XVe~mgQ%;P|32q6v z`Z7T2itaTRZsqQT7YW04feewYKgO+-LZ6(eobvR*C!&@lG|M0>Q%+6z-ra}YN#QeqnuXsPQ z4(BkNng+c_m%OU2$-bP&nEjKdT2!G{Zta!DrX73~?S7=Ho0tFt$9aY)W~FLKNiC1- zggtT4jEa=sZ{w~qTw`+{C5*;HmmXpVLj>XwJ~X9VKaO;6M7XFEsKt~W;XcG4!jxi| zmPv_JeH>Oh$g3Gydc|lPPLr$C=PZ)TE*3?nLC*BRf#{%@QPW*cmKcxj3EN04#^pTd z9(sj}6LPuHDfl#Snu6<36!^6=7jv+}Zu2yzCeFzlT-N)x>e;+Q>u@Sm;DvITqW6`O zb{X6|C2|^0txr5I7Wu{-;@8YWhgx zBKbbu8$H?Gwo2Ws=M$rC(PT~o@$NWY70HkDtozq(d_o3fPIbiir`{hwu#UN+p3LY5 zXfhu#uD64ZU+{zso(`HAS9TBma@9u|$oz_VvfxJYg&fCZ^y zJf}KsPs5C&HR+a#@3>Tr84NC0)_?oF@C-rWKBZ=Oa575Fm*00K|NW#}36JW68=;tu zzvI)LJ~AtAh7tHQb5i^B@r7y!g^lOX!!CC$c^#`SdfvoD;)9&qI^dU14e-C4)5w(0 zU|pcf;7NZQxdgz78V(CO>rzBj%0>isoygl#c+Y@-U7N9H~sdEaI|M=!nf z;Jr{9k;3~XPTCzT+9`p#BLjj`$o3a0yMT(!o|)^d&Sa^PT1x@BnwGfKAVGp8<33h{ z7)uJq@OaJ)5!7Lb>30A;?M{cp3HLV>BRh0&?f^$Vwq?RYetcxq27rGwu7nrJ{Ac(I zjN>%S`0C(01R!hv zJeGLIq-sFTHW>jSk@cV*d@fqYk&F*1(!_5Y_x#5ao&@WpXxY zJ*4F|@AIMqT|fa`&O`ccxgFX*REdzL`Gxo!DJ^*>EOp&DDl=j!uG4J~1>?LG$Rg%B zn>6h#gf#3E8ntcTjTUPBOZu8y^6y+lbgD}=ySe#P@?AZG!Sfm@+t$Gn(K>SO!zysI zRZh{h$B{Z|6sM3+j~!C3+$^S&cW1Cy1OI3C09IP`GU;NMsZT*lQ!2jLvbmE zf5@M6al~HJc{iQo6xXm%F=72JR*Hp#{|e_ZTfx3feC{tN$ z7kt?_u5z0xd7v1ep6S(CE$;2>myb-jd{oz_&@wh~VPyCfj3qQ{AR01}70kY24I`40 zLWJB}<+Uk<=;{*a&O)pznWMXd((fkf=FN0|jcdFmc42Sxfw_XH02uG(qpLIBqdETOI*SwI~f8vK~3*H_4Hd=KgEo99P- zlwnp`0wjE@gFkI2$rXg842-xB@Q8v;dTIE7GK+R<(U6&-yQC5X-*@c}sL-yG)a7g| zp*{h$|ILThK9Z1wTBk51gxIQgQo`{p94Y29o3d{>PCvx3xS*0|=f9jZ=_2?I@%~k` zWOEfCDk_U75$=Dih~(E~g0AxdOwCJxc80nH)>5j59u>?S+)A>V$bKzIlTpj^0mJ-q zzvQJ}N4sL^z2lUw+zXw#d%@#C*PxL90QHfX?l@mIV9bD};jkijzgSd4C3m8Zmi;oM z!J(Z|L%dxFNp5ga%b9)|R?-&A1ktKllYV0ONS0d-a4mHlzF|audTnfT%ItCRMl#GHqG(cVsIuB>8sb#*ndhg88l z*rCmMpMvBB$`#ZYTkl+tfOm5!uFU*ip@;HqVC!{CFWP7oL15?eD<+xLv3ArE^OY0{ zn+NILInq`7QWngql};UvvltC$y~3zWa{Ezb2Pq?~-&yRg1Sr}rU4nKM>{da6EEQfy zYEtR_yQ!MkEI#xrLgF4-m$Q(S(q8L&$#r2yhPY^Amm8hreuS6tos4Y+ye|nt@0my; zyfG#cJ}ahHdI_4j(~kV>55w!+v*+U9|N4PFrvY8AFIEfDW>0j=!?4Uv(f+vwDfT>h zVH393kiuc)7dYDV@FvcCJaO;haJZ2_2!Z^;+WbK~n_`UXX1WACdb75*!(9q=SN)lV z;2Ld9ujV&hUFMInfuw_3G#-pe2*ExBEYBpt=3e~~Q*1%4$%ztw;kzJsmDO=9LHEL3 zUnw&iBUS79%0tz!>jcO{ik$jtKT?*bwU(EsTIjcX zFH9>!2`%~IZ^Qx6EI;r|_d%7CJGc6$&jGSa7&I0jexHb%rov4yp4n2D7}3&s@zY05 z1L&hiUG~)pdMZfB3AJFdrGOgJ{Jm;ARB^k}&Uz5WzKNTZB{(&|f`h_X2~CFJ@)D8$ z_O=%>YcrBo(gkWcox-?{*ipq-(olgutAVo%9o z->MAyMdW!sgqS}Zz~VdEX9NDiOA*ahNrf_3q6Kbi6SW-f`_w)k)58w}W-ECoBHMyD8#CrHL1Lf*t-7OrkSqM5Osl zE)Tk|{Ulh@f1H;jgOHF{NyejfTUvGyC?Z1p`M_97Y>K6EBm^fUxv;bm{STVZ+;R;R zTnHt`Q<_R!O7#>^`ut(PVUm@G*y>x~L&X=<)PH!uZ~zVAN+rQJuF))WDHIxnm(d#Q zpoV+czb{NcbBvwICP1Ox{q7aG?DhW>MPvFSYxAHrW* z3=74!kdnGYF@Z%wc@AJ6EYQV2x{&IiQ&ao{DwiGUMA-5&(Q^m|PUNc@KXFGb*^1-q zrL_4KOqn&buK-JEae~mvvY}rm17f_ zWBILj5QRDAsBkn`#ILtl-AX@dG|3_8Q18Q&@1i`>F(ra_KU(|?-EWmpV<8kCHh&I% z^aH;6&=*;zek`T(Ba;)VYA=mu!T{qWvZjnhjq0eFze;$a(u$!!XsO9C<0+N&!o_5M zaIZHTjO|l*hn~UPULi){fbL&=S9~%@DiTon6e+zHgs;p*eBjoG)BeH-h`!NwO)#w1S0mMTeslali_wGH#~VZ6(ztVKSH1RC7d;xR4Sv^Bg1dZXIbu` z>(}h`2i1(%k}KoN4a_TTmy31>GUGl4r`*B)tIpyth@<{L-@eBeMbM+qVc@RrW%|eG zWyJrT=euR!I}PHfk{9hKLtJ~O*PU6YhF5LI8soRoFNVnxKe5o)jKjq2*_*DD>M}UH zBw!i`{IR;j;l`@O^kxnYsM3YlHobG>#4}Q5A&+@K+SFz|*3$-2b{QI6b&dy?!2$Wa z;r73Mq`>;yYl>HZt6yqj zQ{UJ6gWlKG0fADhyea{{#5oty0g zdkeT142}p5A_-R3se(H@LM!snkIZU0`g@%~WE`ppHyHKJ&zoL;>|Q@o2YuiD0^J-y zpzYhNSyxOUDK13(PI#Q;e-GIO;*v30WdYP#{_m-;{ee#ozEY_mpf)DuDA23X(3Kw@ zr2>SZVm`#GUpc(ZJDTf{3R}~u+HTTFk$9146QQFq8It`v{l{v5yzWqFbjqN*=6i4< zUld0yD%(_-xJh0!NnVrW=Y$1@WwMST`X|2s3!gmZr;wDyA05SvA`zNjcw^u7q6RD} zWm94|#`gKf0roFD`Ak>AlGVsfG9-sF9P=y2AIaqa*wZO*J&y6`a{(~9=m6UnOhATd zVu}e1wZ9xjr{ZCO?2wBXgQX)U`k*;j6xq58whwu>x^tqtVSJ(xGz)#J4cN{@1o)It z&7^Ou{VxoKUFY0&&d4t}I4tYe=F(}|g}BjrjKAZmX;eVL+q0vrFbrE# zyde58QUE>+w!Bp#Ilx@l;5p!5CLuzZ&S~X3i}40wb4wacA1)xbQ*!0><^80}oOpht ztN07G$c>sj)S|U$GbHpy*sWyEUID3Q9KkiT#h;d-y{9ptT-OxKM^C{%tbx(0#}La< zDBgmXQe)(yTx&0$8b}99JZ?M+`wGQil0NyJ&9af5e1fBh-$UbEWu0Rn7rNl}kf%U` z&(t0l87SE7vPP!$t{&`V_~{xGH?J6d`SgJks78v7KzTAZpmwqA{=M}Tl(g%K=1(=% zXt%0%LsEeK(<@mmZb9m}2^I$HF(IAGV0k>}e7iRer*O)t0`Sr*)m;_&| zGTQ!3E-s-58W&kE(j*}2P67F5xfSbu$D?@bw5qt{mC)hTw$!*hQMl!&%#4$b)A-JH z8jg-E4%{*ua1A13X9fOMTS0lR)(?w_l7wi}@yO4VA|mHss5sVpvBG@agQ8S;HC_t8 z0S@yv*88uxR#{`<#|{*{KE5)lH1JomN`ItSY`Nd#KdA`-Co%q*iM6I$w~;{K24<5x zT*uDNd?);^{L)7=85y?f`tRl|dsUnd#vBCeM1MXpQE2?Z1oz&Lcl$Xqkxt0c+#;2V zDoZP?+er)Be-bBkwz|wDF0EH-UIbp^t-SKTx?fhk&}qobla5`GCl z=vVE`*%5b&m0^ywNrU<#=1}y}S#|Lxj@@q8{(AL;qcJbKF~-!}w3 zK2%Ul%%O@@A-WiV6dNmNcs9dJ8k(zt5G=gA?W-_6l3y+|VfcX7=H|R!bvf2zy|i-% za>Z1EmbwbN@#Qwh$pT0j3*bf27!hA*=f&CN=w!4#j?fH7b;gfxRorj-Xmq~3eF6|> zDGR8rso4{FQIiY?rjWY*&d-2W{r>7U+)pCMP5eUqPb&f;Gez?NA`?-c8Xq)l|5~wC za99qlqA9O@q4RKG_ynDVA~VJXVp&pDeyf5CCE2XrDO+1@2)0abCVWx|j`U|pTJ~Bg zko%;L8d2Zh-)}ll)$?z6m6CA#hO!g|yv_ee_I6a(1xWB!80Cwi6lxY}XzsViS=^VaDr#on`QH8%=egj3m)776k zJ^B)Xpwa-1;$qoq>7|F0@?YNts9yx!Ki84@Zd6Sq^K;{M8}PlOV+Y-r!!)QVuq+%Q zn!}xy{qdSJlNO4fOp2+fVqcd%cfj0-*WTWKz>`}`LsXeJRM$Jq3+nfw?J zD*Qq^MeeU>l-Js~v$8pk;99~B5K!+EdlOEKvyZ@se}xb3^J8InO=W9!KWXEqnh{+N z6isdP@^Xo4LKe6L7*;$V>JUcJ9HLV`G4|ACFKum;*eY`epQwS)gYS2jyZpQ&R#x1p z5-2@qpV}-on&Ka4g6~{GHYKDX@g;VkuT%@ihQoy%Ru~|qtc)FMjCoBKN6~V3HQvlg zc4n(0=tW*}OheaFQIn470dnI_DbY(^eLt!#Wo{DUUB>xD&b2@)K5}p`l9FtAw_5F8 zZavCm!7IyY`6LK;ej(_oZOE8LD}x6ix>Vv!8{7s1UD`=^g`lx83=FGy#I&I;6(w8P zq>Ep*0JY5J=Ni%43*MN0@T4^kqf9}eusK%_W?*p^yfHgE)h^FvJ<6_N?xfy9bRi%w zv>=s3ULJC62O0RxlMbPy7%79Ed{r_>$-Q+fi0mqo8P`FY-IxJ7e0_bf%a@hoDAQC~ zc!TOmFPIghxgtn~6XTh)Uk4RJQPUqbb8~Yad2>fMHC`+5JalFC z7y_GHbIVPncpYm~SExj$#9sZ(mKL`+=Z=63zEg8kI?{rSQ9o&JDXu>-9Q^y8%W2^O zY3F~MYucJCH09>W{{uv|vku)M@P7#ldKI*buu}o?zAcKOl!Af@A5Vm)V zOo4XE<4>ilvq=eN$G@qVO!<{7iga?Q(hZ+R7F;Q78r35Ya|g$t-N7NO_I39=LrhTh z(NUft9##e|NY^4wKgADkHrHq>@J3l)4^o2|wcJhQ= zc!nhsD}MFa&+;2$JBUl~TY|<`;MTam{cfZp6cWus2CmZm1s&Q#SuO_blntI@^jzNS zh_Zt(XBHPvR=te_adf+>l_pIY3W7;3v8IzQfa z*R}r%rL%6r-Dz$z-pWFUz{a^+pB=R{Y8BO1tlyOgQDLuo7!deOUH9*MJ-yuw>h7z7 zr;7Lt6@NNj=ycY-Y%uuOg*=4Cx3N~Z1q_dDUNNW(=}I?#^Iy5N5;%;sZWO`lDbM(6 z$(0TnRA;lo+Boduf*)7n$Ry~DyhVj(mmOx_q3?=%(0cDSWTe@q^NQ_iOd|&UnDuHp zQ45|A&#SJ`wZW;kxqR5WKUX)Ni8`;ooPyd6gpE(${hsO8)33p!^ZFPB5~NKS(+J_8 z9}<9Zqz%r3f!fqbHIG!G8e*ud9YeK|7kYCutJctmODq2eaA~}NA?P}F|4A1pSHK_3#lSUS?QKfi5vt33Xi@p7cO63VFV0a25^O6 z-C7IIkt->VUC>kKGz4@G>lAD$4FzdftFwTwU3BvJQUxfqHyeiyr#1CaaqPiG+}jo# z`%(|;PtG62re@@lq9ULC+eW5Zt)`gcUXs{rn*_)jElj%aT?GB>+MEvpggGmG{py@2 zJV75qx*G-=q`pFauCNjiXkr3>f|IXehc2u( zTpuSLvTZ6yAkKvW3`Cy=HcYXFo->6fLqV{oMzDt-brOmR=Q(YU5pjLUF$+^TKk5s@ zle0|2LYFRj{TATLR^dAmPjb@M* zXH?zyULFN~2dhJDk^p3${8X8H}1Jq$<{(Ju!~8U-@U0_I!Ty466)|p zU(#YdtLA$VkDKD#Z~qFrX0e*M;fd7epmf@zjWS3h9|5$VTrg z1L?=euhwHDothb0C^B_C>2CYs_Hdjb z=wIa1=O1wKi1=6p_Z5#|(&MnRfS_N4Lh}qMPy|cbAXj@w$6AfdtK*!%qQyKLd#G24>kNo_Ys}i_mcp7HRt1tdA zJIvSJIemEzgxz}vo0h<5iq3xvioR|lEk?Ap@k~rMv5Te0Q=3XeICcsl&+F!YeO!>^ z+1)i8W@c8H__guwL!~Pt`IihIbNRUT`BEM@z4(5{zjNi5(u-nrSZkB`;BuJ7HW3R2 z`4*D))a7iPzoB7!Hdq`8mxv75nwZP*ESEb2xTS zE5^T|9km5ns-(Sf?*gwWT|zlyysE&yqUwdAI5$dvmAC+z$=rsjdW zjl)6X^ka=N@1>DCaLwWS`Qar@E!+XF#$P(st#TyH@Gf zQeCq8?#)80oDRYHQ*E7lMS2=SW8!tuSuR4`Fa!0_A4OVM9m_DNSlbY}5VN5wx{edY zDqf%&7QXf)WqBmMHp~^IyP`pP3?|Z~&Dx}3V1gAlSK^neG zX{voZ!*=ZokV7J!H?|X{JGVF8e!dqE5||s+Z$F!krmc^_XJRJ-$?7cu+Mw$#9piCA zrf|fjMcI19D)x&vKiT{3Bk-;MDHQAIFcouSp1dAEeXwd56h+(3O30TfJ^p4f1w z4z_&eWHsBlMdov)CTG{dp$5Zvc(^wO3>lL-S|}nriHO+u19dAZ5ZYT@A6F4{e8F!x zn$EM@Bvpk&sGy;5h5b8sT3(JH?C)If@f-B*zj_mfZm#$N{F7!Xv@CO&I&~K~?`q5n zhdlyp_U94HZCeGfrn%Z|dsnrJNz2QFr4K8}E;-}wzyKgsO}iS%!y+qMB2BuOR>(8x zt1V}%#rlvC>L0@k=^I?Y3yn^lwm6CQOZ(!nt*D3U^74x|NEO27(np$7_jQq*8fzeN zFdn+0d($8WB#-&_mEw4{KWd;i3{MS3Lqa-9pct*#As{YZiT1M_i`g!4Hin#->2(fZwA)j6pDEgb3=i| zMd)nD*LC*GH`w$=J1Kj+9Pv`Ttoe%PpB{`y>)IGbU71g=ZN{?M4!3@`NUPK$03jPp zQ*iGTAg#45YKi$z+!29~0RWd)bOceq)+t6JO;?+2CUFH(AQ{*3$qncmSV_p!M;+{(E4*;mAwU|FZ6?R1ubwgIS2`1NDCE~h^! z09_d*(S9v*ZOb$5@T_YMdR#U$i1Q+1>N%w>z{7TY4Tv82z{f&vC$K>9%tAZ_bSkrw2Je4ihof$|>ZhWl!=bP;7xco-K9X`flRqE$9f)9r>eiwJ{ z8G@pKKR(MQsM#B2Zs801a0; z{*zqpeb=VwE%V09vtGf^5B_COJh9=Pu|wp^eg09|Q|3K+7Fh(keMWxC9E*RZwtY&y zwB+}&VA!MyVlAG!HKur@2==!yU~w1BgnyY<#J~AvY}`@n_(#U#=#bK{sMwRY-mf~w z+Tlqd1FvW~ya8d!YdsPJR$M|4ic-%7J`;Po3r)+4@RX`%0+hyY!h7SuNLKCq{BXUO z>FF@9xkKD_!cN7Tt~s66 zi~8fyvkV(Ba>fVXR|23^g{D7c6ylJw4Q@5`%I4gM9p0|sB<|Qtab+D3^RK|j2S@-H z@mAlB->HBK$vA>RHg^lq_gCyai-RoxF1Hiq^i7>Pss9_){bSkygb>G2kqUxq;Q^*w^{kGbc6Bd?ECYtj}xCV z7s!9}^78PIq0b1F*ijYEf#c%dAm7K|$B=$d%p6(lv3pa_*tf_9xN9=z6$>{{%t=p; zW|N1t&CE}fuEe15YzrE@1}sa_IRP^m;jd8yV9RjPQo)kzJVf5&_J4Tl2DAeDTIM8; z!w(*>B#y@m@ZUz~ z0jZsZm%6@xq_(yj^B`r`fBvo+mF6Wbz(k`}mn6WHob0~%Gz)RLM5W=l-VnRdyXD6_ z0jhJ9okmLl&0v;9vdgTel?Ef-$FCwj#FN4&3|pEKN`C6##jE12NA{`TEvJ8q4k;%E zBN*EZnnNo!bf+B5T-3HsQ`9A?8Bn#sVJMdqS2H&!^QF()ms0ivtFFB`BmW|y$3z+;Bid=Q8_^YYU$Rja$Q zfb~R+ax)L~7>Vj*MZaA{AR5dBPx)SDjvI4UR7yr*YEf^t^9wBy1Tuzi=lAdN;o$?O z>rITXibNM%U+5$8s}rz#Ncmg+VAEqJN?F(18WtMELrYSV#pM@Hd0gWHkgs^G;r^+0 z8D8~^59y2}(v{-fPY7-nu8=`gJ$4Zkm*E*Yq>*uj=Cxh@#_G7}fmlCS>QK%)?(vUI zS5xgfl~w^oKtC)pjO%DY^0g*Ew(!TbUlV7W+530Lgp&%CQI=A!4T-@6wm0+KcKZ-h zwKme1gv_;fKfM?W!-;S>*KzUu1@mP6yMv(k~kx93bsh)a8Vt zX3VJfcX*~iAobGy?A7nKXsuH>#MV}dU9doEgYxT%`am4Wz^$(ifkTtjLcGwFY z#Zqr)t+>d@(KlWPHwJtY9T`U1C4yx~@kiqX?6F0Q@fg|;V;8x=#<|Lamyf0}9m>$Z zBPAj$oAKywuw0u8KaKKbJ^@;X?Q{?|`rwGXD+^w#L=G8zB`KEnqUI_ux)a)*TYsI8?d}DIlek#0v^K$Ay4wp^fW>iMDsP`3JT~a z78f0avekDQhk5-HN$;Kknc@W~+TUanvKvL(M@EBzOy~?XYTH!iv1d5V!HT2_uQVd! zrrP*Dp#YdI@VTJ|>rJ`&IRC(r7cVDi`r}WZyepJ|E)9Qs?ITu9d8vLIlsU@6au&{* zul)l#?r!rsZQwFlzs8sR*my7f9Uk8@ zxV^I@0Je5(%X>;kk|RdQBm_1P$Q%l~AS{)tOCH%qEww)6SJo|W0#9EEMMj&~u_jp> z?*)7c+!|BEZFQ6pG&Hd$NE@{7>(*YfZfASK%ntkb8Sd&#AK3>0qZO~w(YkJGMQJgI z9i+jh%Es5CxgsfwLmRHYr>8HZVGVkH=*qIP4Mp4e zT0}tpmd_TARjq)hhK;lo>#sRbio*<-=e|7?>thUF6pc38v=+r{aZUSb>=awe%8CluSbuFu5#1}^ z%qGR36Gy&r>KE@*RL-I+GqvAoewwAwly)H#G9f4$HAJd_#)VLf4lV2%4%puog?8&- zWygQ+JQ?zCFfdkQF&i7n6k3ZY5bG9{_1U025URV{)qifIevgNdnr#C3_LtE)%BP^z zTiSpdej8tGSE-Ac2@!49pbFF`+n1Y~X%$;)*jqN8zpLU9vG^1vTG)(0h|u(N_4994 z5f^&tvkQ@oT#A$vluf?h-Ps{iQ1L-+x+;Wqp)~_`8}31e&yxOEDsiN{*$`FB7Jig- zm9C&g=AVe5dTOx^laEh_e05EHcgk-J9KJ?Gf99mRrvmyEz(44s&^idf5@{{{d^iU1 z#lH4Yd|+*Sy;p%6(C{-ngM46(9MYG#&ajn|a&IpEErWqPHga~JlT;>7C6AB7~M@&oQ5>L-_+G>kLY*5zoItbi7`ZRMY z9b&#c0(r3}957&z?#-AzxQ`1Fz}^#)@lu7pr2t{qF>u2^deCSIE{6|VXuoUqmaQN4 zeFwlnw6qk|h_sSUuobUns(|#POfR)iNZZXH5J}S@@ZmP*frN)Agfx57v14N@+DGi@ zXR?ku(bJ{~Xi+ui`>3d(AIPsUB1_BNHpAL^;wfYR)2XF*c9BGUQ5&t=A4k>N){U-Y z`6|z!cM?SEb`nor3IEz*i7rO@#f^*#!|;1c-zj~Yn$*RArNba7742<}{4B6+gSLka znrxri3DRN#V!*`^d>0HxK0I$Mb2E-IeI8cxIwhJv=49%Tn89>T9|uNWhZ}TQ&xlWk zkjI3NY`B)(DpQ;JyLd>OdWFC*Y^MKyfF0i%jMNaH?2N?Q7*EFrOph2#C|Rtv2JSmt z{8rZHWHO!`8w`HI9)ifIuErK3v2?!b3Sd2DuwS97jVx~WAdywECr*;{$H3}Y-TciT z-DtkN?7omF7e#$bqo<#by6*cOmtZdklU)n}rz)RB?(WTqnB4VwU1Bo4wyQAko$z}P zpk?$X>DtkqvM6|r2t!D7Xs$wq&{~)ZsP0`8TZT%rDJQn5(CILSukBCli9SQ3l}lx@ zjaOXuzusPezcm=B)0PC;)CH(R+5#nB??>c2O6&$N{`~ocp7c2eG6#Q4b%%h729?)| zma0i;t#C`>e1r?g5eQ01Ut_KoVD8X)@EG&etA*&fnRyn^)NlOhP5p8Mm2;=}k7SZk ztnD4oa&n(Wqu9a&q2BRszOIfNQ&N0hWf2OKJK9np#9RGD zWw|Hox)PK8>t(6`W2{lr%D-;5^ZqjZfe3#awX|w;=q|yMDkwDNGC(eLw%ZUSe)h}VMtb*y9)uvcQkQc-GqoP$s&ES;G5W9H z3dck&4gPtxmuZi360^^tsv2Uj|48T~H`iTuul)7emSlgQYOu6G@JTM(|F>^$eeUj6 z6H@p220_ou`tBC5vi&viA9bQR#j-r8IEPLFf$012=prS3rrL60`pq)DjkjDC{KbJ| zQ!mcoA2T30F|llOI+qL_Od4Xum!8u;)Hf)Y`H_U}zbX0u6gYCG-(J$1=x+b~&bjfo z%^PYxaSIJ$ULyIZ8t)TnO$aDL;G)7Xckl19f$QT#2QkH`z#X4Rb{ky*6VG?UH<6Lg zR?>gn=0Q*TIEs2{C|<{<=Jn-RV+*!`S>RC4^$Z3_@GMeFjhwFT*15Jw zixZf8db;^G&`0``_@l&N|TER zp`2wbLWx(%he*UttX@ry>FiS17VP}|T)TI1L-@V6WPUl?!OO`tTHf+$REC^~s-U#x z`>hE<4xh;evlMBGVEbe%m)+%vk9!9Pz7}4W1!HdG`*DQb^KFFX*~lr1_S3ua$Zm8* zCGs}!X*;E&DzD~jjOg>bZT)zQ;fS1jCAg#MFN{~0^}Tp`JDl^$U@2-;%e;LYQIE(eP zUI*?N-CiEby`a}bcak!9NBzSG?+9!h(gvp=kE9P@*C9kvN9s1*;VialhPmIf@9Be` ztXjObT-(_D*0$cDCUtmsn&tgE-p@{5KVb``j*JQ!NTzNwwrJ5c;rXh2cQNtQNH)RU zFq~=<{GB42TT;r3%W=oJr1Z?W@^DLeegRK&_B+A2+Zmo5^1c}{z5-Oc`$I9~c)L-l zxP9>U4YP8$3IZ|X64Z_IZ#I#j>SZ<4d38VeclvIh|HzTifMfL3LldI}gRG}HBlk(L zrOl%dA8CwF6F++8j#vwpqpKr^R|BOOKdQ*ZUuEVWNoxuUHH!u{PajZWUh?M}>+2s7 zgij=CuTG+e8(p*!=f2>54y0vI`}jD1`a6N0%gXAEp%&2*b9G>#zHxxOJuuBvq}4nO zfB90L4QofQOY@u6Ij_6Fi#d0|3xIPk4uzciPBS3Iq`}V*Dj0wnPn4DYZxbtLsl&!rwteJp$zExDaOUR!oW79(UOTBZek=eo@SV9 zS+%~x8h*uB#?fjwUhr_#^g>T++_uR-mavc)GGu*62pZ_909oPogv5JHT;5BSmhwFz zA=$rOzC?=UB%72c|Eo$q{+*_l1(<8Toz4v2hxvHZXbA9dWLOGV5Ji~H^mNoP0H9UJ z?C&**v{3b5&tZI|oXFhL+ExDo3?SKQfqKI%wf=JZD~2xH1$|BDW2IZEnzv-Bs`v3y zhw+yWpqBg(Fws2A0pW~WT_YVe@FBKye<@*`t2uxlMH!)m19++v5FEWbEGNYmW?7#d zH3>x*nS0YFOB~?i^2YErf^KEo7DfD2XzJmunbq6Jtl|A@2@T_}1s(1EPRt_ylVf+_ z%@21Q?lQ(;71*O1G?rw4uIVz9Mj2IMxTD#n|8s(j9<;1^d`0e3q02u)bxb4g{@p59 zG$EW|Vog(b&KxtdVg54Opf*zZH3R^_EYT7^ddhLog#}O?aR2w}?oU{}HT3iDzgj6v zH81Tq=aD!IFqTwlacoN@a%aqhny+m7z;KT#II`T{>E#_Wv*+F6CLOT40JcP}7ob&r zMO^ktKLXOai5;)1NV$c=|!s(6Q!+U&U5cg@!Up zftdE86wy`P(Xki#pGx(i;fME$DqC~T+vPSPj3ZondRsdY9&yZh0Ax{SBV~WT_e1LS z+>si7I)widnd*faV8Kpg*>zawrp3VrdqFXh(=A3Y?!%~AMYHi4ON~94<)N%da8W^zfYjb0gNFG?|aJOgwer94>kFF;g zo{HZf!|5dvTlqIAzF)q(tLEcuZ}Chgczu;D8J_$6aIuY79lzdv5A+)>S}iPla7hc| zwf+6sq{CBo(Q!k+CV#j|iR;GO-?{{TvcvXMgCf95TW0`B)?JKdP5#UyU|q(%71YC} zZ8T^%o*V$LUM_`8P8#|Zvs*u5BM;3!1$z(t?@y<(kv@)FLU%8NvuKa7o_RRe+uPek zx88J&R6vygC~Ybv?2g^D9#f@oB`5zCYibIh!VIazf&A7Y!Ef_AI;m4mbRqHdQUlog z@4gGt5JB*5^eP0Aag^h~YM=?($p@eo$DTnX^NAl{Cuv#;Xq)SOav6wycAoaqyHQw7 zEQ%tn3U5=EHZxjO-9vr*17>jU#lg~TJ_0u5i%0w-OPqWP!~9 zN3vp8D_CG4Q3maG%wb;%^?uRQ2r)OxN1|W$8$(}TzPK|JfZiX|VaVk=(%+mcucjGEW!1OIEmQ>L>2+(TG~0*p~9a zdT&T`%0oMQ%SXR|S*6o|I=22ZWhhXlBLl#mxN2hBkas#B9`U8#LcxQtcDS%@Z*TvM z6VyFZ{Bu%$A$_P0P$`4D1+H8!d6|hc**`f!*ah9VOTNT)_1+>qPV0}IS}PD=#KQ>o zLz`R-iu`hIO2?F7!HmY6_u#YA!Rk~?ke zz+o+riz)v_3|A-x8Ii)z90mYN@^sAeiCVr23i_8DWb-@QbJ0t*aip&77En}CVK>29 zLBWvvCDL@i-oy^z|8nazcmZbUoh33g1(FhMT-!$RFyQi2C5RBE!N28EyXO-{2&(Hd=<@a8Fgt}=jaVOKO~gcG z7vRN%TG|*J`=YlUn7}XbR&Hy@84@N815lKoPRuu*&EDLRb7Ur138D(HWSy$5n1_ua z5Br_OABe?|m9}?M0Hivds=70I#C4;qw0-l9iPe<`#Y$F>_`bbl+1N)7r%9P9eDZ!kz-u zJAkL)++eRHeUX>$u{;a_%#Fo17XXUTL5h@-o=P#8z2z-v+cI?PzZQ-v@_uaalHv^% z{CB|31sVP6)2AQ6I86@+VV4`(%kd2w6q|XyQFvgmL|ArpMFX5t;iKY<{0fW8wxJoB z3mam$*EyamH{`*58~(jGirg$CPcRiA$!5M*D=qpDPj;Gfz9)VuNfH&%l*s0m{+3J* z{*C;}oQo=O~mj}lVe9+B*D}tBd29vF+T%mS&~No^Y^XG zzMclZ>;*`?je(hTP4{DzQRG6;%iwlT*h3`ZW|;x#qBa}A`(;|4>Oh7WIQ(9cUkHy^ z$y9=RhL{PkI6v=87rdoTW^1ylzBkvZND4r>67#78e*XI9ic3}?qAy4^Zx!R&{RCOQk= zvud|^HILJj^sCfVaVKVuPn|R4*gY{TfwO1(H11*w0UPtOe7xzR+`jUO*kCN~kn2_O z!?=8yP8&}NPB5vkUCd%id|g>wnQp~+di-~|4$b~=-RGM4tcAU0 zf=d?a1{PkZ&G6#uMuAivu`uNk^8z8Fj72mrc`_@RkIWT8Tv*e9ct^0f< zr{|-xuD8CBDAWJt$~M@DG&a zZ=Hw+n9Auj|4}5*!DuohC67@K-uaQ$Gh&C~#=PbrIt*Y8_tx=da09M2MEOpIX(xQ< z`9%2nYo@@3x4K@yW#w?E3Ezk)%qDZRWzHKlR7!PkO_~C~|x{j6qFQO#JVW4=Kv&_FA6jeTRdx8oivv%xP!L0|wYbQLUQ zNIU+$x*8Hs3;h)rJU1-9$cKml@1=vkerOjg7%PC|C$X>y(V1N-K6};7-IppdjAa{1 z`b}Q-c2fk)$m|@(KddvW>*TIzy{V)RgBdH%6jWAKr6;Qbo|yHGkq=f4_XS93x1uhW!YEw-aMKkF(OL{V3(0dGD$6I}a+#sO~}ipeH- zntyD#-VE>sx?l+fNOR{&Ej^bm;}Qfm_Fiqz^^DYItDvUmzYoFtOBF;=vzaYuD+W#f zq7C!5tG{u%rKP!m5qXpjH5m#0_Rq4`zh~*x6s!Kcl9|h)^43-5Ikm?t6WuOqBxpS* zTB8o42XD3HkY4$%C_y_<175HVmM@PxU<+Fcqy8fCg$( z2Zx2wJ6X1cQ534H7X|mqJf|TR`QihsCjC{n>ml`e6%FVnK?{rz9~3n zJA;10LQ&d`xMsg|&Gks}Q2lp>8Kf z$Eu*K)u7fbBuEU1HC0ejPk0xni0W0_a>VWzF% z``4FUbodu1Ik~wQ*ynqF{#CRDC>kBgzTqgceTs~5!p=!5@Ygo<2-GewFOOr1yZV3Z zHRg@d<7vXJcJ_dk9?(U09#pH{nS69U0xoK!ggUw3c|1_h5XjG1=*q25~j5X$^ zPQODHC-3ZRRJxr1&Zp7Ofzme`RMyh@`Q-ci8K*vBkjgq5gMwJ)*RsDl zEcX0anoqR{}^JS~JQ z4|&Y(G`@un*gFlrJL2-TQwb0NcHd+njEzXPj{mr~GuI?WcgpgL1>nC^_R&sXZ&exa z_KjW#-^f-fDvOVp#Lo%c%OB8*9|tDN1OZdf07WMm=^>e-=!bxjE&;%ELmLX2@rkUg zcgDXa-NwDpkwttE*T2N-qod<}J@jNC?O7L3KWAC^bUSqs1HMAH&89R!DLe~d5By6_ z*Y7mG(eB8T)&($68(g0RTw4Kavm)c`{u5Q@V0Dl6|M~48YyW{~`oigu8y>|UUW5u< ziAJ-*(f+VH^pObCukQc#B4|K{vmLaWn;E^E<4aH5z)SO&lFYNk2BxgVf!zH$tuIFp zio$uWGy9#0D(H_TMkV$DHny6k6@WYwQ28U-)x0(*MBpKabmAO3M9mWmS-b5* z!TqXd6VubfUMir+UzY)4s&Gf^XTAkquRhkTOrxn;2`1+b(!Vo)7yoGGi{jyjel;>l ze3Y2_ShMADuZ-#W3@*0+1JlmC$tQ**l3}$XYwt=aTcX)*A3gvlP96^Zx1{7CEWG+7 z7lg3u`up1sVoTpT>0&=ouzPZ}Y5dMRll5C9nW8WO(|n&yyI`9Ea~WK|;o$4|+>viL z?EU*CP?>N3v@a(ukyX4lq-&5S@SU66a1ddLQ>5SlUhscyUqV7cO)VnGwrf$7vYJ%`iuUtM#1`mpR6V< z#p1OlcNxM>e=G?c_6zeLMqk>=D7ZTmRu6^rr{TeIC2Dtsq5&1!Kv92&CQ9|#C=^X zgWMWgiQ2ylrrjyb=P`a;eh@QaS*!3VxGECZWI$gYy^e4Cg7i^GbI@vE&~PCGxs4te zNb6;^*R6?<0KMQ!(tjTw9ge_N{9&hBB^kCw{?8}2nHPZ>5|5KQSoE_(U~l!-v3p0i z*P#-rF$+EJR~B=)AL`6x%VDxLpvKROs!aBPY&TOM8-z{VVFI2lykPuP!?QfKaQWN4wbt(9)y@|G zEwpY`jNI`Fr8EejZjerx0l+b~Vxqpn)0oO-v?)A2Z#cX*JS+W{`@}4=%~viL$VmZU zlCH2JrXn(g(Yz`Vqyk)>IUR_{1)t7cD#vw8Zj#x)IX@ptT=zQvIC~?D<|-!sCAqs} ze=ZRSGp7qCO{dgwTpf^CtjE#HFfjE&Bcl`?m0b)x>1TG*eC4FzfH%V;?swljI~8N` zpVJW9(pX*b^^ttvWL6P!efObGt{Q*~Zl%QI;U)(Dy!2>= z7DR!HaYA}>Xx%3AIjpeT|6ZwR@sy>GY>S~*+W*7Wu)8+{RwdX2q7$2(OJsFQwn#nz zX|Hu-eG-299(Oo#zO;QcH5D5-z_38R^5tiLcC=v;wqjLr0WMHc%i|^j5Zq6#8wt%1 zb}s%@P#_bue_J*lk=B;4k#*#buiph``Ej}b+_kOCuP-S3^SvaleD5yZXW`c?TRsJt z-t7=-e0U^B?rdU^B5g>ns^BTb^lpuxudl0iR$zlc=KzhH3O>^oBr%N)M8tIS@D6s* zJRav`5qj${gBIEU+k0iS*ZSNFy@O($DE)8V5IV!4`JB4_VYjx$d)Q3S7$rMnZ0{$K?vfuI=0CJ*dPo>Kc z$iir|UrS3}d}wcwpG5s&rTdXTn8dFD57@XWGW@C{iGd5tA)6K%1Xa@MyOsGl?odC` zel}^qy@@k%p!GO@b&#|+=U@$l^>NvNyL_nLr;+c>Mew4V zhjn^?q4iP-;(G^i||T<~0&4e*@at_)rZhoZ6$XE6fzw$h=TBMq@A$qAWs&FP%% zr(`Km2nG!(9damle^&kt4PP@PexSlE(G#z%fsM1r4)k?%mcilBNJj-uDW|hnV6dVJ zp~il`gT-64_NV0Kb$N(BMoq2kmvXibdN8WssX%@+cDnv;@o4l80mAV(1^j2ZV;y(M*JP|(w&Z8UIE1fTR4i5uQ z!0itKZTJ+3&D}?MvHdue#c(3Qw9> z-2jxazL52qkc^DURxLWIfC!>8W6T#crZ+QENawu3pk0=v> zt@_@xlN(*Bq2ZpuD1iq(be=PWkznvE;&VP)*!GVEj9gf(%v|DI&=Vbcq2jLila!4E zuQ&S97ddQsD>qDY`qt{q)9T-=5r4{HnZPHjT`<^32BF7g!v~E9gDc#o>s4K=7}uyV znM>pUE=hvaq_*D=nl}to1RaXgu6b{0vsr2S7O>YMqM9${9P7LkG&N_G|2v$>T#&YV z>T(pf?%qitiEnLtxfap=YkpA)929*JM<*qvua$6vq3XeVizH$$B*}U@HKS(4;oo*x zJsL!8i;>fQv>HkpX*P4X=#z7D#m+J{cXU5A7Z)G;CNlD|+G%q7vGTX|Vhq09J8r;# z*ss3XiZ_VN4C6=*;7c6*8d#l(HL=pVH2?7CZCf?JZJtJ=|IWV81^9EM`dF_gts9sA3?^Rvlx_10m`mJ7K@+l& z37fez@>%MMp0|OOPEnuC%Ca?{iUT~;^U((>dsGzb>u%Rc{N6U&fk|j9Y=q2V7En9* zD^DVvzC4n5&M#FtjH?pc12wNi?#eaUh%qHG9D^iZhfxkJzTpw*k zO1{Xln-L*?J5l@#eReLPxY_i6-%%s}y4_|vg8H}9AZH_*Tt$7;(~dF3Slv+9=-Fqb zuOdgMdRgH|7vC7he1n!!;v~ITh)EXV_fo`ayzT*#ub;vx8g}_!o%QLe$-$cG7Xzk z6Jl-Jd6vG2Yb7{5q}8w23cJK^?$~o^Idl!k9%+|Gn9(gf@xc=BRYC&H(O0Rp4qN@6GS%9|u&AKRL$qXN|jXWlp6x}-*vuchQ5>NwW z&=Y&XCPcy(U^H+NTt&Y%jp~n#rg9Xh-JL(yQUD|cz_K%dEQRvRRJ4ZQ`bVu48g?+U z_<}Uh8Jwb*wYa8TiH!9(==G>g27*|$lL=Zc=B2~Wt7!bvbRep4c-}!=Wux|wzBdfI zD3)Ea{mNo%ZjUoRF_#Qh0WbP*m-$_DWV|F$)nN~QYrep6$d>u$&ofGXMWEW{ZzUSa zg*Yn#6C06fa_(=|*%`JAS&&sQKq0!JXdI6Hh%saDahqTgRZ+N66Y%lqiasXm?@2OZA8cgUAfc>UH)dzU^@S&_%#H!oBsU@ zftrS<8!ILzTY}n0`BefCP7>wgql}>l%8l-x?(g{=mvkngP=NV`SAVP#qB{ahg?h%; zoS5HdZgQ)qzht~w@j6^wduA|0HT#&fIGl^&>%SF6KONNL#kB>R0?c6mcB(K}HyC^Wf`?~>>!_vHGMp+q{;!f;RbG}4u@_|Epj}CHKT#&J( z#Wytuk`5lahp{BlZ%(4CURyanDc+4)V3vnC~N&~G*S3hvtk57MQ@FUq}0qE5O2iOpBGMuKo^%fugx zDheGM)qBwCz3>31n-eu{&ykH5$jGD8^*ed7qOVdhruo=n@ED8g@|G?cOhL;EgBY0p zcRS$JEBn2yuqhdP4a$F_D@vYFd(D)$*Vdr;@Lj|@N`7eXlLa<37~qOsL9z~l@oyak zT&ydLb@9C7<3O?wI3Qk5vyzD|ivU?qkMI3$44bN(+gnTwR+e5o(Q=;EZ#4gA))UF&o;*U%*@vI{F{_BvYk9~Q9M zg~W6&2p2C)jRzp-Jt-j{b5tA#>n?-aIMCI5P&-ZY-gFKrNN*A zSo(kRZMC(s_dmM7;uA0NbM&74md}mXSnD>779~rJh@x>&C`cA_X~9@sWi;7X`WT0A zkWo@BLkXEuJ~}8TT|V?Pn3}fR3KV;lPm{jg2cTe;ta{ma=E-nrv8%fY9d%tlrVxpU zOn7F~`5OHlUFVdO)3L9p=)RHbmt%nE;=8!K6o77|Yr!)=V-K^^6%td*pYoSqIUa!3 z8$nQV1kQc%*=uzI&DC<;7p^ShraWKF>GIkfFyy9*IK#dnF(~2#g6|l=tV#V!g>>Np z0Rr@W!c2|l=6@qt@eRk;(zWoIpM{)u1(x8+%YlhpPxG4s89s-5&h$^AngQgl?ue{e zxy%Vxt)Kd1KbFNIEAxQLR-M`?h5!nh-`CHs8yU8UGH{}dWQ_OcA!#WxglV5^e-mH7 znK({gGG9yg$74FBkCH-UN!S>gW1s(Ky>Zq4y|GmgoxCIjh!CZy(3O&|8yvo4#bb`!VEKi!VD<)+0fyoWrg2@#VK>HaaE-w0J$aI)Cke%i9nWBD>{=}6 z&@h17)p(8{lYDs}&`HAm_q)T^91Cpi-0Hnfebo5kFu)w)Idyo`31|4Ppu>@Bt5G~E zO|@L^WL!n%R*X6Ln0J;99$5r|ecl^{Bxw-rm0HF#f3YZr}XYN%wjijI?g0np& zBk-oj2>-XC`g5<0(qZ9LP}U13)p8j&IO4+xPUxTg`^LIw*JVagP*GX5)^4dw^}g1< zuhxP>7FqpMOa;E2a1y#mk_j7i{`s1ha-OGtwGnI-!Vo!PwQuqtqC_+VV4V+0m2*Q5 zH=D}?I)lD2LR(QyevZ|Gg*1t_^@N1$OUK0qlHH3%rXnZx_J->O+ON~@(L`A=E2Fca za_r<|!BJqMN*vZ4J(uUFhAC?bH&Da<1|b_h5J7>xs7iyq172nB!z4yOr!)+}a7v{e z{i$&U@6uwBuw&WhG8J>o!x3cHm|95_HT$b=uc{4%X`T?FBZeku28!zrs(PwRm=By6 z)?aB+9Ul6l`ZrQD(``+txCEaX9EU+@J|hrPx$_Sqf1E8k;Uawv1Iss_=m{yN-W%c8 z_sqRc=wBv!bbn$aR!Z$E^x_nuj44khr-xseJF83nN=JW%D&~qM8oymHi6#C^Xe@Z! z%cYeJntUOIsfOy9*T3g9jL;<~$VR%x_z;-v%~@x7Cx#71^UAdo{(qne`%eF2sq&^> z*UPvD$xy@-mA___!sb?lN>VR$PHVAl?^b#ePOh8e`=*BmA{%$cKMDiJ)4|b}c60-K z)8AhM=_6y((r5R8u$=3)|M-XO9-ne<}jK3-P8kbf0rG zQ(3#(-_&3sLc4P?9sH)*z+kSw`8;3qTKm`XfXq=Ss#0n)W}M<|{yGu;R;1j*v6(&a zqeLx&dK-;gUIYM$+jG}*HbK=NklWI7j|Q}}2gkj;&MwGT-Py$kn1eeM)g1H@#jsOt zY-zU9jt`cSo9{z@3n9W-!yGLGFanT8mWfRa2Dk!kZsn~f(o ze#STWq4TKGNGkMzyugEJIroI651-v_Bd#|W2ky97ZjAkW{XbLWW|IIPJs|T{iLM$) z<}m1PMX^vR4XLi73PmaSHSA@(iU0VG?-`^ih|>P}NjF`M?C{TCP?)XkyU|!r4*}Zq zB73jts_#=^&*7m2ZnHHLA-LfTq2gDt))UJVSoX-fz>#err5yO3y zu3-T0cZ|>rkO4&$o-3kiS$weKWIz_tE?+bIpuwRn3!X3MpGo4-mjfExDm)b&i#l~p z%zxzXO0nH!XxFS)sh+*U#IQ;BMKgo_MDh@!^T^CVpy+0UDCR6Y_D9_Z1{fic-+%4S zpZZ#?&X8#O*RTQkd{A$7FuNAGe+>RG@|>QqH9BuG^X7t1!jh20{22QfTffX#(qO@K zeSJ@UCVjn}nvUHBZvrN_Z63#QgG0&Sv^j4TG5TF-v7ZZfON1@ELofVarkDOlFL^G%dDjMCwSd ztYxx)Jfh7?{cXv=57AbIvnEsr|P*FKN}4Z{?_O0^Uu;cdlYY?LF~6k9y3H007I7ChLwlq7^P znM*dnTNSh)}VmJs+XKynXcc)MW(w` z7hX*&JP`g1ckwYmI^cs(jy0w3fZb=%Xq~iF1sH=`h#$}kVL&u)g~hWj>baWZ$p?Ic z6CXwes6fioZ*xx2hINTAo|^?hvd&zk2gRuoy0*9NM@MaZQf4`amrN-&C;~|)z)s8E zUJmcF^AHSnTt^66=pY({rG=VYcLt2!Z=)6eB{#nU7_8koai124y@&NAEXNyK&ED*O zi5|3q^g)XF__Kqk9~!YR2e2K2@GuoH-FyV@?wUn@<-1 zyt1cseE{JErD6u$_DTGJ7azmp-K8aVBpU<1U_X(qb8m@2t2it+>60OBd<3$dmc&K@6(XN z2}e^rh|Aq*D&q;>aW8{m{eBwh$IClIK>iOD37DDBKTgZ7C;iKVufb$#UBQsGS2L38 z`Yu+1Hdvea%MYxxOw$^b!d$T}&lMW3AI1&sGgtWc*B&G>%t-^4CNU=vd2~@T*iHCO zv#msqc9#34Op_QeUnxaoM*D~n%hB7^>Hu{)_(d#zs3X;A?72ZEJ2*czR>2Px6&35LYKt)Iz=SjQzXvY==eNLyII_4`t`FKdm0 z^=lXvS5FBb56npF$oqiYE&%G|%#^Fp7o>B6`&e{(mF1!8HqA>)S{hT* zM$hR;y)xJ6EZ=YCSTt^`Tl4sRdvI^|KR}JAWVnyb*TGP+LQl`xM0P;{DAo9+b2pR; z-VG>jSE9zz!kJjv&)vB&{~Y_Z*L0BRc?Ha@f8kv$)*UBD>VI&~4;!@z)TtDnm2AKqkQrcr;c0sXeEOkt?Z;*U>ft~i3~(o{kaqb< zrmm?U;B_htU(f~_rs&$5Zu@H_g7wia9$YvT1v{RI*$mw80GCtKc$=vn4stV6mx5k7qH($oEsG-?K+%!N{Wc+Ay?O! zrd>ML6^+oL7sJjK0>BM_IdxOkZ@VM}Ra-w-VZ~_+lw0iYf2eBSvm~A|WO@)x;&g+# zjB=y9mG-@MJs6<$s<$P;g;;_y1qa}V*gaOO8QT6Ft+stw%Aowit8Zjpc-e{RCYS~4unExlH!wrTdkdb2S*uEsNMzI?1#8k_;mPi6 zZ-iWO0S$#atF+#+T5_;hGf!&-BP=bp)I7$G+LWR9ok4UBsX}hvu3W#O zUA8o(2r+L6?n^do1H~RatbnN(XOjzRMR5V>`w?XKW39_3IHJJrR@1~c9{zUEYjkhF z=w(T)WuR&Iat$ZN!zHW>Jn%v2y9|>y5+2q}mwj;peq=BPfIew(g0~;kHf(=j5U~!{ zjY%32=#HSJah%VTTe(p6#5K3*EZ|b)}zJ8ft=^6FhbUaXVz1QMBBzW2hM_SojHv2Ll zse29-8%dd_x_`8zda1W%NE@VlxPaWIo{Azu0TW@|j}^7gdtQ5?Nrzk}<*>ghD=XhW z6N0a6j;pQwZrr?VC>@FpV(T*Ycwuin5ISF|;)O zh7LJc(1@~;*q>_rhf)h1s;p0OoBqAny2wMk%}O;goN^)|vB_$$%}A-&`I4U}OJ7%* zad5uh#M4!dvu}2Wm$qd8l9JFA4#_L5wnMV3xhTt1{QDjTt7>-I3!}`|k&uq?kLupJ zDBerh9g2+VSqXd|=XRp*X!Gcq@dpC>^xB{B%8a~_dRr}jHV_U07V@V*>w4Fpqt@5B z0m66fzfs;k&zaX=R;YRZ4L9(i^H#1`%Rcjaj0Hy@@*Cfiv43BCaoG2q9x?%x9Pf?r zISc0$WY`E4AGPK3C2g4Q!t9ZF!U0om?v?qTBZnKk*+W#Lrn&@JfssJZv5?EiTOe zgz*}qA7xlcAatNfrqb)OppVbdJRXyhqu{Zap3&BLHM>2J?12XK62>;v8B9&tZ3K#e zYcFAtAMHS>n&p3+Tn0kohsH9)!iT5p4nn{aJozdoBnm4_x+MD10suCO8G12;=ChC0ZCCYAoB01Zf~Wv0&Tw4vhQA55?whkKyc5gE2^m3v$3RdepTOV2-!kH zQ*&?&4e3&4tqK509D;p0)QybB0D6Mx73L7n430j9#4$Xv8C@!9InvHc;uf08ut}8G zq*D)yhqJP3J$iWf=ET>cr^d;=tyzIcG_Nj$!)$CrFCRM&ms}4q3MU5-xmaxAxxfOpIpv~nEhIMY(!3Ba5}ewXz^sn) z*MAT_DJ=KV!zK4eGKIXKv9Y@}%8DXEW1(lvWI+J(r|`3!orRy9M&mE;D*oQO-zWu- zwlJBzI{7Thx1+c^wqn#z$GwC`6L?$inyyzk1{d`h#GaD&R{lIusWaFA!1AI8jrt1` zPLelZ>GR;^_uo5SdoRI1)@wNSOh_02tqK@DGC+|ZF8@iun^a884V>H990&%~Y=vMT zu^X9WLSm#n8uwNb=WV4?s{-)|KOh<}BC9c~+=sa(C^RfTOLwz28Tx_W}r;0DBImIOl8nl8Vx-1{F^hA!Sjy zzEX$NBW)q}a02zG?Dl>iqd>bE5X22`3UAnhL&@2{d0@|JaV`{yBL_zAZ>eg-H)KQp z0P#x2%1Z$x(HXY}&=AzU9iBrYDdA_tC@)xX-~ex`wnta-)g>t*>ixl5yL;=A8$#hE zEF{K{te6e*6K-a;5B$OKt*Pr78yp2PJdP*ZVDzr~#TgVM$HUuNCI3X)je_vGD5&BZpWUwem2Pmde^GrKR_&UXZex07UVOE47Y zrV685kRXa29Qm|5s=utT0dovRG~L>cwC6ph&Kqu`@r_{hcH`;M<3fi?m^uVdu3b@( zq(o;iN>gZ90^lF>lqOjC2^fkU&N*C9FCCN)HxjyOQ%&R7ojHnQQAwi1jX62%^2O%z zx~eW?Z~m@^y^WGB4z;as=SKb>BX4_XVsTz}f7Ig0zBhtLGjnxO{*ceH)gs3r;N>KV zrOOJx+~}~>EKR6;#9yDlkr%WFE}xAh?5?5pR~%)fkPoF)GBlmT@qg3|vTEVrp645# z7u-Bg#H3}Az@yYar=;YtUF@mR!qU>?xN{q%``3Iq#roHAhm1mcJMh;-gxE;qI!Ges zo%vIliiPdCYIDIA&qL9~yp4sxU*XaXH30MPs~=}3yegXR1 z0l*lxOHqTLZQKOSqka1$VDzr|E{g!9O1DMN9i0fpdAcY^a!Ut8mY3(}@0hjfeL-)u zkuMQ7NA;y<2SLWn!rFs_P02Mtl!m6+#co?xmZ)I*8}Dr4tApI*ThI%j#<1Vrn+9IR zv?iUq&$k&gAgP1(9HnV)72BtH4q7sTh%ENHMO{!Sj%eXcwkkf9#)a0%Xzj>nOd!MS zNV>P+G(x)|azjy8`SC=^{aythkxOPXV)Y(rjgW1(qv(;q)dQ&>4Ci$@LkN;C{GPL) zp4uC!A}YU)Q;wQ*@`B>5ms3nU#PLc9v-8&_?~wSA(Kp#T-j?yR&7tm$;fX#^UZy)< zN1qN-hB`QISsoso85@4SmG$sBaR&KUmxJh-&zRS*4E{6??kMg(cFE;U-Tdy@Q@>qgJH{s*$ZZ@ zgNzhy$r3=x$id#;9TnFKH8hivLkrZ$W4ZWo&RuPH{wdKNJrF|XGFeMe2dE%Zt4dzx zll3CUKFuA=7nr{A*>v=zxU3nD30-z#g{667&ZQUX28@O?{v-8dG9J32n-Pmarnl@B zPRGCRYCig_*?v}$6OghJ=q}s5=}0s5wtg%{WwG4yYC**IId?mP{x(%rf|+uNS3)BW z5%5;rdtao|+HG@hYh$HC&N&*TYaG-@6YQx^PLSkoyt=Xx(e7$I*>H^H&>G{8?KKo! zt$44n%I=geD*4Q>=|N11(?>)F^_AAt99e-WF0v88Mj1OV*dMOX*ImniRm|yyW(MTa zX)u0DQ2PF4Te)QB*Zvy=<4c&3vWljru~bt;duXSqocya-iSV&`u}?!!=~Tq$ ze*#4k=8vv!OXsg_4@tq5g}F{hLj|}w1P^f!>YDY7L|ny;=9hcZpm`QY(P1w`I9gc% zrb}3ZwqRn8;okqE;6-$?jBa4Jsdg$>R;6Wf|BCN*_8VpZ6jgWDYJP8lXsD;<3_KcrJlG|1!s7>PzfM;>WlnlNFDh=Z4zTZVo<)58( zLBa-Yid=8{$mfcBz|(oOB|4^;rSLyQGss^Ns$H8uT5k2qBYES?1}CARMTno|DrfVh z+L#ybJi?|7It9@1N|>{R$D{JwDz?x4Z#tOq(XC`wXZo z9juVnR+`M6Z7TjCEJ>;|Z3WP{0BU41>p>UPX`Y14U%=HcH#76I<2z=DO?b%(UqsNF z5U{)8dMKi&IJVuDSJk7Qn_&|vDkea~Ll|-|SBR(T*S3-P6g#qQG~H;eH#G5`_nG>E zbhhb~m`}zw7Ah;EQK#{TY}ZUI<{R0`reb! zT6laN)g7?*I@qqL*D={>y^nuDSos31*U+RXZGPu;&7qHT?21f_0LKuyw~yZ`b2vVZ z^w|2m2>!ju-HqS16syoa+s+~#)!Go%eY60cF(iX8tn zV4_3Slw%0&+*pPB7kj`}dD;K@v2FNfR^xpR5R$jKmx<4G!fHI9w}}pbtt-AHLoh-I ztrz#P5~^pk8K!^i?Y~Xp`q_t4ZqPC#2>PvaWT{zkf`qMN0@W3`3Ti{AmmNf3qa7vh z0C&80E#Do_8wy!cX27WH69uYS0LfmQi-cB6Z=3tB_vlS!b*+i zcMSW%w-vO2?)Tpz+RAtgMVI?*A~MKTNfBlCL?|4==gdBgdIC}^En>80;OtINif$kI zyZpDs#J1%`o{e3ihm7OPE_PW3Hh4eSLRk~bQ!eSAaG}4d@uI;z@yhD$sogTqnr$3_??Rs;|K=)9>hR5}VJOueV zmG-A-b;qX^H8y)|>-+F(rwRpX9Gk=%Rj|0QCQS4q?sc@b);acSRhD!9%F!40G0CUc zB0zTsW|$%2{soJkvQ8z53FC3Q z(AdKIeLIBy8C)s|#q~kf`&FnNZwnu2n5?A@r&A%Abs|Rwg?R^>n6~#i44d~!10NTb z+8Tw{A_oopOg4s>{iX%IF@63NYcqHf}VuC*0o7ZlliY{*4hx%L{udEO<-su=bIFwad1-mSiVO(&5&-(V#wY(#9ur50(R1*98+odRLJvif&z}0O<=s*D2RySI zSs`|Q1}}NjH&wWfuZeXn;~MMqmsy~)x9uWpw?l0B%{Q#H`OhX_Nvy#yj3J=EqP|C5 zg(qNoX5JDlFPl0fgyRiVZ2&7FV)#cjQfl>#FLthNgw-^6^1oV3Yo_9e&i?X*fsh#u zu#Z&udl$tm3IG%4#(XI&>-&`K8V=4+Vo5ewCm2nwzX^%3sW6AZek37=WG&WA-6f)^ zxE+@FogC=}9OqUfU7eTod3Xui*vWXth}&qxy3b*;PuN^8;!!?#XIolUj%=~n9H>sn z@BX}F8mQTcD1W=c_9fjX?F}KoQDe$-x{?k`f{aKcfuAqh~RL zdHclvc{beU?pw}gDg+B26uv|x!*-_ueF4!@)e|!5BUPocA|}yf+G;BXI!68{9s{7f z<}>N{_(j7+vznf~%L`fC{Y^4_abI(necBS;Bd?m`zf)6fB%LdCIFTp|y>a+ihkFj7 zIcwKz`C~%7Lp?n>%LlRHj4i-6KlA<;&Me_6JIdDKDKGSYSQeM zp_qdxd2PbNdN{<6_XM+8ts!kE4tPQ~CIs~edRfAMJSqp$vQgG@FuNzkJUKZ=&HAi? zDryQ_3WNkT9JMf-I?soC;*`f;qUwo&8e=nbok^qyxR3iQfj8I2r-HQ)?6VL0e+P|T z8Ma@_-j?14pQ5?CBD=cI)|h_^FK~${FD{Vrd2Y+gJ4IyJ%&3)Z#6=b#;)&RKIaYl) z=|u^QJbx3sWZrPh-B*q)UXFolR@{Ol*-s{zkmg^$kw|SO=LmXXG4!F-1Ao=@z>ZLkqTIE%+!{xuWwo22_k%aFKcy# z%xf7uxJqCm-P)rXC^<6;5~ugWBR8~)%J|JIc(MtQdJt30I|QMGdilKnD1dL8oA zx>f2?4ryv1M^wZVy)cLE3Ze*g?;Q_zcb|j+`cET5SDgAT{F~g^bcpC!f2>jQX3ADk z1bx#dmK`vtxZqdQK6~Bvh#HSvUcj>{Dr16_C*tPaL1wDrm{ho7yB_wPNVz>Ci_~E{ zqgPVMCK72$udAq-vFECJGp+6HG6`2SHoh!??kg?O=F3M9P1N1T2|!5+pJ_)t*#jHh z-1_oGtW|+T0h)#pnwCtRaQxex<5C)7Ps{R%?_T#C=`WiayIr+P_^BT!a~f0rG?L6Po|RT?^@r$c2S@UI=Pz) zhf-*T;~Lj5d>DFjK>d>&e2^=4+S0$9PQzhaTNdAjHaqPcSn$qdLa=&pH5#_mO0_?+ zh#&)yQ$n?WIER;36=a-<#}q+hLY0)pwy~ytK;MJ?=ch%>?f|IYee)4$Zf!F}_U6Qv zLbcTQ?f5n0@-WObrtb#6MiC{q*xHR1BN!{tXxWqsS(cMbqu*o*!2XC$#?}zo9r6AH zbvk5#XleicsbYAmph^E|8}zwz^Y9GV@e0mUN-*4~*IzUSq~L0lu7dXkt-oDyiW!;@ za=}mm`{-#y#_u3ZpiTgg#;2UAux(Od&}Rtor05*0PaUORN2GjHFAGP=bQihP2s{Iw z!nT)L;1y6p@TtElPq_^fgS`sBqLPEEjuPi3^YRxFeOWp?3f^?yx2O*|hTF-YEzt7M z1)E(jhZz*B`8H_d3T&8_CkNG5cdHjj(wT-4+u{FQN)Pol2eY8zT%UXtlfC@-= zNJw}F>-nGOyw`a@oG<6Bx#r$$ulU`2&t7}&Yu5fT@#70Xrmn1}41ho&Ko#==e#`a03890N{YG0k{|rg!#&V=>GD`AWi`LryL6a!W;pd-!|Hq_JS~IKYf0+ zxG?~LkCEU&g#@8le|SMCGz;_#<;M>I$in)A0@}#J{=);E7(dL&ur?jMyxb)P1YAA& z;kIrzNPdKyi+~^8T|kf@Dga2y`nkgqPDn4X4btAxRhna~;T;Fq(N>zn__`KU%UuEK z;Hc{FfzJZ2t?qY z7>Ym!^6!3%<1jw z#DS^L%hw1zcU8E}}UOg@X^T!mRaIr7{M|1)5 zKLWUL{_!3lCjdG@8`vOn0E--iO%D3e3NT_eHx?E)Mt`w8e-Z%^9w7(^9~T=7qo?|Z z;eZ*T4hTiUt^55raJf&lBzXgX^@4Et1OUV;^^qI_1V#FHTI2vaHog}@m{K%+jubEHC>#QU;voP zcECJ;5*V&yjhTz9Qcf_CBe8_xh4qfUU`bG6W(bI0HEY5&7euhECyr@8b=g1xE=wgS z08seVZv!pr;0z2;=fy|%(+rc_aiOaB0f0Uk%sv57ABj+5(C;ifkOK+@OPc_IrcpHb zw--(c)5Tte^%ZFOyzjLS$I4Ub0ou}jutvxLbS>G0nOE3mtp;y2jjjf7 zGF|ySp`DpzBDZFQROV0^;s({s#6yXi8Q6#P*|wq9!|`s>2|IG_!n$j=il{@)Jay^W zhTE&7brd7fToMDFsE}fiQJZ!|KrK-T?=qs+U-?nI2|6WOFqRHY@>+tu^sq(h+akE8 z${}e{r9G9!_=z>iwfj5Q*T(Ak7L58%=G>&7SFsnw6W&bwZji8hmExIFRZ3&x3pmr9 z4ae(9<|;z$*21MkZ&9wRos~WGJ3G;~m!8|mDg``ShmiQqK=20ohBU(Iyi4XCI_cQ& ze~QeKn-ruw${U}aS71z&KglFL)fTAh>5UW(KM!7j@vUZ=ecAS?6 zmOrIg?VXrKy<0l5S9DrBVZz2ASdC6A-#h7P?AS!z9Hzm z)BSUM1?WsEJZ+!&*4S<_{L*emw4UmkLFN4d!8_F5XyW$rJT6U3k>SfvcA!yo-Gh@P zfpgq@-Ss#l@y|`>qpuzch5IuKH~<{md4 z9QFlS_+?P~URDuAJ-sYUCMjg@${fC=z?OLg&+KibR@dU2?ra~XyS-~}Mwdz6#U1Pq zd+7p+_`W!xiRbV#{1Vt*I?!YFoITCiN-gWDr-GVw{a*NZGq13{UP56~e*Ea*`cs=U z71AEjdJ_qaba7>g5dR;5_1%lyPyVk%;a8Mq{ftV?X(0=Oeg1DOu>M-el3|V)5EeEz z0UiO~&uGUSHkeo^r=Vm81a+yX!4Rkr42~}>XM^w{qhVoXlSk!>=mm#_<|ugH`@IS9 zWU+n##+#kUDym8^o({^*uY8b1#g0eLCf5s5$I&;gIU$AoQ`b@{8E!;za1+V)__9u0 zTnU>qth5&0Ox@h564B1FIXrwCa4mjzXW@RM?@43d+e2$3WAdWyD*e#~?P&S5`PS~d z9{}$U06A#y%EwV8i1u;cNo1>c`Z_}X$+gY=+A$mcoKQhnP@Bw9V%4pxyy?)_p&iyC zsl^b)7FWJ9t$K0pT=A-%^mVfgz?>NY|8guJ+C}M(q)->CPwG?CeN`IT6W%x2om7$2AjH zOhogLda`TZRWH@ASbbHTQbXe;GPqxDkFrV6q2X=!j|hP&9_rk#zq6s%nx_>)` zRO*$ebaQ$EuWye5V_c8CjF-9R)vnH10$it~6V(RgIb*xL`cnL{mliE}`OH0WW;9JH zU}!3B#3$){HF)_AopPJ?Uc*hj5A{AxJ(lvefi8(R^ga(Eu-vQ~<+Pn^gI3Ro<%LI4 z2e+BnoaRw}kox8);o6mY`EBY0#GDN)S95Fi8>0QW;p?PH6jyyRx}|z4o;^w3ydpU9 zLeZ_MriGJSGrkadAZT<~(|oZUWw?5I)>4JqRRvubQ;u`zODk_HtQuBHV;h& zF)9(jiLc%0MO#$8^vWIOp@6b5JvXUhs~{pFAyRB=_obkC{9M&eEF$6)M~P4IgK?Ld zqU!!HDV-v9^vE>=l z)ZVNZEeJ$Jk9p&ncNt=tS`kLvn=21%M{O3ZZQiTsk9yTDc5C%R#Xk9bLf}K9jJ%9Xncy)p?Kfc51}PgxImNfUuU&YWfBq)a=pCod|x5 zv@#l_s?w!IxTfV^%Zk|u4X%%e+cWU+(FeZ9cif|~0;%Lsly+9ct$GB@3H7dA_Ld@z z!cF_~8!SoPCOl$%^??Y9WiU1!R!mHYmKQhf^+96wU>YpJ6@kksRrc9?V=y!ueHY%f zHF1NI1^7AaQV1G)xjdi#6OBwBYMmX29SDX zD_-2@#i0!}Oz4hHeqMUG0%x<_9gzZ4>h1YIjSS>{C`cOje!0u_Symj4`k~@z|VJ9D3e){GgbN^GQ_uryg_1Q0Y-8y6FCFPnp@lYQGa@@}u0ie3EC) z#wXt;Pgw2SnG4G1){@RkMw%1gw>txel>pgQed#@!4j5AI7;!D0Nxs>wT8XzsYRKPy zfoe;}=h$CjdUm@LUNI?E2@9waU)6bKZslwH?bs)<7@w~a*;{dt+}I($5G8b+nvih1 zH1XBF>Tbg-gP6NSz{xnut=zxvbiw=1+zmfb``PjJ`mN+G4|lV3ov|nm;gdU-J$x;j z=efwbcku(aJl!@u&iHiuz7LG?eiq(4?jE>u_WD4a)OZZNMcs3HZXV5a;<9|kx_h=Y z;-dTR>)!Q#w}YcMNl#`E(US2`k7W(_=rR~cJQBmI_4kU@GK)tjhDJKW`E_06X$)$iHS+0Dgop%F6{a*$gNc!nGA|(WT z@LANp5kFdZS%2CfQ~IF0#K@E9jnWohmxLLO6;v?xS$Y6{^lgR1KhrWtqZhr7o3;zKk7)!8)lcty+6)po)qb8i%`VeH995sG zZO_wDARMglzRj`=tInI2VY{1(T01@r{e)8?-2X~m=y$cOOg8lvZTqkItG#NkpoeBH z+s+I{e5egTd zbw-!)=i8G^y266LeqjfP1`RaJQP8n^^xb%Q!o@6+w|TxmK) zuU3&)9cUdr=5=mzsd|#P@?MXe`*_d1_<=?67FpFhL*JquwXw?KakcFJ{i2m=p)QAM zrj+g&HN%#9@En87@CU+|bY&T?%r}f!jVXv1YfLhP@2SMwY>$lV6?nySGIW)r6)y|* z6_O#VTe=jM_wYHp?AT=D_9PcM6!9Xvy8no zCHC8b4GJzOB}$RxO8#A6FVT0Z#(LIp%}}2SzAoVHsD3}CMIadH(s_TwaD+*n$c}}K z;&rYDY3&C%j^B6k7#ts1W=thoDS zxK6j;gXOTmHY^SYq{AOGlM{@&7DrxXQhycnIhf#|FX?1ro1fN&IQk!IB}%ZuMEQ$~ zz1b5fgthO|JQQ+*NOoivgb7XzlOKMTn!eN9f!hyP4;w7^?4r&0s*H)Rq0z;|+CRNB zpjzkJU6C7vS7t0v#A@bkPli*1my+LQT+}l@^S(FQXj*yLjoA)IqGanqi6YM!;exSV z^6&)7)H!8gA?H2nf?`&!CTUeiTfJq{zp`N2n!gknx7$>9MeeT{lHziq z#uqgaL~7BVs?!Itb?q)fTqhcp$IgMgdBo)Jznc;jH0ZW``FH?|unn@#Y+pSpNlFc1 zR~^v)8o?d+Z1+PK4~G)=k+&0AbTfQwqyGA9kl(C0A7rvGZ?sA|KEZEu6^@n~9Eiq82BRK&ZMGeR#1oy!kT zk|T8PI;2OJjQV2Tc%L=rfV!)Pqz@~euU0&w@;$Ifca1Of|NbhrbLnwv0~E1Yqw$6} z*Kp|brF^}*jwdf&G!lngOM?^N)+F+Mo31)c8mU%uCOnFWYCZBn%#Y>G9O(fmDnRs_$=A<>cE2KIQpRxj-G|0)rnc6!+g7#YaL{#WLSvKU?v}|)z$g&`)3p$DJi|ecN4uLjXYRqD zrrSJ|$u`Jd6DAI}o@Oc~DvCyZ{IW7QNV_~n`OphO5T2kJzQTl<>&kyy`UB8Bhqphy zK^ma*5{La^g=a%!@6|=+IkEQ#29Xo*y!1!6_cIJ6$e0jY`Eehylj z9mFBWYiavbn}33n(P~}Cae4cucq+bH&jZa)cExQ|pO24c#W?hH+>jYwLS=6>Y+;E5 z?ED+@0q&a7gvGRzF>JHbC*LO1X$?rcyLyVBvQyO1OH#o!OBBx`Qp`AWHYt?BMYeRU z@5J7P4|eTRi|;j>v!Y9dTQc2pgnXmea@eeL8(|eU+nyc=RJUH%W^RHo4t0iT_I{5G zKH9)JL}$~wVNWjGjYn&tblVKA9OE*J+&8M6Jfi4{6;(mt`xaeO6p)?y+d{@verqq+ zHT$7uZ3zUqJ2lCm*Wok!A(?qg-4Y7Zy5x!uDT*It;v>n2H2UoewDOU>XY(E~Nbbo% zh|a5Pgm}4Z>^>}ej^Gml6BVNJOL>(uWqd$fPT0K5&Udyaxr%B^Zv~e2O;A_(bL^`m z#drpz@Vg9ox6hZtDvvecu*ctcVhxF&Ls+jyo6ck3cX||HbD~4ia63jf4JYTlx-2LB z?m8=+Gn$}9_n1#^XHT*jz@V)_AG(07oIcnK@iO+jEo%% z)FDi3#h)~|69I!9m`4YJNG^%~(3KBmcrbePTP>hMly#&UKB7IK!J;t*Gk+62$g z3%_Qe$^ZG{%Mm;Z>B8>PwPkOIbNw&68xM)(a;nr0$oJl6U}4>45r1;&_2P{(Hj4}Rd>4A!PQ!A?RBfd^+8>6+TXzkZ0qT>!YlGz_TuzY z<=i9*jY;x#lZIGU#q1dIoq3})Uk$v{%3u#@;rmGT*c0Ju-snu2(itT`t{zd8*!gHg zr5j`k@P0w!s1l;*AG%4$7WV8WiVHpyv8go>AeFlpFIBR#G#oq)5~OOhU-=yH0%z{4 z3UTnxmCsELLG7mL3Fgx4S@xdlp^X78Wkz}$iRPrn7CZVR2^_fnIzZpWZ_^e!9|{EShc5}E(#08sEuQV1ExCMqnh;SdCBdmtwW(s|q<#ZG zc8$gpI!fe)ItMdOq(H|-A98uK0v^b&PvOy`!m=`Ad&dO@Cr=tVOE(nJy=DDAEUR*` zRswAN60KpMbVZvDv8W2+mY&8#?jrC@-8Lb@~A!u%XWq^zO#)n?5N8V6F z?qkOv!dXSd6uXywESP8bw3P&qDbmcNqkofg@RbR@&|n>@rjx_k6}^;=+q zY);zYH-SBgz|pv5!)pkrCecZi^;^9Mpd0Mm0>4&$le`I@b@MZcbHV%SXr@z643 zEt%eHqpcG*gP9gNy`Bd=8ZTaP3!u8rjQR46{b<0aF+3HKE?2pzknYYjn_a)tf$k^B0X`LP+s3e85 z(ZUDkghh`FdIrXp?+{rtKC5OF%sLf5wRq1MMBxx}#ob5Tr#2&NhqDr4>)DNb)aec< zHXLZle%v@)F4o-{_|$AG8DwUezgXtFL~5 ze$(Vc{#AL5eNA}#i-_$k&cXGpkRgpeHA{qF+3Mo!?X+A`Dfx6_g2;zWNAvh?YMWo2 z3wrMmC=7{qIY(<6A#LUu^(?Iv!o=kjzMSqJEcQiGzNHoDIhu#BVGzzijIVEw!s+$pxFeF{mkhP z>)+sBHIQ46Z0)#2sFt%E(??-SX8pL?g!*1V0j~fjB9aEDIyAV%w^}8&nM`H#($gQ4 F{{amYBC-Gg literal 0 HcmV?d00001 diff --git a/openapi/static/description/icon.png b/openapi/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a8bec2a27db3118bebe218622c65a51300ca6c GIT binary patch literal 9678 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 Q;{X5v07*qoM6N<$f?IGik^lez literal 0 HcmV?d00001 diff --git a/openapi/static/description/openapi-configuration-model.png b/openapi/static/description/openapi-configuration-model.png new file mode 100644 index 0000000000000000000000000000000000000000..cd58052a312a531a4acbf14b6c7f5c7f3cc34b20 GIT binary patch literal 43364 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 literal 0 HcmV?d00001 diff --git a/openapi/static/description/openapi-configuration-namespace.png b/openapi/static/description/openapi-configuration-namespace.png new file mode 100644 index 0000000000000000000000000000000000000000..8330ca2eb6bd43decc669a828c961eecd74a0cce GIT binary patch literal 37960 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 Jxe|B${s-Y|VjTbg literal 0 HcmV?d00001 diff --git a/openapi/static/description/openapi-logs.png b/openapi/static/description/openapi-logs.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e8da25aaa37a7288aa3164dc858ea3503f7992 GIT binary patch literal 208169 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 St=I|hgVHwC%D-;u|9=3NDaMQd literal 0 HcmV?d00001 diff --git a/openapi/static/description/powerbi.png b/openapi/static/description/powerbi.png new file mode 100644 index 0000000000000000000000000000000000000000..a83fb8cb4b5dbe9a336bc1a2847b07e2b74a5540 GIT binary patch literal 30786 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 literal 0 HcmV?d00001 diff --git a/openapi/static/description/swagger-editor.png b/openapi/static/description/swagger-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..fcebdcf9671c3b4040ebd57f9535f94933d70479 GIT binary patch literal 192180 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

CbIP`4#|T<;WYUhcDA$n{xovr=$nVMfUIr> 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 literal 0 HcmV?d00001 diff --git a/openapi/static/description/syndesis.jpg b/openapi/static/description/syndesis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb0ef50a4e9cf1c2c624f9f0e8dc3028d4f54540 GIT binary patch literal 10977 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 oNASYdO8@`> literal 0 HcmV?d00001 diff --git a/openapi/tests/__init__.py b/openapi/tests/__init__.py new file mode 100644 index 00000000..ac1499e2 --- /dev/null +++ b/openapi/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_json_spec +from . import test_api diff --git a/openapi/tests/test_api.py b/openapi/tests/test_api.py new file mode 100644 index 00000000..13bfb73c --- /dev/null +++ b/openapi/tests/test_api.py @@ -0,0 +1,291 @@ +# Copyright 2018-2019 Ivan Yelizariev +# Copyright 2018 Rafis Bikbov +# Copyright 2019 Anvar Kildebekov +# Copyright 2021 Denis Mudarisov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +import logging + +import requests + +from odoo import api +from odoo.tests import tagged +from odoo.tests.common import HttpCase, get_db_name +from odoo.tools import config + +from ..controllers import pinguin + +_logger = logging.getLogger(__name__) + +USER_DEMO = "base.user_demo" +USER_ADMIN = "base.user_root" +MESSAGE = "message is posted from API" + + +# TODO: test other methods: +# * /res.partner/call/{method_name} (without recordset) +# * /res.partner/{record_id} + + +@tagged("post_install", "-at_install") +class TestAPI(HttpCase): + def setUp(self): + super(TestAPI, self).setUp() + self.db_name = get_db_name() + self.phantom_env = api.Environment(self.registry.test_cr, self.uid, {}) + self.demo_user = self.phantom_env.ref(USER_DEMO) + self.admin_user = self.phantom_env.ref(USER_ADMIN) + self.model_name = "res.partner" + + def request(self, method, url, auth=None, **kwargs): + kwargs.setdefault("model", self.model_name) + kwargs.setdefault("namespace", "demo") + url = ( + "http://localhost:%d/api/v1/{namespace}" % config["http_port"] + url + ).format(**kwargs) + self.opener = requests.Session() + return self.opener.request( + method, url, timeout=30, auth=auth, json=kwargs.get("data_json") + ) + + def request_from_user(self, user, *args, **kwargs): + kwargs["auth"] = requests.auth.HTTPBasicAuth(self.db_name, user.openapi_token) + return self.request(*args, **kwargs) + + def test_read_many_all(self): + resp = self.request_from_user(self.demo_user, "GET", "/{model}") + self.assertEqual(resp.status_code, pinguin.CODE__success) + # TODO check content + + def test_read_one(self): + record_id = self.phantom_env[self.model_name].search([], limit=1).id + resp = self.request_from_user( + self.demo_user, "GET", "/{model}/{record_id}", record_id=record_id + ) + self.assertEqual(resp.status_code, pinguin.CODE__success) + # TODO check content + + def test_create_one(self): + data_for_create = {"name": "created_from_test", "type": "other"} + resp = self.request_from_user( + self.demo_user, "POST", "/{model}", data_json=data_for_create + ) + self.assertEqual(resp.status_code, pinguin.CODE__created) + created_user = self.phantom_env[self.model_name].browse(resp.json()["id"]) + self.assertEqual(created_user.name, data_for_create["name"]) + + # TODO: doesn't work in test environment + def _test_create_one_with_invalid_data(self): + """create partner without name""" + self.phantom_env = api.Environment(self.registry.test_cr, self.uid, {}) + data_for_create = {"email": "string"} + resp = self.request_from_user( + self.demo_user, "POST", "/{model}", data_json=data_for_create + ) + self.assertEqual(resp.status_code, 400) + + def test_update_one(self): + data_for_update = { + "name": "for update in test", + } + partner = self.phantom_env[self.model_name].search([], limit=1) + resp = self.request_from_user( + self.demo_user, + "PUT", + "/{model}/{record_id}", + record_id=partner.id, + data_json=data_for_update, + ) + self.assertEqual(resp.status_code, pinguin.CODE__ok_no_content) + self.assertEqual(partner.name, data_for_update["name"]) + # TODO: check result + + # TODO: doesn't work in test environment + def _test_unlink_one(self): + partner = self.phantom_env[self.model_name].create( + {"name": "record for deleting from test"} + ) + resp = self.request_from_user( + self.demo_user, "DELETE", "/{model}/{record_id}", record_id=partner.id + ) + self.assertEqual(resp.status_code, pinguin.CODE__ok_no_content) + self.assertFalse(self.phantom_env[self.model_name].browse(partner.id).exists()) + # TODO: check result + + def test_unauthorized_user(self): + resp = self.request("GET", "/{model}") + self.assertEqual(resp.status_code, pinguin.CODE__no_user_auth[0]) + + # TODO: doesn't work in test environment + def _test_invalid_dbname(self): + db_name = "invalid_db_name" + resp = self.request( + "GET", + "/{model}", + auth=requests.auth.HTTPBasicAuth(db_name, self.demo_user.openapi_token), + ) + self.assertEqual(resp.status_code, pinguin.CODE__db_not_found[0]) + self.assertEqual(resp.json()["error"], pinguin.CODE__db_not_found[1]) + + def test_invalid_user_token(self): + invalid_token = "invalid_user_token" + resp = self.request( + "GET", + "/{model}", + auth=requests.auth.HTTPBasicAuth(self.db_name, invalid_token), + ) + self.assertEqual(resp.status_code, pinguin.CODE__no_user_auth[0]) + self.assertEqual(resp.json()["error"], pinguin.CODE__no_user_auth[1]) + + def test_user_not_allowed_for_namespace(self): + namespace = self.phantom_env["openapi.namespace"].search( + [("name", "=", "demo")] + ) + new_user = self.phantom_env["res.users"].create( + {"name": "new user", "login": "new_user"} + ) + new_user.write( + {"groups_id": [(4, self.phantom_env.ref("openapi.group_user").id)]} + ) + new_user.reset_openapi_token() + new_user.flush_recordset() + self.assertTrue(new_user.id not in namespace.user_ids.ids) + self.assertTrue(namespace.id not in new_user.namespace_ids.ids) + + resp = self.request_from_user(new_user, "GET", "/{model}") + self.assertEqual(resp.status_code, pinguin.CODE__user_no_perm[0], resp.json()) + self.assertEqual(resp.json()["error"], pinguin.CODE__user_no_perm[1]) + + def test_call_allowed_method_on_singleton_record(self): + if ( + not self.env["ir.module.module"].search([("name", "=", "mail")]).state + == "installed" + ): + self.skipTest( + "To run test 'test_call_allowed_method_on_singleton_record' install 'mail'-module" + ) + partner = self.phantom_env[self.model_name].search([], limit=1) + method_name = "message_post" + method_params = {"kwargs": {"body": MESSAGE}} + resp = self.request_from_user( + self.demo_user, + "PATCH", + "/{model}/{record_id}/call/{method_name}", + record_id=partner.id, + method_name=method_name, + data_json=method_params, + ) + self.assertEqual(resp.status_code, pinguin.CODE__success) + # TODO check that message is created + + def test_call_allowed_method_on_recordset(self): + partners = self.phantom_env[self.model_name].search([], limit=5) + method_name = "write" + method_params = { + "args": [{"name": "changed from write method called from api"}], + } + ids = partners.mapped("id") + ids_str = ",".join(str(i) for i in ids) + + resp = self.request_from_user( + self.demo_user, + "PATCH", + "/{model}/call/{method_name}/{ids}", + method_name=method_name, + ids=ids_str, + data_json=method_params, + ) + + self.assertEqual(resp.status_code, pinguin.CODE__success) + for i in range(len(partners)): + self.assertTrue(resp.json()[i]) + # reread records + partners = self.phantom_env[self.model_name].browse(ids) + for partner in partners: + self.assertEqual(partner.name, method_params["args"][0]["name"]) + + def test_call_model_method(self): + domain = [["id", "=", 1]] + record = self.phantom_env[self.model_name].search(domain) + self.assertTrue(record, "Record with ID 1 is not available") + + method_name = "search" + method_params = { + "args": [domain], + } + resp = self.request_from_user( + self.demo_user, + "PATCH", + "/{model}/call/{method_name}", + method_name=method_name, + data_json=method_params, + ) + + self.assertEqual(resp.status_code, pinguin.CODE__success) + self.assertEqual(resp.json(), [1]) + + # TODO: doesn't work in test environment + def _test_log_creating(self): + logs_count_before_request = len(self.phantom_env["openapi.log"].search([])) + self.request_from_user(self.demo_user, "GET", "/{model}") + logs_count_after_request = len(self.phantom_env["openapi.log"].search([])) + self.assertTrue(logs_count_after_request > logs_count_before_request) + + # TODO test is not update for the latest module version + def _test_get_report_for_allowed_model(self): + super_user = self.phantom_env.ref(USER_ADMIN) + modelname_for_report = "ir.module.module" + report_external_id = "base.ir_module_reference_print" + + model_for_report = self.phantom_env["ir.model"].search( + [("model", "=", modelname_for_report)] + ) + namespace = self.phantom_env["openapi.namespace"].search([("name", "=")]) + records_for_report = self.phantom_env[modelname_for_report].search([], limit=3) + docids = ",".join([str(i) for i in records_for_report.ids]) + + self.phantom_env["openapi.access"].create( + { + "active": True, + "namespace_id": namespace.id, + "model_id": model_for_report.id, + "model": modelname_for_report, + "api_create": False, + "api_read": True, + "api_update": False, + "api_public_methods": False, + "public_methods": False, + "private_methods": False, + "read_one_id": False, + "read_many_id": False, + "create_context_ids": False, + } + ) + + super_user.write({"namespace_ids": [(4, namespace.id)]}) + + url = "http://localhost:%d/api/v1/demo/report/html/%s/%s" % ( + config["http_port"], + report_external_id, + docids, + ) + resp = requests.request( + "GET", + url, + timeout=30, + auth=requests.auth.HTTPBasicAuth(self.db_name, super_user.openapi_token), + ) + self.assertEqual(resp.status_code, pinguin.CODE__success) + + def test_response_has_no_error(self): + method_name = "search_read" + method_params = { + "args": [[["id", "=", "1"]], ["id", "name"]], + } + resp = self.request_from_user( + self.demo_user, + "PATCH", + "/{model}/call/{method_name}", + method_name=method_name, + data_json=method_params, + ) + self.assertNotIn("error", resp.json()) diff --git a/openapi/tests/test_json_spec.py b/openapi/tests/test_json_spec.py new file mode 100644 index 00000000..6ce73bed --- /dev/null +++ b/openapi/tests/test_json_spec.py @@ -0,0 +1,37 @@ +# Copyright 2018-2019 Ivan Yelizariev +# Copyright 2018 Rafis Bikbov +# Copyright 2021 Denis Mudarisov +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). +import json + +from bravado_core.spec import Spec +from swagger_spec_validator import SwaggerValidationError + +from odoo.tests import tagged +from odoo.tests.common import HttpCase +from odoo.tools import config + + +@tagged("post_install", "-at_install") +class TestJsonSpec(HttpCase): + def test_json_base(self): + + resp = self.url_open( + "http://localhost:%d/api/v1/demo/swagger.json?token=demo_token&download" + % config["http_port"], + timeout=30, + ) + self.assertEqual(resp.status_code, 200, "Cannot get json spec") + # TODO add checking actual content of the json + + def test_OAS_scheme_for_demo_data_is_valid(self): + resp = self.url_open( + "http://localhost:%d/api/v1/demo/swagger.json?token=demo_token&download" + % config["http_port"], + timeout=30, + ) + spec_dict = json.loads(resp.content.decode("utf8")) + try: + Spec.from_dict(spec_dict, config={"validate_swagger_spec": True}) + except SwaggerValidationError as e: + self.fail("A JSON Schema for Swagger 2.0 is not valid:\n %s" % e) diff --git a/openapi/views/ir_model_view.xml b/openapi/views/ir_model_view.xml new file mode 100644 index 00000000..f3685710 --- /dev/null +++ b/openapi/views/ir_model_view.xml @@ -0,0 +1,26 @@ + + + + ir.model.form + ir.model + + + +

+ + + + diff --git a/openapi/views/openapi_view.xml b/openapi/views/openapi_view.xml new file mode 100644 index 00000000..b4b1bdf3 --- /dev/null +++ b/openapi/views/openapi_view.xml @@ -0,0 +1,262 @@ + + + + + ir.exports.form + ir.exports + +
+ + + + + + + + + + + +
+ +
+
+ + logs.tree.view + openapi.log + + + + + + + + + + openapi.log.form + openapi.log + +
+ + + + + + + + +
+
+
+ + openapi.access.form + openapi.access + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ +
+
+
+ + + +
+ + + + + +
+
+
+
+
+ +
+
+ + openapi.namespace.form + openapi.namespace + +
+
+
+ +
+ +
+ +
+
+ + + + + + + + + + + + + + + + + +
+
+
+
+ + openapi.namespace.tree + openapi.namespace + + + + + + + + openapi.access.tree + openapi.access + + + + + + + + + Integrations + openapi.namespace + tree,form + Create and manage the namespaces. + + + Accesses + openapi.access + tree,form + [('model_id', '=', active_id)] + {'default_model_id': active_id} + + + + +
diff --git a/openapi/views/res_users_view.xml b/openapi/views/res_users_view.xml new file mode 100644 index 00000000..9ba847b3 --- /dev/null +++ b/openapi/views/res_users_view.xml @@ -0,0 +1,28 @@ + + + + res.users.form.view + res.users + + 120 + +
+
+ + + + + + + + +
+
+

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