跳转到主要内容

为SomConnexio的Odoo(使用REST API)提供的Python包装器

项目描述

pipeline status coverage report

:warning: 进行中 :warning

此库是访问Somconnexio的Odoo(带有自定义的Odoo v12)的Python包装器。有关自定义的更多信息,请参阅SomConnexio Odoo模块

资源

  • SubscriptionRequest - 客户订单
  • CRMLead - 服务订单
  • Provider - 服务提供商
  • DiscoveryChannel
  • Partner - 客户信息
  • Contract - 合同信息
  • ProductCatalog - 销售产品变体
  • CoopAgreement - 合作协议代码

安装

$ pip install odoo-somconnexio-python-client

配置环境

您需要定义Odoo API-KEY和URL作为环境变量。您需要定义

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

如果未定义这些环境变量,将引发一个异常,显示未定义的环境变量名称。有关API-KEY的更多信息,请参阅Auth API Key Odoo模块。

使用方法

按服务搜索提供商

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

通过ref获取合作伙伴

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

按增值税号搜索合作伙伴

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

按合作伙伴的增值税号搜索合同

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

创建新的映射器

创建一个公开具有以下结构的dict对象的类

创建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"
}

创建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"
      }
    }
  ]
}

开发

设置环境

  1. 安装pyenv
curl https://pyenv.run | bash
  1. 构建Python版本
pyenv install  3.8.13
  1. 创建virtualenv
pyenv virtualenv 3.8.13 odoo-somconnexio-python-client
  1. 安装依赖项
pyenv exec pip install -r requirements-dev.txt
  1. 安装预提交钩子
pyenv exec pre-commit install

测试HTTP请求

我们使用Pytest的HTTP录制插件:[pytest-recording](https://pytest-vcr.readthedocs.io/)。

使用VCR,我们可以捕获HTTP响应,然后使用它们来执行测试。

要实际调用Odoo本地客户端以创建或重写cassettes,我们需要首先更改conftest.py文件,并临时提供实际的Odoo API-KEY。

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

⚠️ 不要提交此更改!

添加新测试

  • 公开所需的envvars。在配置环境部分查找它们
  • 使用pytest命令执行测试
  • 如果您正在编写一个新的进行请求的测试,您应该运行
$ pytest --record-mode=once path/to/your/test
  • 您可能需要为特定的测试记录请求。在这种情况下,请确保只运行受影响的测试并运行
$ pytest --record-mode=rewrite path/to/your/test
  • 将新的cassetes添加到提交并推送它们。
  • CI使用cassetes在测试中模拟HTTP响应。

运行测试套件

$ tox

格式化

我们使用pre-commit来执行Black作为格式化器。

发布流程

按照以下步骤更新CHANGELOG.md

  1. 添加任何缺失的合并请求条目。
  2. 复制[Unreleased]标题。
  3. 将第二个Unreleased替换为版本号和当前日期。复制从以前的版本中获取的精确格式。

然后,您可以发布并将包发布到PyPi

  1. __init__.py中更新__version__变量,以匹配CHANGELOG中指定的版本。
  2. 提交一个包含这些更改的合并请求以供团队批准
  3. 合并它,在合并提交上添加git标签并将其推送。
  4. 一旦管道成功通过,请批准发布步骤。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

odoo-somconnexio-python-client-0.1.41.tar.gz (30.2 kB 查看散列)

上传时间

构建分发

odoo_somconnexio_python_client-0.1.41-py2.py3-none-any.whl (39.1 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面