Skip to content

Commit

Permalink
[ADD] pos_odoo_driver_device_list
Browse files Browse the repository at this point in the history
  • Loading branch information
legalsylvain committed Sep 13, 2024
1 parent d532352 commit 9e2e65b
Show file tree
Hide file tree
Showing 19 changed files with 149 additions and 0 deletions.
Empty file.
1 change: 1 addition & 0 deletions pos_odoo_driver_device_list/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
24 changes: 24 additions & 0 deletions pos_odoo_driver_device_list/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

{
"name": "Point of Sale - Devices List (odoo-pos-driver)",
"version": "16.0.1.0.0",
"category": "Point Of Sale",
"summary": "Get devices information from odoo-pos-driver library",
"author": "GRAP",
"website": "https://github.com/grap/odoo-addons-pos",
"license": "AGPL-3",
"depends": ["point_of_sale"],
"assets": {
"point_of_sale.assets": [
"pos_odoo_driver_device_list/static/src/js/devices.esm.js",
],
},
"data": [
"views/view_pos_device.xml",
"security/ir.model.access.csv",
],
"installable": True,
}
Empty file.
2 changes: 2 additions & 0 deletions pos_odoo_driver_device_list/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import pos_config
from . import pos_device
11 changes: 11 additions & 0 deletions pos_odoo_driver_device_list/models/pos_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import fields, models


class PosConfig(models.Model):
_inherit = "pos.config"

device_ids = fields.One2many(comodel_name="pos.device", inverse_name="config_id")
31 changes: 31 additions & 0 deletions pos_odoo_driver_device_list/models/pos_device.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import fields, models


class PosDevice(models.Model):
_name = "pos.device"
_description = "Point of Sale Devices"

config_id = fields.Many2one(comodel_name="pos.config")

company_id = fields.Many2one(
comodel_name="res.company", default=lambda x: x._default_company_id()
)

name = fields.Char(readonly=True)

product_name = fields.Char(readonly=True)

vendor_product_code = fields.Char(readonly=True)

serial_number = fields.Char(readonly=True)

manufacturer = fields.Char(readonly=True)

last_connexion_date = fields.Datetime(readonly=True)

def _default_company_id(self):
return self.env.company

Check warning on line 31 in pos_odoo_driver_device_list/models/pos_device.py

View check run for this annotation

Codecov / codecov/patch

pos_odoo_driver_device_list/models/pos_device.py#L31

Added line #L31 was not covered by tests
1 change: 1 addition & 0 deletions pos_odoo_driver_device_list/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* Sylvain LE GAL (https://twitter.com/legalsylvain)
4 changes: 4 additions & 0 deletions pos_odoo_driver_device_list/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
This module extends the Point of Sale odoo module, to add compatibility with the ``odoo-pos-driver``
python library.

It will store connected devices information in Odoo for analysis.
9 changes: 9 additions & 0 deletions pos_odoo_driver_device_list/readme/USAGE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
* Open the Point of sale, with usb devices connected.

* Close the point of sale.

* Go to " / Devices".

you can see the devices information, with last usage date.

.. figure:: ../static/img/pos_device_tree.png
3 changes: 3 additions & 0 deletions pos_odoo_driver_device_list/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_pos_device_user,access_pos_device_user,pos_odoo_driver_device_list.model_pos_device,point_of_sale.group_pos_user,1,1,1,0
access_pos_device_manager,access_pos_device_manager,pos_odoo_driver_device_list.model_pos_device,base.group_system,1,1,1,1
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions pos_odoo_driver_device_list/static/src/js/devices.esm.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright (C) 2024 - Today: GRAP (http://www.grap.coop)
// @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
// License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

odoo.define("pos_odoo_driver_device_list.devices", function (require) {

var ProxyDevice = require("point_of_sale.devices").ProxyDevice;

var set_connection_status_super = ProxyDevice.prototype.set_connection_status;

ProxyDevice.prototype.set_connection_status = function (status, drivers, msg='') {
if (status === 'connected' && drivers !== undefined) {
var old_drivers = this.get('status').drivers;
var new_drivers = drivers ;
if (JSON.stringify(new_drivers) !== JSON.stringify(old_drivers)) {
// TODO
// Send a message to the backoffice
console.log("CHANGED");
console.log("old_drivers", old_drivers);
console.log("new_drivers", new_drivers);
}

}
set_connection_status_super.call(this, status, drivers, msg);
};

});
25 changes: 25 additions & 0 deletions pos_odoo_driver_device_list/views/view_pos_device.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" ?>
<!--
Copyright (C) 2024 - Today: GRAP (http://www.grap.coop)
@author: Sylvain LE GAL (https://twitter.com/legalsylvain)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo>

<record id="view_pos_device_tree" model="ir.ui.view">
<field name="model">pos.device</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="vendor_product_code"/>
<field name="product_name"/>
<field name="serial_number"/>
<field name="manufacturer"/>
<field name="last_connexion_date"/>
<field name="config_id"/>
<field name="company_id"/>
</tree>
</field>
</record>

</odoo>
2 changes: 2 additions & 0 deletions setup/.setuptools-odoo-make-default-ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# addons listed in this file are ignored by
# setuptools-odoo-make-default (one addon per line)
2 changes: 2 additions & 0 deletions setup/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
To learn more about this directory, please visit
https://pypi.python.org/pypi/setuptools-odoo
6 changes: 6 additions & 0 deletions setup/pos_odoo_driver_device_list/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

0 comments on commit 9e2e65b

Please sign in to comment.