From 104b531d1f9a23b3f81bce2d5c03655e5c70f93c Mon Sep 17 00:00:00 2001 From: Sylvain GARANCHER Date: Tue, 8 Nov 2016 13:13:30 +0100 Subject: [PATCH] Migrate printer_tray to v9.0 --- printer_tray/README.rst | 28 +++++--- printer_tray/__init__.py | 28 ++------ printer_tray/__manifest__.py | 69 ++++++++----------- printer_tray/ir_report.py | 37 ---------- printer_tray/models/__init__.py | 9 +++ printer_tray/models/ir_actions_report_xml.py | 20 ++++++ .../printing_printer.py} | 33 +++------ .../models/printing_report_xml_action.py | 27 ++++++++ printer_tray/models/printing_tray.py | 20 ++++++ printer_tray/models/res_users.py | 20 ++++++ printer_tray/printer_tray.py | 37 ---------- printer_tray/report_xml_action.py | 44 ------------ printer_tray/security/ir.model.access.csv | 4 +- printer_tray/tests/test_printing_printer.py | 22 +++--- printer_tray/tests/test_printing_tray.py | 4 +- printer_tray/users.py | 37 ---------- .../ir_actions_report_xml.xml} | 0 .../printing_printer.xml} | 0 .../printing_report_xml_action.xml} | 0 .../{users_view.xml => views/res_users.xml} | 0 20 files changed, 173 insertions(+), 266 deletions(-) delete mode 100644 printer_tray/ir_report.py create mode 100644 printer_tray/models/__init__.py create mode 100644 printer_tray/models/ir_actions_report_xml.py rename printer_tray/{printer.py => models/printing_printer.py} (66%) create mode 100644 printer_tray/models/printing_report_xml_action.py create mode 100644 printer_tray/models/printing_tray.py create mode 100644 printer_tray/models/res_users.py delete mode 100644 printer_tray/printer_tray.py delete mode 100644 printer_tray/report_xml_action.py delete mode 100644 printer_tray/users.py rename printer_tray/{ir_report_view.xml => views/ir_actions_report_xml.xml} (100%) rename printer_tray/{printer_view.xml => views/printing_printer.xml} (100%) rename printer_tray/{report_xml_action_view.xml => views/printing_report_xml_action.xml} (100%) rename printer_tray/{users_view.xml => views/res_users.xml} (100%) diff --git a/printer_tray/README.rst b/printer_tray/README.rst index 1c78ad9..81464d2 100644 --- a/printer_tray/README.rst +++ b/printer_tray/README.rst @@ -1,3 +1,8 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +======================================== Report to printer - Paper tray selection ======================================== @@ -40,6 +45,10 @@ There is no special usage, once configured, reports are printed in the select tray. When no tray is configured for a report and a user, the default tray setup on the CUPS server is used. +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/144/9.0 + Known issues / Roadmap ====================== @@ -48,11 +57,10 @@ Known issues / Roadmap Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. - +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. Credits ======= @@ -66,12 +74,14 @@ Contributors Maintainer ---------- -.. image:: http://odoo-community.org/logo.png +.. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association - :target: http://odoo-community.org + :target: https://odoo-community.org This module is maintained by the OCA. -OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. -To contribute to this module, please visit http://odoo-community.org. +To contribute to this module, please visit https://odoo-community.org. diff --git a/printer_tray/__init__.py b/printer_tray/__init__.py index 1d70414..4e462b6 100644 --- a/printer_tray/__init__.py +++ b/printer_tray/__init__.py @@ -1,25 +1,5 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# Author: Yannick Vaucher -# Copyright 2013 Camptocamp SA -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -from . import ir_report -from . import printer_tray -from . import printer -from . import users -from . import report_xml_action +# Copyright (C) 2013-2014 Camptocamp () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/printer_tray/__manifest__.py b/printer_tray/__manifest__.py index c3953b3..de65b0a 100644 --- a/printer_tray/__manifest__.py +++ b/printer_tray/__manifest__.py @@ -1,43 +1,28 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# Author: Yannick Vaucher -# Copyright 2013 Camptocamp SA -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -{'name': 'Report to printer - Paper tray selection', - 'version': '8.0.1.0.0', - 'category': 'Printer', - 'author': "Camptocamp,Odoo Community Association (OCA)", - 'maintainer': 'Camptocamp', - 'website': 'http://www.camptocamp.com/', - 'license': 'AGPL-3', - 'depends': ['base_report_to_printer', - ], - 'data': [ - 'users_view.xml', - 'ir_report_view.xml', - 'printer_view.xml', - 'report_xml_action_view.xml', - 'security/ir.model.access.csv', - ], - 'external_dependencies': { - 'python': ['cups'], - }, - 'installable': False, - 'auto_install': False, - 'application': True, - } +# Copyright (C) 2013-2014 Camptocamp () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Report to printer - Paper tray selection', + 'version': '9.0.1.0.0', + 'category': 'Printer', + 'author': "Camptocamp, Odoo Community Association (OCA)", + 'maintainer': 'Camptocamp', + 'website': 'http://www.camptocamp.com/', + 'license': 'AGPL-3', + 'depends': [ + 'base_report_to_printer', + ], + 'data': [ + 'views/res_users.xml', + 'views/ir_actions_report_xml.xml', + 'views/printing_printer.xml', + 'views/printing_report_xml_action.xml', + 'security/ir.model.access.csv', + ], + 'external_dependencies': { + 'python': ['cups'], + }, + 'installable': True, + 'application': True, +} diff --git a/printer_tray/ir_report.py b/printer_tray/ir_report.py deleted file mode 100644 index fb77593..0000000 --- a/printer_tray/ir_report.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Author: Yannick Vaucher -# Copyright 2013 Camptocamp SA -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -from openerp import models, fields, api - - -class IrActionsReportXml(models.Model): - - _inherit = 'ir.actions.report.xml' - - printer_tray_id = fields.Many2one( - comodel_name='printing.tray', - string='Paper Source', - domain="[('printer_id', '=', printing_printer_id)]", - ) - - @api.onchange('printing_printer_id') - def onchange_printing_printer_id(self): - """ Reset the tray when the printer is changed """ - self.printer_tray_id = False diff --git a/printer_tray/models/__init__.py b/printer_tray/models/__init__.py new file mode 100644 index 0000000..dd6af32 --- /dev/null +++ b/printer_tray/models/__init__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2013-2014 Camptocamp () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import ir_actions_report_xml +from . import printing_tray +from . import printing_printer +from . import res_users +from . import printing_report_xml_action diff --git a/printer_tray/models/ir_actions_report_xml.py b/printer_tray/models/ir_actions_report_xml.py new file mode 100644 index 0000000..d4d85cb --- /dev/null +++ b/printer_tray/models/ir_actions_report_xml.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2013-2014 Camptocamp () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import models, fields, api + + +class IrActionsReportXml(models.Model): + _inherit = 'ir.actions.report.xml' + + printer_tray_id = fields.Many2one( + comodel_name='printing.tray', + string='Paper Source', + domain="[('printer_id', '=', printing_printer_id)]", + ) + + @api.onchange('printing_printer_id') + def onchange_printing_printer_id(self): + """ Reset the tray when the printer is changed """ + self.printer_tray_id = False diff --git a/printer_tray/printer.py b/printer_tray/models/printing_printer.py similarity index 66% rename from printer_tray/printer.py rename to printer_tray/models/printing_printer.py index 2d46059..0b40dc2 100644 --- a/printer_tray/printer.py +++ b/printer_tray/models/printing_printer.py @@ -1,23 +1,6 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# Author: Yannick Vaucher -# Copyright 2013 Camptocamp SA -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2013-2014 Camptocamp () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import errno import logging @@ -33,7 +16,7 @@ except ImportError: _logger.debug('Cannot `import cups`.') -class Printer(models.Model): +class PrintingPrinter(models.Model): _inherit = 'printing.printer' tray_ids = fields.One2many(comodel_name='printing.tray', @@ -42,10 +25,12 @@ class Printer(models.Model): @api.multi def _prepare_update_from_cups(self, cups_connection, cups_printer): - vals = super(Printer, self)._prepare_update_from_cups(cups_connection, - cups_printer) + vals = super(PrintingPrinter, self)._prepare_update_from_cups( + cups_connection, cups_printer) - ppd_info = cups_connection.getPPD3(self.system_name) + printer_uri = cups_printer['printer-uri-supported'] + printer_system_name = printer_uri[printer_uri.rfind('/') + 1:] + ppd_info = cups_connection.getPPD3(printer_system_name) ppd_path = ppd_info[2] if not ppd_path: return vals @@ -85,7 +70,7 @@ class Printer(models.Model): def print_options(self, report, format, copies=1): """ Hook to define Tray """ printing_act_obj = self.env['printing.report.xml.action'] - options = super(Printer, self).print_options(report, format) + options = super(PrintingPrinter, self).print_options(report, format) # Retrieve user default values user = self.env.user diff --git a/printer_tray/models/printing_report_xml_action.py b/printer_tray/models/printing_report_xml_action.py new file mode 100644 index 0000000..5cf268e --- /dev/null +++ b/printer_tray/models/printing_report_xml_action.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2013-2014 Camptocamp () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import models, fields, api + + +class PrintingReportXMLAction(models.Model): + _inherit = 'printing.report.xml.action' + + printer_tray_id = fields.Many2one( + comodel_name='printing.tray', + string='Paper Source', + domain="[('printer_id', '=', printer_id)]", + ) + + @api.multi + def behaviour(self): + self.ensure_one() + res = super(PrintingReportXMLAction, self).behaviour() + res['tray'] = self.printer_tray_id.system_name + return res + + @api.onchange('printer_id') + def onchange_printer_id(self): + """ Reset the tray when the printer is changed """ + self.printer_tray_id = False diff --git a/printer_tray/models/printing_tray.py b/printer_tray/models/printing_tray.py new file mode 100644 index 0000000..ef6f245 --- /dev/null +++ b/printer_tray/models/printing_tray.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2013-2014 Camptocamp () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import models, fields + + +class PrinterTray(models.Model): + _name = 'printing.tray' + _description = 'Printer Tray' + + name = fields.Char(required=True) + system_name = fields.Char(required=True, readonly=True) + printer_id = fields.Many2one( + comodel_name='printing.printer', + string='Printer', + required=True, + readonly=True, + ondelete='cascade', + ) diff --git a/printer_tray/models/res_users.py b/printer_tray/models/res_users.py new file mode 100644 index 0000000..6069819 --- /dev/null +++ b/printer_tray/models/res_users.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2013-2014 Camptocamp () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import models, fields, api + + +class ResUsers(models.Model): + _inherit = "res.users" + + printer_tray_id = fields.Many2one( + comodel_name='printing.tray', + string='Default Printer Paper Source', + domain="[('printer_id', '=', printing_printer_id)]", + ) + + @api.onchange('printing_printer_id') + def onchange_printing_printer_id(self): + """ Reset the tray when the printer is changed """ + self.printer_tray_id = False diff --git a/printer_tray/printer_tray.py b/printer_tray/printer_tray.py deleted file mode 100644 index ee25ca8..0000000 --- a/printer_tray/printer_tray.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Author: Yannick Vaucher -# Copyright 2013 Camptocamp SA -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -from openerp import models, fields - - -class PrinterTray(models.Model): - - _name = 'printing.tray' - _description = 'Printer Tray' - - name = fields.Char(required=True) - system_name = fields.Char(required=True, readonly=True) - printer_id = fields.Many2one( - comodel_name='printing.printer', - string='Printer', - required=True, - readonly=True, - ondelete='cascade', - ) diff --git a/printer_tray/report_xml_action.py b/printer_tray/report_xml_action.py deleted file mode 100644 index 5056150..0000000 --- a/printer_tray/report_xml_action.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Author: Yannick Vaucher -# Copyright 2013 Camptocamp SA -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields, api - - -class ReportXMLAction(models.Model): - _inherit = 'printing.report.xml.action' - - printer_tray_id = fields.Many2one( - comodel_name='printing.tray', - string='Paper Source', - domain="[('printer_id', '=', printer_id)]", - ) - - @api.multi - def behaviour(self): - self.ensure_one() - res = super(ReportXMLAction, self).behaviour() - res['tray'] = self.printer_tray_id.system_name - return res - - @api.onchange('printer_id') - def onchange_printer_id(self): - """ Reset the tray when the printer is changed """ - self.printer_tray_id = False diff --git a/printer_tray/security/ir.model.access.csv b/printer_tray/security/ir.model.access.csv index 90e6ac2..e222837 100644 --- a/printer_tray/security/ir.model.access.csv +++ b/printer_tray/security/ir.model.access.csv @@ -1,3 +1,3 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -access_printing_tray_all,printing_tray all,model_printing_tray,,1,0,0,0 -access_printing_tray_operator,printing_tray operator,model_printing_tray,base_report_to_printer.res_groups_printingprintoperator0,1,1,1,1 +access_printing_tray_all,printing_tray all,model_printing_tray,base_report_to_printer.printing_group_user,1,0,0,0 +access_printing_tray_operator,printing_tray operator,model_printing_tray,base_report_to_printer.printing_group_manager,1,1,1,1 diff --git a/printer_tray/tests/test_printing_printer.py b/printer_tray/tests/test_printing_printer.py index 14559ac..225214e 100644 --- a/printer_tray/tests/test_printing_printer.py +++ b/printer_tray/tests/test_printing_printer.py @@ -7,7 +7,8 @@ import tempfile from openerp.tests.common import TransactionCase -model = 'openerp.addons.base_report_to_printer.printing' +model = 'openerp.addons.base_report_to_printer.models.printing_printer' +server_model = 'openerp.addons.base_report_to_printer.models.printing_server' ppd_header = '*PPD-Adobe: "4.3"' ppd_input_slot_header = """ @@ -36,8 +37,11 @@ class TestPrintingPrinter(TransactionCase): def setUp(self): super(TestPrintingPrinter, self).setUp() self.Model = self.env['printing.printer'] + self.ServerModel = self.env['printing.server'] + self.server = self.env['printing.server'].create({}) self.printer = self.env['printing.printer'].create({ 'name': 'Printer', + 'server_id': self.server.id, 'system_name': 'Sys Name', 'default': True, 'status': 'unknown', @@ -152,7 +156,7 @@ class TestPrintingPrinter(TransactionCase): 'InputSlot': 'Action tray', }) - @mock.patch('%s.cups' % model) + @mock.patch('%s.cups' % server_model) def test_update_printers(self, cups): """ Check that the update_printers method calls _prepare_update_from_cups @@ -162,10 +166,10 @@ class TestPrintingPrinter(TransactionCase): with mock.patch.object( self.Model, '_prepare_update_from_cups' ) as prepare_update_from_cups: - self.Model.update_printers_status() + self.ServerModel.update_printers() prepare_update_from_cups.assert_called_once() - @mock.patch('%s.cups' % model) + @mock.patch('%s.cups' % server_model) def test_prepare_update_from_cups_no_ppd(self, cups): """ Check that the tray_ids field has no value when no PPD is available @@ -178,7 +182,7 @@ class TestPrintingPrinter(TransactionCase): vals = self.printer._prepare_update_from_cups(connection, cups_printer) self.assertFalse('tray_ids' in vals) - @mock.patch('%s.cups' % model) + @mock.patch('%s.cups' % server_model) def test_prepare_update_from_cups_empty_ppd(self, cups): """ Check that the tray_ids field has no value when the PPD file has @@ -196,7 +200,7 @@ class TestPrintingPrinter(TransactionCase): vals = self.printer._prepare_update_from_cups(connection, cups_printer) self.assertFalse('tray_ids' in vals) - @mock.patch('%s.cups' % model) + @mock.patch('%s.cups' % server_model) def test_prepare_update_from_cups(self, cups): """ Check the return value when adding a single tray @@ -212,7 +216,7 @@ class TestPrintingPrinter(TransactionCase): 'system_name': 'Auto', })]) - @mock.patch('%s.cups' % model) + @mock.patch('%s.cups' % server_model) def test_prepare_update_from_cups_with_multiple_trays(self, cups): """ Check the return value when adding multiple trays at once @@ -233,7 +237,7 @@ class TestPrintingPrinter(TransactionCase): 'system_name': 'Tray1', })]) - @mock.patch('%s.cups' % model) + @mock.patch('%s.cups' % server_model) def test_prepare_update_from_cups_already_known_trays(self, cups): """ Check that calling the method twice doesn't create the trays multiple @@ -255,7 +259,7 @@ class TestPrintingPrinter(TransactionCase): 'system_name': 'Auto', })]) - @mock.patch('%s.cups' % model) + @mock.patch('%s.cups' % server_model) def test_prepare_update_from_cups_unknown_trays(self, cups): """ Check that trays which are not in the PPD file are removed from Odoo diff --git a/printer_tray/tests/test_printing_tray.py b/printer_tray/tests/test_printing_tray.py index 685a9d1..893a888 100644 --- a/printer_tray/tests/test_printing_tray.py +++ b/printer_tray/tests/test_printing_tray.py @@ -5,7 +5,7 @@ from openerp.tests.common import TransactionCase -model = 'openerp.addons.base_report_to_printer.printing' +model = 'openerp.addons.base_report_to_printer.models.printing_server' class TestPrintingTray(TransactionCase): @@ -13,8 +13,10 @@ class TestPrintingTray(TransactionCase): def setUp(self): super(TestPrintingTray, self).setUp() self.Model = self.env['printing.tray'] + self.server = self.env['printing.server'].create({}) self.printer = self.env['printing.printer'].create({ 'name': 'Printer', + 'server_id': self.server.id, 'system_name': 'Sys Name', 'default': True, 'status': 'unknown', diff --git a/printer_tray/users.py b/printer_tray/users.py deleted file mode 100644 index 47d7faa..0000000 --- a/printer_tray/users.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Author: Yannick Vaucher -# Copyright 2013 Camptocamp SA -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -from openerp import models, fields, api - - -class ResUsers(models.Model): - - _inherit = "res.users" - - printer_tray_id = fields.Many2one( - comodel_name='printing.tray', - string='Default Printer Paper Source', - domain="[('printer_id', '=', printing_printer_id)]", - ) - - @api.onchange('printing_printer_id') - def onchange_printing_printer_id(self): - """ Reset the tray when the printer is changed """ - self.printer_tray_id = False diff --git a/printer_tray/ir_report_view.xml b/printer_tray/views/ir_actions_report_xml.xml similarity index 100% rename from printer_tray/ir_report_view.xml rename to printer_tray/views/ir_actions_report_xml.xml diff --git a/printer_tray/printer_view.xml b/printer_tray/views/printing_printer.xml similarity index 100% rename from printer_tray/printer_view.xml rename to printer_tray/views/printing_printer.xml diff --git a/printer_tray/report_xml_action_view.xml b/printer_tray/views/printing_report_xml_action.xml similarity index 100% rename from printer_tray/report_xml_action_view.xml rename to printer_tray/views/printing_report_xml_action.xml diff --git a/printer_tray/users_view.xml b/printer_tray/views/res_users.xml similarity index 100% rename from printer_tray/users_view.xml rename to printer_tray/views/res_users.xml