Skip to main content

pipeline status coverage report

:warning: WORK IN PROGRESS :warning:

This library is a Python wrapper for accessing Somconnexio's Odoo (Odoo v12 with customizations). More info about the customizations in SomConnexio Odoo module.

Resources

  • SubscriptionRequest - Customer order
  • CRMLead - Service order
  • Provider - Service providers
  • DiscoveryChannel
  • Partner - Customer information
  • Contract - Contract information
  • ProductCatalog - Sales product variants
  • CoopAgreement - lit for coop agreement code

Installation

$ pip install odoo-somconnexio-python-client

Configuration Environment

You need define the Odoo API-KEY and URL as environment variables. You need define:

ODOO_BASEURL=<YOUR ODOO HOST>/api
ODOO_APIKEY=<YOUR ODOO API KEY>

If this envvars are not defined, a exception will be raised with the name of the envvar not defined. More info about the API-KEY in Auth API Key Odoo module.

Usage

Search providers by service

>>> from odoo_somconnexio_python_client.resources.provider import Provider
>>>
>>> mobile_providers = Provider.mobile_list()
>>> mobile_providers[0].id
123
>>> mobile_providers[0].name
"SomConnexió"

Get Partner with ref

>>> from odoo_somconnexio_python_client.resources.partner import Partner
>>>
>>> partner = Partner.get(1234)
>>> partner.id
123
>>> partner.ref
"1234"

Search Partner by VAT number

>>> from odoo_somconnexio_python_client.resources.partner import Partner
>>>
>>> partner = Partner.search_by_vat(vat="XXXX")
>>> partner.id
123
>>> partner.ref
"1234"

Search Contracts by partner's VAT number

>>> from odoo_somconnexio_python_client.resources.contract import Contract
>>>
>>> contracts = Contract.search_by_customer_vat(vat="XXXX")
>>> contracts[0].id
123
>>> contracts[0].phone_number
"972445566"

Create new mapper

Create a class that exposes a dict object with the next structure:

Create a SubscriptionRequest

{
  "name": "string",
  "email": "string",
  "ordered_parts": 0,
  "share_product": 0,
  "address": {
    "street": "string",
    "street2": "string",
    "zip_code": "string",
    "city": "string",
    "country": "string",
    "state": "string"
  },
  "lang": "string",
  "iban": "string",
  "vat": "string",
  "coop_agreement": "string",
  "voluntary_contribution": 0,
  "nationality": "string",
  "payment_type": "string"
}

Create a CRMLead

{
  "iban": "string",
  "subscription_request_id": 0,
  "partner_id": 0,
  "lead_line_ids": [
    {
      "product_code": "string",
      "broadband_isp_info": {
        "phone_number": "string",
        "type": "string",
        "delivery_address": {
          "street": "string",
          "street2": "string",
          "zip_code": "string",
          "city": "string",
          "country": "string",
          "state": "string"
        },
        "previous_provider": 0,
        "previous_owner_vat_number": "string",
        "previous_owner_name": "string",
        "previous_owner_first_name": "string",
        "service_address": {
          "street": "string",
          "street2": "string",
          "zip_code": "string",
          "city": "string",
          "country": "string",
          "state": "string"
        },
        "previous_service": "string",
        "keep_phone_number": true,
        "change_address": true
      },
      "mobile_isp_info": {
        "phone_number": "string",
        "type": "string",
        "delivery_address": {
          "street": "string",
          "street2": "string",
          "zip_code": "string",
          "city": "string",
          "country": "string",
          "state": "string"
        },
        "previous_provider": 0,
        "previous_owner_vat_number": "string",
        "previous_owner_name": "string",
        "previous_owner_first_name": "string",
        "icc": "string",
        "icc_donor": "string",
        "previous_contract_type": "string"
      }
    }
  ]
}

Development

Setup environment

  1. Install pyenv
curl https://pyenv.run | bash
  1. Build the Python version
pyenv install  3.8.13
  1. Create a virtualenv
pyenv virtualenv 3.8.13 odoo-somconnexio-python-client
  1. Install dependencies
pyenv exec pip install -r requirements-dev.txt
  1. Install pre-commit hooks
pyenv exec pre-commit install

Test the HTTP request

We are using the HTTP recording plugin of Pytest: pytest-recording.

With VRC we can catch the HTTP responses and then, execute the tests using them.

To actually call the Odoo local client in order to create or rewrite cassettes using the next pyenv commands, we need to first change the conftest.py file and temporally provide the actual Odoo API-KEY.

monkeypatch.setenv("ODOO_APIKEY", "<ACTUAL_ODOO_APIKEY>")

⚠️ Do not commit this change!

To add a new test:

  • Expose the needed envvars. Look for them at the Configuration Environment section
  • Execute the tests using pytest command:
  • If you are writing a new test that is making requests, you should run:
$ pytest --record-mode=once path/to/your/test
  • You might need to record requests for an specific tests. In that case make sure to only run the tests affected and run
$ pytest --record-mode=rewrite path/to/your/test
  • Add the new cassetes to the commit and push them.
  • The CI uses the cassetes to emulate the HTTP response in the test.

Run test suite

$ tox

Formatting

We use pre-commit to execute Black as formatter.

Release process

Update CHANGELOG.md following this steps:

  1. Add any entries missing from merged merge requests.
  2. Duplicate the [Unreleased] header.
  3. Replace the second Unreleased with a version number followed by the current date. Copy the exact format from previous releases.

Then, you can release and publish the package to PyPi:

  1. Update the __version__ var in __init__.py matching the version you specified in the CHANGELOG.
  2. Open a merge request with these changes for the team to approve
  3. Merge it, add a git tag on that merge commit and push it.
  4. Once the pipeline has successfully passed, go approve the publish step.

Metadata

Release files for odoo-somconnexio-python-client 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for odoo-somconnexio-python-client 0.2.1
File Size Uploaded
odoo_somconnexio_python_client-0.2.1.tar.gz 35.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for odoo-somconnexio-python-client 0.2.1
File Interpreter ABI Platform
odoo_somconnexio_python_client-0.2.1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 83.9 kB

Release files / odoo_somconnexio_python_client-0.2.1.tar.gz

Download URL odoo_somconnexio_python_client-0.2.1.tar.gz
Size 35.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c171e2751a40dcec0728adcc99217369b37f03dd2112549d68799a0a141a044b
BLAKE2b-256 checksum
How to use checksums
98e8ae7619fe5f5e2e182f6e5889f678b1c6dcc0ffc314b303daa3c95757fa18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release files / odoo_somconnexio_python_client-0.2.1-py2.py3-none-any.whl

Download URL odoo_somconnexio_python_client-0.2.1-py2.py3-none-any.whl
Size 48.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
c1de34fb713d87e9cf2ccc742efffe9b0089c76fc6c3b049187906920c2a44d6
BLAKE2b-256 checksum
How to use checksums
0fea3aa89d79eeb4e241a43666809753f90eee3100185fcfc25a3bf4bf4cfd9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release history Release notifications | RSS feed

0.2.3

2 release files

0.2.2

2 release files

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.54

2 release files

0.1.52

2 release files

0.1.51

2 release files

0.1.50

2 release files

0.1.49

1 release file

0.1.48

2 release files

0.1.47

2 release files

0.1.44

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.39

2 release files

0.1.38

2 release files

0.1.37

2 release files

0.1.35

2 release files

0.1.34

2 release files

0.1.33

2 release files

0.1.32

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.28

2 release files

0.1.26

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.18

2 release files

0.1.16

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page