start of wazo bridge, no comm

This commit is contained in:
Benoît Vézina 2024-05-14 13:49:04 -04:00
parent 737f3c0bd1
commit c277ec4fe6
6 changed files with 162 additions and 0 deletions

View file

@ -0,0 +1 @@
from . import models

View file

@ -0,0 +1,19 @@
{
'name': 'Wazo Configurator',
'version': '17.0.0.1.0',
'summary': 'Module to configure Wazo server from Odoo',
'category': 'Tools',
'author': 'Benoît Vézina',
'website': 'http://www.bemade.org',
'license': 'OPL-1',
'depends': [
'base',
'hr'
],
'data': [
'views/res_config_settings_views.xml'
],
'installable': True,
'application': False,
'auto_install': False,
}

View file

@ -0,0 +1,2 @@
from . import res_company
from . import res_config_settings

View file

@ -0,0 +1,21 @@
from odoo import models, fields
class ResCompany(models.Model):
_inherit = 'res.company'
wazo_active = fields.Char(
string='Wazo Tenant'
)
wazo_tenant = fields.Char(
string='Wazo Tenant'
)
wazo_server_url = fields.Char(
string='Wazo Server URL'
)
wazo_username = fields.Char(
string='Wazo Username'
)
wazo_password = fields.Char(
string='Wazo Password'
)

View file

@ -0,0 +1,57 @@
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
import requests
import json
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
wazo_tenant = fields.Char(
related='company_id.wazo_tenant',
string='Wazo Tenant',
readonly=False
)
wazo_server_url = fields.Char(
related='company_id.wazo_server_url',
string='Wazo Server URL',
readonly=False
)
wazo_username = fields.Char(
related='company_id.wazo_username',
string='Wazo Username',
readonly=False
)
wazo_password = fields.Char(
related='company_id.wazo_password',
string='Wazo Password',
readonly=False
)
def set_values(self):
super(ResConfigSettings, self).set_values()
company = self.env.user.company_id
url = self.wazo_server_url
username = self.wazo_username
password = self.wazo_password
tenant = self.wazo_tenant
if url and username and password and tenant:
try:
self._check_wazo_connection(url, username, password, tenant)
except ValidationError as e:
raise ValidationError(_("Failed to connect to Wazo server: %s") % e)
def _check_wazo_connection(self, url, username, password, tenant):
payload = {
"backend": "wazo_user",
"expire": "3600",
"login": username,
"password": password,
}
headers = {
'Content-Type': 'application/json',
'Wazo-Tenant': tenant
}
response = requests.post(f"{url}/api/auth/0.1/token", headers=headers, json=payload, verify=False)
if response.status_code != 200:
raise ValidationError(response.json().get('message', 'Unknown error'))

View file

@ -0,0 +1,62 @@
<!--<odoo>-->
<!-- <record id="res_config_settings_view_form_inherit_wazo" model="ir.ui.view">-->
<!-- <field name="name">res.config.settings.inherit.wazo</field>-->
<!-- <field name="model">res.config.settings</field>-->
<!-- <field name="inherit_id" ref="base_setup.res_config_settings_view_form"/>-->
<!-- <field name="arch" type="xml">-->
<!-- <xpath expr="//block[@name='integration']" position="inside">-->
<!-- <setting string="Wazo Configuration">-->
<!-- <div>-->
<!-- <div class="content-group mt16">-->
<!-- <label for="wazo_name" class="o_light_label mr8">Wazo Name</label>-->
<!-- <field name="wazo_name" placeholder="Enter Wazo Name"/>-->
<!-- </div>-->
<!-- <div class="content-group mt16">-->
<!-- <label for="wazo_server_url" class="o_light_label mr8">Wazo Server URL</label>-->
<!-- <field name="wazo_server_url" placeholder="Enter Wazo Server URL"/>-->
<!-- </div>-->
<!-- <div class="content-group mt16">-->
<!-- <label for="wazo_api_token" class="o_light_label mr8">Wazo API Token</label>-->
<!-- <field name="wazo_api_token" placeholder="Enter Wazo API Token"/>-->
<!-- </div>-->
<!-- </div>-->
<!-- </setting>-->
<!-- </xpath>-->
<!-- </field>-->
<!-- </record>-->
<!--</odoo>-->
<odoo>
<record id="res_config_settings_view_form_inherit_wazo" model="ir.ui.view">
<field name="name">res.config.settings.inherit.wazo</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="base_setup.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//block[@name='integration']" position="inside">
<setting string="Wazo Configuration" name="wazo_settings">
<div class="row mt16 o_settings_container">
<div>
<div class="content-group mt16">
<label for="wazo_tenant" class="o_light_label mr8">Wazo Tenant</label>
<field name="wazo_tenant" placeholder="Enter Wazo Tenant"/>
</div>
<div class="content-group mt16">
<label for="wazo_server_url" class="o_light_label mr8">Wazo Server URL</label>
<field name="wazo_server_url" placeholder="Enter Wazo Server URL"/>
</div>
<div class="content-group mt16">
<label for="wazo_username" class="o_light_label mr8">Wazo Username</label>
<field name="wazo_username" placeholder="Enter Wazo Username"/>
</div>
<div class="content-group mt16">
<label for="wazo_password" class="o_light_label mr8">Wazo Password</label>
<field name="wazo_password" placeholder="Enter Wazo Password"/>
</div>
</div>
</div>
</setting>
</xpath>
</field>
</record>
</odoo>