From 70d06c60c480e98c66a8ac7e9a0f2bc2c25200c7 Mon Sep 17 00:00:00 2001 From: Olga Marco Date: Thu, 17 Jun 2021 16:57:44 +0200 Subject: [PATCH] [IMP] remote_report_to_printer: black, isort, prettier --- remote_report_to_printer/__manifest__.py | 26 +-- .../data/printing_data.xml | 8 +- .../models/ir_actions_report.py | 6 +- .../models/printing_action.py | 8 +- remote_report_to_printer/models/res_remote.py | 17 +- .../models/res_remote_printer.py | 42 ++--- .../tests/test_printer.py | 123 ++++++------ .../tests/test_remote_printer.py | 175 ++++++++++-------- .../views/res_remote_printer_views.xml | 20 +- .../views/res_remote_views.xml | 4 +- 10 files changed, 207 insertions(+), 222 deletions(-) diff --git a/remote_report_to_printer/__manifest__.py b/remote_report_to_printer/__manifest__.py index 39a8836..32617a1 100644 --- a/remote_report_to_printer/__manifest__.py +++ b/remote_report_to_printer/__manifest__.py @@ -2,18 +2,18 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': "Report to printer on remotes", - 'version': '12.0.2.1.1', - 'category': 'Generic Modules/Base', - 'author': "Creu Blanca, Odoo Community Association (OCA)", - 'website': 'http://www.github.com/OCA/report-print-send', - 'license': 'AGPL-3', - "depends": ['base_remote', 'base_report_to_printer'], - 'data': [ - 'data/printing_data.xml', - 'security/ir.model.access.csv', - 'views/res_remote_views.xml', - 'views/res_remote_printer_views.xml', + "name": "Report to printer on remotes", + "version": "13.0.1.0.0", + "category": "Generic Modules/Base", + "author": "Creu Blanca, Odoo Community Association (OCA)", + "website": "http://www.github.com/OCA/report-print-send", + "license": "AGPL-3", + "depends": ["base_remote", "base_report_to_printer"], + "data": [ + "data/printing_data.xml", + "security/ir.model.access.csv", + "views/res_remote_views.xml", + "views/res_remote_printer_views.xml", ], - 'installable': True, + "installable": True, } diff --git a/remote_report_to_printer/data/printing_data.xml b/remote_report_to_printer/data/printing_data.xml index 9bf8c12..ea75807 100644 --- a/remote_report_to_printer/data/printing_data.xml +++ b/remote_report_to_printer/data/printing_data.xml @@ -1,13 +1,11 @@ - + - Use Remote Defaults remote_default - - Use User Defaults - user_default + Use User Defaults + user_default diff --git a/remote_report_to_printer/models/ir_actions_report.py b/remote_report_to_printer/models/ir_actions_report.py index 417d86e..797eb18 100644 --- a/remote_report_to_printer/models/ir_actions_report.py +++ b/remote_report_to_printer/models/ir_actions_report.py @@ -5,18 +5,18 @@ from odoo import api, models class IrActionsReport(models.Model): - _inherit = 'ir.actions.report' + _inherit = "ir.actions.report" @api.multi def _get_user_default_print_behaviour(self): res = super()._get_user_default_print_behaviour() - if res.get('action', 'unknown') == 'remote_default': + if res.get("action", "unknown") == "remote_default": res.update(self.remote.get_printer_behaviour()) return res @api.multi def _get_report_default_print_behaviour(self): res = super()._get_report_default_print_behaviour() - if res.get('action', 'unknown') == 'remote_default': + if res.get("action", "unknown") == "remote_default": res.update(self.remote.get_printer_behaviour()) return res diff --git a/remote_report_to_printer/models/printing_action.py b/remote_report_to_printer/models/printing_action.py index c6f4618..8e10e1c 100644 --- a/remote_report_to_printer/models/printing_action.py +++ b/remote_report_to_printer/models/printing_action.py @@ -5,14 +5,12 @@ from odoo import api, fields, models class PrintingAction(models.Model): - _inherit = 'printing.action' + _inherit = "printing.action" @api.model def _available_action_types(self): res = super()._available_action_types() - res.append(('remote_default', "Use remote's default")) + res.append(("remote_default", "Use remote's default")) return res - action_type = fields.Selection( - selection=_available_action_types, - ) + action_type = fields.Selection(selection=_available_action_types,) diff --git a/remote_report_to_printer/models/res_remote.py b/remote_report_to_printer/models/res_remote.py index 4a961f3..69b9ce6 100644 --- a/remote_report_to_printer/models/res_remote.py +++ b/remote_report_to_printer/models/res_remote.py @@ -4,25 +4,24 @@ from odoo import api, fields, models class ResRemote(models.Model): - _inherit = 'res.remote' + _inherit = "res.remote" remote_printer_ids = fields.One2many( - 'res.remote.printer', - inverse_name='remote_id', + "res.remote.printer", inverse_name="remote_id", ) @api.multi def get_printer_behaviour(self): self.ensure_one() - printer_usage = self.env.context.get('printer_usage', 'standard') + printer_usage = self.env.context.get("printer_usage", "standard") printers = self.remote.remote_printer_ids.filtered( lambda r: r.printer_usage == printer_usage - ).sorted(key='is_default', reverse=True) + ).sorted(key="is_default", reverse=True) if printers: printer = printers[0] return { - 'action': 'server', - 'printer': printer.printer_id, - 'tray': printer.printer_tray_id.system_name + "action": "server", + "printer": printer.printer_id, + "tray": printer.printer_tray_id.system_name, } - return {'action': 'client'} + return {"action": "client"} diff --git a/remote_report_to_printer/models/res_remote_printer.py b/remote_report_to_printer/models/res_remote_printer.py index 5f86d7b..197e632 100644 --- a/remote_report_to_printer/models/res_remote_printer.py +++ b/remote_report_to_printer/models/res_remote_printer.py @@ -1,49 +1,41 @@ # Copyright (c) 2018 Creu Blanca # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, fields, models, _ +from odoo import _, api, fields, models from odoo.exceptions import ValidationError class ResRemotePrinter(models.Model): - _name = 'res.remote.printer' - _description = 'Remote Printer' + _name = "res.remote.printer" + _description = "Remote Printer" - remote_id = fields.Many2one( - 'res.remote', - ondelete='cascade', - readonly=True, - ) - printer_id = fields.Many2one( - 'printing.printer', - ondelete='cascade', - ) + remote_id = fields.Many2one("res.remote", ondelete="cascade", readonly=True,) + printer_id = fields.Many2one("printing.printer", ondelete="cascade",) printer_tray_id = fields.Many2one( - 'printing.tray', - ondelete='cascade', - domain="[('printer_id', '=', printer_id)]", + "printing.tray", ondelete="cascade", domain="[('printer_id', '=', printer_id)]", ) is_default = fields.Boolean(default=False) - printer_usage = fields.Selection([ - ('standard', 'Standard') - ], default='standard') + printer_usage = fields.Selection([("standard", "Standard")], default="standard") _sql_constraints = [ - ('unique_printer_remote_usage', - 'unique(remote_id,printer_id,printer_usage)', - 'A Remote cannot have the same printer for the same usage') + ( + "unique_printer_remote_usage", + "unique(remote_id,printer_id,printer_usage)", + "A Remote cannot have the same printer for the same usage", + ) ] - @api.onchange('printer_id') + @api.onchange("printer_id") def _onchange_printing_printer_id(self): """ Reset the tray when the printer is changed """ self.printer_tray_id = False @api.multi - @api.constrains('remote_id', 'printer_usage', 'is_default') + @api.constrains("remote_id", "printer_usage", "is_default") def _check_remote_usage(self): for rec in self.filtered(lambda r: r.is_default): if rec.remote_id.remote_printer_ids.filtered( - lambda r: r != rec and r.is_default + lambda r: r != rec + and r.is_default and r.printer_usage == rec.printer_usage ): - raise ValidationError(_('Only one default printer is allowed')) + raise ValidationError(_("Only one default printer is allowed")) diff --git a/remote_report_to_printer/tests/test_printer.py b/remote_report_to_printer/tests/test_printer.py index 27677b2..5aacda2 100644 --- a/remote_report_to_printer/tests/test_printer.py +++ b/remote_report_to_printer/tests/test_printer.py @@ -1,106 +1,89 @@ # Copyright (c) 2018 Creu Blanca # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.tests.common import TransactionCase from mock import patch +from odoo.tests.common import TransactionCase + class TestRemotePrinter(TransactionCase): - def setUp(self): super().setUp() - name = 'testing_remote_server' - self.remote = self.env['res.remote'].search([('name', '=', name)]) + name = "testing_remote_server" + self.remote = self.env["res.remote"].search([("name", "=", name)]) if not self.remote: - self.remote = self.env['res.remote'].create({ - 'name': name, - 'ip': '127.0.0.1', - }) - self.server = self.env['printing.server'].create({ - 'name': 'Server', - 'address': 'localhost', - 'port': 631, - }) - self.printer_1 = self.env['printing.printer'].create({ - 'name': 'Printer 1', - 'system_name': 'P1', - 'server_id': self.server.id, - }) - self.remote_printer = self.env['res.remote.printer'].create({ - 'remote_id': self.remote.id, - 'printer_id': self.printer_1.id, - 'is_default': True, - }) - self.Model = self.env['ir.actions.report'] - self.report = self.env['ir.actions.report'].search([], limit=1) + self.remote = self.env["res.remote"].create( + {"name": name, "ip": "127.0.0.1"} + ) + self.server = self.env["printing.server"].create( + {"name": "Server", "address": "localhost", "port": 631} + ) + self.printer_1 = self.env["printing.printer"].create( + {"name": "Printer 1", "system_name": "P1", "server_id": self.server.id} + ) + self.remote_printer = self.env["res.remote.printer"].create( + { + "remote_id": self.remote.id, + "printer_id": self.printer_1.id, + "is_default": True, + } + ) + self.Model = self.env["ir.actions.report"] + self.report = self.env["ir.actions.report"].search([], limit=1) def test_behaviour_user_remote_values(self): report = self.Model.search([], limit=1) - self.env.user.printing_action = 'remote_default' - with patch( - 'odoo.addons.base_remote.models.base.Base.remote', new=self.remote - ): + self.env.user.printing_action = "remote_default" + with patch("odoo.addons.base_remote.models.base.Base.remote", new=self.remote): behaviour = report.behaviour() - self.assertEqual(behaviour, { - 'action': 'client', - 'printer': self.printer_1, - 'tray': False, - }) + self.assertEqual( + behaviour, {"action": "client", "printer": self.printer_1, "tray": False} + ) def test_behaviour_report_values(self): report = self.Model.search([], limit=1) - self.env.user.printing_action = 'client' + self.env.user.printing_action = "client" report.property_printing_action_id = self.browse_ref( - 'remote_report_to_printer.printing_action_remote' + "remote_report_to_printer.printing_action_remote" ) - with patch( - 'odoo.addons.base_remote.models.base.Base.remote', new=self.remote - ): + with patch("odoo.addons.base_remote.models.base.Base.remote", new=self.remote): behaviour = report.behaviour() - self.assertDictEqual(behaviour, { - 'action': 'server', - 'printer': self.printer_1, - 'tray': False, - }) + self.assertDictEqual( + behaviour, {"action": "server", "printer": self.printer_1, "tray": False} + ) def test_behaviour_user_action(self): report = self.Model.search([], limit=1) - self.env.user.printing_action = 'remote_default' + self.env.user.printing_action = "remote_default" report.property_printing_action_id = self.browse_ref( - 'remote_report_to_printer.printing_action_3' + "remote_report_to_printer.printing_action_3" ) - with patch( - 'odoo.addons.base_remote.models.base.Base.remote', new=self.remote - ): + with patch("odoo.addons.base_remote.models.base.Base.remote", new=self.remote): behaviour = report.behaviour() - self.assertEqual(behaviour, { - 'action': 'server', - 'printer': self.printer_1, - 'tray': False, - }) + self.assertEqual( + behaviour, {"action": "server", "printer": self.printer_1, "tray": False} + ) def test_behaviour_default_action(self): report = self.Model.search([], limit=1) - self.env.user.printing_action = 'client' - with patch( - 'odoo.addons.base_remote.models.base.Base.remote', new=self.remote - ): + self.env.user.printing_action = "client" + with patch("odoo.addons.base_remote.models.base.Base.remote", new=self.remote): behaviour = report.behaviour() - self.assertEqual(behaviour, { - 'action': 'client', - 'printer': self.env['printing.printer'], - 'tray': False, - }) + self.assertEqual( + behaviour, + { + "action": "client", + "printer": self.env["printing.printer"], + "tray": False, + }, + ) def test_behaviour_no_printers(self): self.remote_printer.unlink() report = self.Model.search([], limit=1) - self.env.user.printing_action = 'remote_default' + self.env.user.printing_action = "remote_default" report.property_printing_action_id = self.browse_ref( - 'remote_report_to_printer.printing_action_3' + "remote_report_to_printer.printing_action_3" ) - with patch( - 'odoo.addons.base_remote.models.base.Base.remote', - new=self.remote - ): + with patch("odoo.addons.base_remote.models.base.Base.remote", new=self.remote): behaviour = report.behaviour() - self.assertEqual(behaviour['action'], 'client') + self.assertEqual(behaviour["action"], "client") diff --git a/remote_report_to_printer/tests/test_remote_printer.py b/remote_report_to_printer/tests/test_remote_printer.py index a76a857..6d3431e 100644 --- a/remote_report_to_printer/tests/test_remote_printer.py +++ b/remote_report_to_printer/tests/test_remote_printer.py @@ -1,115 +1,130 @@ # Copyright (c) 2018 Creu Blanca # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.exceptions import AccessError, ValidationError from odoo.tests.common import TransactionCase -from odoo.exceptions import ValidationError -from odoo.exceptions import AccessError class TestRemotePrinter(TransactionCase): - def setUp(self): super().setUp() - self.system_user_group = self.env.ref('base.group_system') - self.user_group = self.env.ref('base.group_user') - self.printer_manager = self._create_user('printer_manager', - self.system_user_group.id) - self.printer_user = self._create_user('printer_user', - self.user_group.id) + self.system_user_group = self.env.ref("base.group_system") + self.user_group = self.env.ref("base.group_user") + self.printer_manager = self._create_user( + "printer_manager", self.system_user_group.id + ) + self.printer_user = self._create_user("printer_user", self.user_group.id) - name = 'testing_remote_server' - self.remote = self.env['res.remote'].search([('name', '=', name)]) + name = "testing_remote_server" + self.remote = self.env["res.remote"].search([("name", "=", name)]) if not self.remote: - self.remote = self.env['res.remote'].create({ - 'name': name, - 'ip': '127.0.0.1', - }) - self.server = self.env['printing.server'].create({ - 'name': 'Server', - 'address': 'localhost', - 'port': 631, - }) - self.printer_1 = self.env['printing.printer'].create({ - 'name': 'Printer 1', - 'system_name': 'P1', - 'server_id': self.server.id, - }) - self.printer_2 = self.env['printing.printer'].create({ - 'name': 'Printer 2', - 'system_name': 'P2', - 'server_id': self.server.id, - }) - self.tray_1 = self.env['printing.tray'].create({ - 'name': 'Tray', - 'system_name': 'P2', - 'printer_id': self.printer_1.id, - }) + self.remote = self.env["res.remote"].create( + {"name": name, "ip": "127.0.0.1"} + ) + self.server = self.env["printing.server"].create( + {"name": "Server", "address": "localhost", "port": 631} + ) + self.printer_1 = self.env["printing.printer"].create( + {"name": "Printer 1", "system_name": "P1", "server_id": self.server.id} + ) + self.printer_2 = self.env["printing.printer"].create( + {"name": "Printer 2", "system_name": "P2", "server_id": self.server.id} + ) + self.tray_1 = self.env["printing.tray"].create( + {"name": "Tray", "system_name": "P2", "printer_id": self.printer_1.id} + ) def _create_user(self, name, group_ids): - return self.env['res.users'].with_context( - {'no_reset_password': True}).create( - {'name': name, - 'password': 'demo', - 'login': name, - 'email': '@'.join([name, '@test.com']), - 'groups_id': [(6, 0, [group_ids])] - }) + return ( + self.env["res.users"] + .with_context({"no_reset_password": True}) + .create( + { + "name": name, + "password": "demo", + "login": name, + "email": "@".join([name, "@test.com"]), + "groups_id": [(6, 0, [group_ids])], + } + ) + ) def test_constrain(self): - self.env['res.remote.printer'].sudo(self.printer_manager).create({ - 'remote_id': self.remote.id, - 'printer_id': self.printer_1.id, - 'is_default': True, - }) + self.env["res.remote.printer"].sudo(self.printer_manager).create( + { + "remote_id": self.remote.id, + "printer_id": self.printer_1.id, + "is_default": True, + } + ) with self.assertRaises(ValidationError): - self.env['res.remote.printer'].create({ - 'remote_id': self.remote.id, - 'printer_id': self.printer_2.id, - 'is_default': True, - }) + self.env["res.remote.printer"].create( + { + "remote_id": self.remote.id, + "printer_id": self.printer_2.id, + "is_default": True, + } + ) def test_onchange_printer(self): - remote_printer = self.env['res.remote.printer'].sudo( - self.printer_manager).create({ - 'remote_id': self.remote.id, - 'printer_id': self.printer_1.id, - 'printer_tray_id': self.tray_1.id, - }) + remote_printer = ( + self.env["res.remote.printer"] + .sudo(self.printer_manager) + .create( + { + "remote_id": self.remote.id, + "printer_id": self.printer_1.id, + "printer_tray_id": self.tray_1.id, + } + ) + ) self.assertTrue(remote_printer.printer_tray_id) remote_printer.printer_id = self.printer_2 remote_printer._onchange_printing_printer_id() self.assertFalse(remote_printer.printer_tray_id) def test_permissions_delete_manager(self): - printer = self.env['res.remote.printer'].sudo( - self.printer_manager).create({ - 'remote_id': self.remote.id, - 'printer_id': self.printer_1.id, - 'is_default': True, - } + printer = ( + self.env["res.remote.printer"] + .sudo(self.printer_manager) + .create( + { + "remote_id": self.remote.id, + "printer_id": self.printer_1.id, + "is_default": True, + } + ) ) printer.sudo(self.printer_manager).unlink() - printer = self.env['res.remote.printer'].search([ - ('remote_id', '=', self.remote.id), - ('printer_id', '=', self.printer_1.id)], limit=1) - self.assertEquals(printer, self.env['res.remote.printer']) + printer = self.env["res.remote.printer"].search( + [ + ("remote_id", "=", self.remote.id), + ("printer_id", "=", self.printer_1.id), + ], + limit=1, + ) + self.assertEquals(printer, self.env["res.remote.printer"]) def test_permissions_delete_user(self): - printer = self.env['res.remote.printer'].sudo( - self.printer_manager).create({ - 'remote_id': self.remote.id, - 'printer_id': self.printer_1.id, - 'is_default': True, - } + printer = ( + self.env["res.remote.printer"] + .sudo(self.printer_manager) + .create( + { + "remote_id": self.remote.id, + "printer_id": self.printer_1.id, + "is_default": True, + } + ) ) with self.assertRaises(AccessError): printer.sudo(self.printer_user).unlink() def test_permissions_create_user(self): with self.assertRaises(AccessError): - self.env['res.remote.printer'].sudo( - self.printer_user).create({ - 'remote_id': self.remote.id, - 'printer_id': self.printer_1.id, - 'is_default': True, + self.env["res.remote.printer"].sudo(self.printer_user).create( + { + "remote_id": self.remote.id, + "printer_id": self.printer_1.id, + "is_default": True, } ) diff --git a/remote_report_to_printer/views/res_remote_printer_views.xml b/remote_report_to_printer/views/res_remote_printer_views.xml index d745918..5de4d73 100644 --- a/remote_report_to_printer/views/res_remote_printer_views.xml +++ b/remote_report_to_printer/views/res_remote_printer_views.xml @@ -7,11 +7,11 @@
- - - - - + + + + +
@@ -22,11 +22,11 @@ res.remote.printer - - - - - + + + + + diff --git a/remote_report_to_printer/views/res_remote_views.xml b/remote_report_to_printer/views/res_remote_views.xml index 6023035..f327c37 100644 --- a/remote_report_to_printer/views/res_remote_views.xml +++ b/remote_report_to_printer/views/res_remote_views.xml @@ -3,11 +3,11 @@ res.remote.form res.remote - + - +