odoo-somconnexio-python-client


Nameodoo-somconnexio-python-client JSON
Version 0.1.40 PyPI version JSON
download
home_pagehttps://gitlab.com/coopdevs/odoo-somconnexio-python-client
SummaryPython wrapper for SomConnexio's Odoo (using REST API)
upload_time2024-04-03 11:39:27
maintainerDaniel Palomar
docs_urlNone
authorCoopdevs
requires_pythonNone
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![pipeline status](https://gitlab.com/coopdevs/odoo-somconnexio-python-client/badges/master/pipeline.svg)](https://gitlab.com/coopdevs/odoo-somconnexio-python-client/commits/master)
[![coverage report](https://gitlab.com/coopdevs/odoo-somconnexio-python-client/badges/master/coverage.svg)](https://gitlab.com/coopdevs/odoo-somconnexio-python-client/commits/master)

: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](https://gitlab.com/coopdevs/odoo-somconnexio).

## 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

```commandline
$ 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](https://github.com/OCA/server-auth/tree/12.0/auth_api_key) Odoo module.

## Usage

#### Search providers by service

```python
>>> 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

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

#### Search Partner by VAT number

```python
>>> 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

```python
>>> 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

```json
{
  "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

```json
{
  "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`
```sh
curl https://pyenv.run | bash
```
2. Build the Python version
```sh
pyenv install  3.8.13
```
3. Create a virtualenv
```sh
pyenv virtualenv 3.8.13 odoo-somconnexio-python-client
```
4. Install dependencies
```sh
pyenv exec pip install -r requirements-dev.txt
```
5. Install pre-commit hooks
```sh
pyenv exec pre-commit install
```

### Test the HTTP request

We are using the HTTP recording plugin of Pytest: [pytest-recording](https://pytest-vcr.readthedocs.io/).

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](#configuration-environment)
* 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

```commandline
$ tox
```
### Formatting

We use [pre-commit](https://pre-commit.com/) to execute [Black](https://github.com/psf/black) as formatter.


### Release process

Update CHANGELOG.md following this steps:

1. Add any entries missing from merged merge requests.
1. Duplicate the `[Unreleased]` header.
1. 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.
1. Open a merge request with these changes for the team to approve
1. Merge it, add a git tag on that merge commit and push it.
1. Once the pipeline has successfully passed, go approve the `publish` step.



            

Raw data

            {
    "_id": null,
    "home_page": "https://gitlab.com/coopdevs/odoo-somconnexio-python-client",
    "name": "odoo-somconnexio-python-client",
    "maintainer": "Daniel Palomar",
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "Coopdevs",
    "author_email": "info@coopdevs.org",
    "download_url": "https://files.pythonhosted.org/packages/a5/51/9e9780e313130570629555043019ae9489d7cf47f94f1d1ff7676ae0cbe1/odoo-somconnexio-python-client-0.1.40.tar.gz",
    "platform": null,
    "description": "[![pipeline status](https://gitlab.com/coopdevs/odoo-somconnexio-python-client/badges/master/pipeline.svg)](https://gitlab.com/coopdevs/odoo-somconnexio-python-client/commits/master)\n[![coverage report](https://gitlab.com/coopdevs/odoo-somconnexio-python-client/badges/master/coverage.svg)](https://gitlab.com/coopdevs/odoo-somconnexio-python-client/commits/master)\n\n:warning: WORK IN PROGRESS :warning:\n\nThis library is a Python wrapper for accessing Somconnexio's Odoo (Odoo v12 with customizations).\nMore info about the customizations in [SomConnexio Odoo module](https://gitlab.com/coopdevs/odoo-somconnexio).\n\n## Resources\n\n* SubscriptionRequest - Customer order\n* CRMLead - Service order\n* Provider - Service providers\n* DiscoveryChannel\n* Partner - Customer information\n* Contract - Contract information\n* ProductCatalog - Sales product variants\n* CoopAgreement - lit for coop agreement code\n\n## Installation\n\n```commandline\n$ pip install odoo-somconnexio-python-client\n```\n\n## Configuration Environment\n\nYou need define the Odoo API-KEY and URL as environment variables. You need define:\n\n```\nODOO_BASEURL=<YOUR ODOO HOST>/api\nODOO_APIKEY=<YOUR ODOO API KEY>\n```\n\nIf this envvars are not defined, a exception will be raised with the name of the envvar not defined.\nMore info about the API-KEY in [Auth API Key](https://github.com/OCA/server-auth/tree/12.0/auth_api_key) Odoo module.\n\n## Usage\n\n#### Search providers by service\n\n```python\n>>> from odoo_somconnexio_python_client.resources.provider import Provider\n>>>\n>>> mobile_providers = Provider.mobile_list()\n>>> mobile_providers[0].id\n123\n>>> mobile_providers[0].name\n\"SomConnexi\u00f3\"\n```\n\n#### Get Partner with ref\n\n```python\n>>> from odoo_somconnexio_python_client.resources.partner import Partner\n>>>\n>>> partner = Partner.get(1234)\n>>> partner.id\n123\n>>> partner.ref\n\"1234\"\n```\n\n#### Search Partner by VAT number\n\n```python\n>>> from odoo_somconnexio_python_client.resources.partner import Partner\n>>>\n>>> partner = Partner.search_by_vat(vat=\"XXXX\")\n>>> partner.id\n123\n>>> partner.ref\n\"1234\"\n```\n\n#### Search Contracts by partner's VAT number\n\n```python\n>>> from odoo_somconnexio_python_client.resources.contract import Contract\n>>>\n>>> contracts = Contract.search_by_customer_vat(vat=\"XXXX\")\n>>> contracts[0].id\n123\n>>> contracts[0].phone_number\n\"972445566\"\n```\n\n### Create new mapper\n\nCreate a class that exposes a dict object with the next structure:\n\n#### Create a SubscriptionRequest\n\n```json\n{\n  \"name\": \"string\",\n  \"email\": \"string\",\n  \"ordered_parts\": 0,\n  \"share_product\": 0,\n  \"address\": {\n    \"street\": \"string\",\n    \"street2\": \"string\",\n    \"zip_code\": \"string\",\n    \"city\": \"string\",\n    \"country\": \"string\",\n    \"state\": \"string\"\n  },\n  \"lang\": \"string\",\n  \"iban\": \"string\",\n  \"vat\": \"string\",\n  \"coop_agreement\": \"string\",\n  \"voluntary_contribution\": 0,\n  \"nationality\": \"string\",\n  \"payment_type\": \"string\"\n}\n```\n\n#### Create a CRMLead\n\n```json\n{\n  \"iban\": \"string\",\n  \"subscription_request_id\": 0,\n  \"partner_id\": 0,\n  \"lead_line_ids\": [\n    {\n      \"product_code\": \"string\",\n      \"broadband_isp_info\": {\n        \"phone_number\": \"string\",\n        \"type\": \"string\",\n        \"delivery_address\": {\n          \"street\": \"string\",\n          \"street2\": \"string\",\n          \"zip_code\": \"string\",\n          \"city\": \"string\",\n          \"country\": \"string\",\n          \"state\": \"string\"\n        },\n        \"previous_provider\": 0,\n        \"previous_owner_vat_number\": \"string\",\n        \"previous_owner_name\": \"string\",\n        \"previous_owner_first_name\": \"string\",\n        \"service_address\": {\n          \"street\": \"string\",\n          \"street2\": \"string\",\n          \"zip_code\": \"string\",\n          \"city\": \"string\",\n          \"country\": \"string\",\n          \"state\": \"string\"\n        },\n        \"previous_service\": \"string\",\n        \"keep_phone_number\": true,\n        \"change_address\": true\n      },\n      \"mobile_isp_info\": {\n        \"phone_number\": \"string\",\n        \"type\": \"string\",\n        \"delivery_address\": {\n          \"street\": \"string\",\n          \"street2\": \"string\",\n          \"zip_code\": \"string\",\n          \"city\": \"string\",\n          \"country\": \"string\",\n          \"state\": \"string\"\n        },\n        \"previous_provider\": 0,\n        \"previous_owner_vat_number\": \"string\",\n        \"previous_owner_name\": \"string\",\n        \"previous_owner_first_name\": \"string\",\n        \"icc\": \"string\",\n        \"icc_donor\": \"string\",\n        \"previous_contract_type\": \"string\"\n      }\n    }\n  ]\n}\n```\n\n## Development\n\n### Setup environment\n\n1. Install `pyenv`\n```sh\ncurl https://pyenv.run | bash\n```\n2. Build the Python version\n```sh\npyenv install  3.8.13\n```\n3. Create a virtualenv\n```sh\npyenv virtualenv 3.8.13 odoo-somconnexio-python-client\n```\n4. Install dependencies\n```sh\npyenv exec pip install -r requirements-dev.txt\n```\n5. Install pre-commit hooks\n```sh\npyenv exec pre-commit install\n```\n\n### Test the HTTP request\n\nWe are using the HTTP recording plugin of Pytest: [pytest-recording](https://pytest-vcr.readthedocs.io/).\n\nWith VRC we can catch the HTTP responses and then, execute the tests using them.\n\nTo 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.\n\n```\nmonkeypatch.setenv(\"ODOO_APIKEY\", \"<ACTUAL_ODOO_APIKEY>\")\n```\n\u26a0\ufe0f\n**Do not commit this change!**\n\nTo add a new test:\n\n* Expose the needed envvars. Look for them at the [Configuration Environment section](#configuration-environment)\n* Execute the tests using `pytest` command:\n* If you are writing a new test that is making requests, you should run:\n\n```\n$ pytest --record-mode=once path/to/your/test\n```\n\n* You might need to record requests for an specific tests. In that case make sure to only run the tests affected and run\n\n```\n$ pytest --record-mode=rewrite path/to/your/test\n```\n\n* Add the new `cassetes` to the commit and push them.\n* The CI uses the cassetes to emulate the HTTP response in the test.\n\n### Run test suite\n\n```commandline\n$ tox\n```\n### Formatting\n\nWe use [pre-commit](https://pre-commit.com/) to execute [Black](https://github.com/psf/black) as formatter.\n\n\n### Release process\n\nUpdate CHANGELOG.md following this steps:\n\n1. Add any entries missing from merged merge requests.\n1. Duplicate the `[Unreleased]` header.\n1. Replace the second `Unreleased` with a version number followed by the current date. Copy the exact format from previous releases.\n\nThen, you can release and publish the package to PyPi:\n\n1. Update the `__version__` var in `__init__.py` matching the version you specified in the CHANGELOG.\n1. Open a merge request with these changes for the team to approve\n1. Merge it, add a git tag on that merge commit and push it.\n1. Once the pipeline has successfully passed, go approve the `publish` step.\n\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Python wrapper for SomConnexio's Odoo (using REST API)",
    "version": "0.1.40",
    "project_urls": {
        "Homepage": "https://gitlab.com/coopdevs/odoo-somconnexio-python-client"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5670fc8674215cfe28971deeaa4d0b46aa0837ddf4eb6b22e7511f3d35108811",
                "md5": "b532b537e86b19c9d025ba25d7e78d84",
                "sha256": "f1f9f25fdf87061ff23fecc5495d00b9f259baa3117c8f3b44aaec52a57c29ae"
            },
            "downloads": -1,
            "filename": "odoo_somconnexio_python_client-0.1.40-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b532b537e86b19c9d025ba25d7e78d84",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 38964,
            "upload_time": "2024-04-03T11:39:25",
            "upload_time_iso_8601": "2024-04-03T11:39:25.134731Z",
            "url": "https://files.pythonhosted.org/packages/56/70/fc8674215cfe28971deeaa4d0b46aa0837ddf4eb6b22e7511f3d35108811/odoo_somconnexio_python_client-0.1.40-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a5519e9780e313130570629555043019ae9489d7cf47f94f1d1ff7676ae0cbe1",
                "md5": "f7ec7829292f8e155175ba16dad8e523",
                "sha256": "a4a43dd431002a0bd9be42e107171be5d01fd465106c10b712ac8bd71315a246"
            },
            "downloads": -1,
            "filename": "odoo-somconnexio-python-client-0.1.40.tar.gz",
            "has_sig": false,
            "md5_digest": "f7ec7829292f8e155175ba16dad8e523",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 30118,
            "upload_time": "2024-04-03T11:39:27",
            "upload_time_iso_8601": "2024-04-03T11:39:27.754156Z",
            "url": "https://files.pythonhosted.org/packages/a5/51/9e9780e313130570629555043019ae9489d7cf47f94f1d1ff7676ae0cbe1/odoo-somconnexio-python-client-0.1.40.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-03 11:39:27",
    "github": false,
    "gitlab": true,
    "bitbucket": false,
    "codeberg": false,
    "gitlab_user": "coopdevs",
    "gitlab_project": "odoo-somconnexio-python-client",
    "lcname": "odoo-somconnexio-python-client"
}
        
Elapsed time: 0.26865s