From c96fbca65d8d12050a9ab10d52ef1958018352d8 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Wed, 20 Jun 2018 13:13:37 +0200 Subject: [PATCH 1/9] [ADD] remote_report_to_printer --- remote_report_to_printer/README.rst | 67 +++++++++ remote_report_to_printer/__init__.py | 1 + remote_report_to_printer/__manifest__.py | 20 +++ .../data/printing_data.xml | 9 ++ .../i18n/remote_report_to_printer.pot | 127 ++++++++++++++++++ remote_report_to_printer/models/__init__.py | 4 + .../models/ir_actions_report.py | 22 +++ .../models/printing_action.py | 18 +++ remote_report_to_printer/models/res_remote.py | 28 ++++ .../models/res_remote_printer.py | 48 +++++++ .../security/ir.model.access.csv | 3 + remote_report_to_printer/tests/__init__.py | 2 + .../tests/test_printer.py | 106 +++++++++++++++ .../tests/test_remote_printer.py | 61 +++++++++ .../views/res_remote_printer_views.xml | 33 +++++ .../views/res_remote_views.xml | 15 +++ 16 files changed, 564 insertions(+) create mode 100644 remote_report_to_printer/README.rst create mode 100644 remote_report_to_printer/__init__.py create mode 100644 remote_report_to_printer/__manifest__.py create mode 100644 remote_report_to_printer/data/printing_data.xml create mode 100644 remote_report_to_printer/i18n/remote_report_to_printer.pot create mode 100644 remote_report_to_printer/models/__init__.py create mode 100644 remote_report_to_printer/models/ir_actions_report.py create mode 100644 remote_report_to_printer/models/printing_action.py create mode 100644 remote_report_to_printer/models/res_remote.py create mode 100644 remote_report_to_printer/models/res_remote_printer.py create mode 100644 remote_report_to_printer/security/ir.model.access.csv create mode 100644 remote_report_to_printer/tests/__init__.py create mode 100644 remote_report_to_printer/tests/test_printer.py create mode 100644 remote_report_to_printer/tests/test_remote_printer.py create mode 100644 remote_report_to_printer/views/res_remote_printer_views.xml create mode 100644 remote_report_to_printer/views/res_remote_views.xml diff --git a/remote_report_to_printer/README.rst b/remote_report_to_printer/README.rst new file mode 100644 index 0000000..4261fcc --- /dev/null +++ b/remote_report_to_printer/README.rst @@ -0,0 +1,67 @@ +.. 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 +================= + +This module allows users to send reports to a printer using remote's configuration. + +A *remote* is an external entity that access odoo. For example, computers, mobiles, +servers... We will identify *remotes* by its name or ip. On some environments, +we want to configure the printers by remote, because users may change their +work place. + +It adds an optional behaviour on reports to send it directly to a printer. + +* `Use remote's configuration` use the remote's behaviour + +Also, this option can be selected as a user default option for printer. + +Usage +===== + + * In *Settings > Remotes* configure the remotes printers by usage + + +.. 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/11.0 + + +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. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Enric Tobella + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :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. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/remote_report_to_printer/__init__.py b/remote_report_to_printer/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/remote_report_to_printer/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/remote_report_to_printer/__manifest__.py b/remote_report_to_printer/__manifest__.py new file mode 100644 index 0000000..b348426 --- /dev/null +++ b/remote_report_to_printer/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright (c) 2018 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': "Report to printer on remotes", + 'version': '11.0.2.1.0', + 'category': 'Generic Modules/Base', + 'author': "Creu Blanca, Odoo Community Association (OCA)", + 'website': 'http://www.agilebg.com', + '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, + 'application': True, +} diff --git a/remote_report_to_printer/data/printing_data.xml b/remote_report_to_printer/data/printing_data.xml new file mode 100644 index 0000000..b6c54b5 --- /dev/null +++ b/remote_report_to_printer/data/printing_data.xml @@ -0,0 +1,9 @@ + + + + + Use Remote Defaults + remote_default + + + diff --git a/remote_report_to_printer/i18n/remote_report_to_printer.pot b/remote_report_to_printer/i18n/remote_report_to_printer.pot new file mode 100644 index 0000000..c6a6d9c --- /dev/null +++ b/remote_report_to_printer/i18n/remote_report_to_printer.pot @@ -0,0 +1,127 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * remote_report_to_printer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: remote_report_to_printer +#: sql_constraint:res.remote.printer:0 +msgid "A Remote cannot have the same printer for the same usage" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_create_uid +msgid "Created by" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_create_date +msgid "Created on" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_display_name +msgid "Display Name" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_id +msgid "ID" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_is_default +msgid "Is Default" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer___last_update +msgid "Last Modified on" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_write_date +msgid "Last Updated on" +msgstr "" + +#. module: remote_report_to_printer +#: code:addons/remote_report_to_printer/models/res_remote_printer.py:48 +#, python-format +msgid "Only one default printer is allowed" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model,name:remote_report_to_printer.model_printing_action +msgid "Print Job Action" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_printer_id +msgid "Printer" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_printer_tray_id +msgid "Printer Tray" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_printer_usage +msgid "Printer Usage" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.ui.view,arch_db:remote_report_to_printer.res_remote_form +msgid "Printers" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_remote_id +msgid "Remote" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_remote_printer_ids +#: model:ir.ui.view,arch_db:remote_report_to_printer.res_remote_printer_form +msgid "Remote Printer" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.ui.view,arch_db:remote_report_to_printer.res_remote_printer_tree +msgid "Remote Printers" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model,name:remote_report_to_printer.model_res_remote +msgid "Remotes" +msgstr "" + +#. module: remote_report_to_printer +#: selection:res.remote.printer,printer_usage:0 +msgid "Standard" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model,name:remote_report_to_printer.model_ir_actions_report +msgid "ir.actions.report" +msgstr "" + +#. module: remote_report_to_printer +#: model:ir.model,name:remote_report_to_printer.model_res_remote_printer +msgid "res.remote.printer" +msgstr "" + diff --git a/remote_report_to_printer/models/__init__.py b/remote_report_to_printer/models/__init__.py new file mode 100644 index 0000000..d17f81d --- /dev/null +++ b/remote_report_to_printer/models/__init__.py @@ -0,0 +1,4 @@ +from . import ir_actions_report +from . import res_remote +from . import res_remote_printer +from . import printing_action diff --git a/remote_report_to_printer/models/ir_actions_report.py b/remote_report_to_printer/models/ir_actions_report.py new file mode 100644 index 0000000..417d86e --- /dev/null +++ b/remote_report_to_printer/models/ir_actions_report.py @@ -0,0 +1,22 @@ +# Copyright (c) 2018 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class IrActionsReport(models.Model): + _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': + 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': + 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 new file mode 100644 index 0000000..c6f4618 --- /dev/null +++ b/remote_report_to_printer/models/printing_action.py @@ -0,0 +1,18 @@ +# Copyright (c) 2018 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class PrintingAction(models.Model): + _inherit = 'printing.action' + + @api.model + def _available_action_types(self): + res = super()._available_action_types() + res.append(('remote_default', "Use remote's default")) + return res + + 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 new file mode 100644 index 0000000..4a961f3 --- /dev/null +++ b/remote_report_to_printer/models/res_remote.py @@ -0,0 +1,28 @@ +# Copyright (c) 2018 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import api, fields, models + + +class ResRemote(models.Model): + _inherit = 'res.remote' + + remote_printer_ids = fields.One2many( + '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') + printers = self.remote.remote_printer_ids.filtered( + lambda r: r.printer_usage == printer_usage + ).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 + } + 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 new file mode 100644 index 0000000..50faaaf --- /dev/null +++ b/remote_report_to_printer/models/res_remote_printer.py @@ -0,0 +1,48 @@ +# 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.exceptions import ValidationError + + +class ResRemotePrinter(models.Model): + _name = 'res.remote.printer' + + 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)]", + ) + is_default = fields.Boolean(default=False) + 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') + ] + + @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') + 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 + and r.printer_usage == rec.printer_usage + ): + raise ValidationError(_('Only one default printer is allowed')) diff --git a/remote_report_to_printer/security/ir.model.access.csv b/remote_report_to_printer/security/ir.model.access.csv new file mode 100644 index 0000000..2729507 --- /dev/null +++ b/remote_report_to_printer/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_remote,access_remote_printer,model_res_remote_printer,base.group_user,1,0,0,0 +manage_remote,manage_remote_printer,model_res_remote_printer,base.group_system,1,1,0,0 diff --git a/remote_report_to_printer/tests/__init__.py b/remote_report_to_printer/tests/__init__.py new file mode 100644 index 0000000..8555121 --- /dev/null +++ b/remote_report_to_printer/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_remote_printer +from . import test_printer diff --git a/remote_report_to_printer/tests/test_printer.py b/remote_report_to_printer/tests/test_printer.py new file mode 100644 index 0000000..cfee617 --- /dev/null +++ b/remote_report_to_printer/tests/test_printer.py @@ -0,0 +1,106 @@ +# 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 + + +class TestRemotePrinter(TransactionCase): + + def setUp(self): + super().setUp() + 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) + + 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 + ): + behaviour = report.behaviour() + 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' + report.property_printing_action_id = self.browse_ref( + 'remote_report_to_printer.printing_action_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, + }) + + def test_behaviour_user_action(self): + report = self.Model.search([], limit=1) + self.env.user.printing_action = 'remote_default' + report.property_printing_action_id = self.browse_ref( + 'base_report_to_printer.printing_action_3' + ) + 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, + }) + + 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 + ): + behaviour = report.behaviour() + 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' + report.property_printing_action_id = self.browse_ref( + 'base_report_to_printer.printing_action_3' + ) + with patch( + 'odoo.addons.base_remote.models.base.Base.remote', + new=self.remote + ): + behaviour = report.behaviour() + 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 new file mode 100644 index 0000000..c38a036 --- /dev/null +++ b/remote_report_to_printer/tests/test_remote_printer.py @@ -0,0 +1,61 @@ +# Copyright (c) 2018 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.tests.common import TransactionCase +from odoo.exceptions import ValidationError + + +class TestRemotePrinter(TransactionCase): + + def setUp(self): + super().setUp() + 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, + }) + + def test_constrain(self): + self.env['res.remote.printer'].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, + }) + + def test_onchange_printer(self): + remote_printer = self.env['res.remote.printer'].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) diff --git a/remote_report_to_printer/views/res_remote_printer_views.xml b/remote_report_to_printer/views/res_remote_printer_views.xml new file mode 100644 index 0000000..d745918 --- /dev/null +++ b/remote_report_to_printer/views/res_remote_printer_views.xml @@ -0,0 +1,33 @@ + + + + res.remote.printer.form + res.remote.printer + +
+ + + + + + + + + +
+
+
+ + res.remote.printer.tree + 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 new file mode 100644 index 0000000..6023035 --- /dev/null +++ b/remote_report_to_printer/views/res_remote_views.xml @@ -0,0 +1,15 @@ + + + + res.remote.form + res.remote + + + + + + + + + + From 33ab9c18d0561143388c43b64302f1ef95a3a6b4 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Wed, 7 Nov 2018 11:43:28 +0100 Subject: [PATCH 2/9] [remote_report_to_printer] add permissions to write and delete to base.group_system --- remote_report_to_printer/__manifest__.py | 2 +- .../security/ir.model.access.csv | 2 +- .../tests/test_remote_printer.py | 66 +++++++++++++++++-- 3 files changed, 62 insertions(+), 8 deletions(-) diff --git a/remote_report_to_printer/__manifest__.py b/remote_report_to_printer/__manifest__.py index b348426..199b330 100644 --- a/remote_report_to_printer/__manifest__.py +++ b/remote_report_to_printer/__manifest__.py @@ -3,7 +3,7 @@ { 'name': "Report to printer on remotes", - 'version': '11.0.2.1.0', + 'version': '11.0.2.1.1', 'category': 'Generic Modules/Base', 'author': "Creu Blanca, Odoo Community Association (OCA)", 'website': 'http://www.agilebg.com', diff --git a/remote_report_to_printer/security/ir.model.access.csv b/remote_report_to_printer/security/ir.model.access.csv index 2729507..00cfc41 100644 --- a/remote_report_to_printer/security/ir.model.access.csv +++ b/remote_report_to_printer/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_remote,access_remote_printer,model_res_remote_printer,base.group_user,1,0,0,0 -manage_remote,manage_remote_printer,model_res_remote_printer,base.group_system,1,1,0,0 +manage_remote,manage_remote_printer,model_res_remote_printer,base.group_system,1,1,1,1 diff --git a/remote_report_to_printer/tests/test_remote_printer.py b/remote_report_to_printer/tests/test_remote_printer.py index c38a036..a76a857 100644 --- a/remote_report_to_printer/tests/test_remote_printer.py +++ b/remote_report_to_printer/tests/test_remote_printer.py @@ -2,12 +2,20 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 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) + name = 'testing_remote_server' self.remote = self.env['res.remote'].search([('name', '=', name)]) if not self.remote: @@ -36,8 +44,18 @@ class TestRemotePrinter(TransactionCase): '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])] + }) + def test_constrain(self): - self.env['res.remote.printer'].create({ + self.env['res.remote.printer'].sudo(self.printer_manager).create({ 'remote_id': self.remote.id, 'printer_id': self.printer_1.id, 'is_default': True, @@ -50,12 +68,48 @@ class TestRemotePrinter(TransactionCase): }) def test_onchange_printer(self): - remote_printer = self.env['res.remote.printer'].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.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']) + + 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, + } + ) + 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, + } + ) From c346421c82da12b5852e8492251fb47ed8c2ad1d Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Thu, 15 Nov 2018 19:34:44 +0000 Subject: [PATCH 3/9] Added translation using Weblate (Spanish) --- remote_report_to_printer/i18n/es.po | 129 ++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 remote_report_to_printer/i18n/es.po diff --git a/remote_report_to_printer/i18n/es.po b/remote_report_to_printer/i18n/es.po new file mode 100644 index 0000000..788245b --- /dev/null +++ b/remote_report_to_printer/i18n/es.po @@ -0,0 +1,129 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * remote_report_to_printer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2018-11-16 20:19+0000\n" +"Last-Translator: Enric Tobella \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.2.2\n" + +#. module: remote_report_to_printer +#: sql_constraint:res.remote.printer:0 +msgid "A Remote cannot have the same printer for the same usage" +msgstr "El remoto no puede repetir la misma impresora para el mismo uso" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_create_date +msgid "Created on" +msgstr "Creado en" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_id +msgid "ID" +msgstr "ID" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_is_default +msgid "Is Default" +msgstr "Por defecto" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer___last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: remote_report_to_printer +#: code:addons/remote_report_to_printer/models/res_remote_printer.py:48 +#, python-format +msgid "Only one default printer is allowed" +msgstr "Sólo se permite una impresora por defecto" + +#. module: remote_report_to_printer +#: model:ir.model,name:remote_report_to_printer.model_printing_action +msgid "Print Job Action" +msgstr "Acción de imprimir un trabajo" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_printer_id +msgid "Printer" +msgstr "Impresora" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_printer_tray_id +msgid "Printer Tray" +msgstr "Bandeja de impresora" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_printer_usage +msgid "Printer Usage" +msgstr "Uso de impresora" + +#. module: remote_report_to_printer +#: model:ir.ui.view,arch_db:remote_report_to_printer.res_remote_form +msgid "Printers" +msgstr "Impresoras" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_remote_id +msgid "Remote" +msgstr "Remoto" + +#. module: remote_report_to_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_remote_printer_ids +#: model:ir.ui.view,arch_db:remote_report_to_printer.res_remote_printer_form +msgid "Remote Printer" +msgstr "Impresora de remoto" + +#. module: remote_report_to_printer +#: model:ir.ui.view,arch_db:remote_report_to_printer.res_remote_printer_tree +msgid "Remote Printers" +msgstr "Impresoras de remoto" + +#. module: remote_report_to_printer +#: model:ir.model,name:remote_report_to_printer.model_res_remote +msgid "Remotes" +msgstr "Remotos" + +#. module: remote_report_to_printer +#: selection:res.remote.printer,printer_usage:0 +msgid "Standard" +msgstr "Estándar" + +#. module: remote_report_to_printer +#: model:ir.model,name:remote_report_to_printer.model_ir_actions_report +msgid "ir.actions.report" +msgstr "ir.actions.report" + +#. module: remote_report_to_printer +#: model:ir.model,name:remote_report_to_printer.model_res_remote_printer +msgid "res.remote.printer" +msgstr "res.remote.printer" From c70896d22fb1656e652ce129e98398fd280ff8e0 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 3 Apr 2019 03:16:57 +0000 Subject: [PATCH 4/9] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 remote_report_to_printer/static/description/icon.png diff --git a/remote_report_to_printer/static/description/icon.png b/remote_report_to_printer/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From d9c59279a78dd1e5ac59f832aed3e0b08fe36643 Mon Sep 17 00:00:00 2001 From: Jaime Arroyo Date: Mon, 3 Jun 2019 11:59:01 +0200 Subject: [PATCH 5/9] [12.0][MIG] remote_report_to_printer --- remote_report_to_printer/README.rst | 72 ++- remote_report_to_printer/__manifest__.py | 5 +- .../data/printing_data.xml | 4 + .../i18n/remote_report_to_printer.pot | 51 +- .../models/res_remote_printer.py | 1 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 12 + remote_report_to_printer/readme/USAGE.rst | 1 + .../static/description/index.html | 437 ++++++++++++++++++ .../tests/test_printer.py | 4 +- 10 files changed, 533 insertions(+), 55 deletions(-) create mode 100644 remote_report_to_printer/readme/CONTRIBUTORS.rst create mode 100644 remote_report_to_printer/readme/DESCRIPTION.rst create mode 100644 remote_report_to_printer/readme/USAGE.rst create mode 100644 remote_report_to_printer/static/description/index.html diff --git a/remote_report_to_printer/README.rst b/remote_report_to_printer/README.rst index 4261fcc..1bd946e 100644 --- a/remote_report_to_printer/README.rst +++ b/remote_report_to_printer/README.rst @@ -1,10 +1,29 @@ -.. 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 on remotes +============================ -================= -Report To Printer -================= +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freport--print--send-lightgray.png?logo=github + :target: https://github.com/OCA/report-print-send/tree/12.0/remote_report_to_printer + :alt: OCA/report-print-send +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/report-print-send-12-0/report-print-send-12-0-remote_report_to_printer + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/144/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| This module allows users to send reports to a printer using remote's configuration. @@ -19,49 +38,52 @@ It adds an optional behaviour on reports to send it directly to a printer. Also, this option can be selected as a user default option for printer. +**Table of contents** + +.. contents:: + :local: + Usage ===== * In *Settings > Remotes* configure the remotes printers by usage - -.. 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/11.0 - - 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. +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 `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* Creu Blanca Contributors ------------- +~~~~~~~~~~~~ * Enric Tobella -Maintainer ----------- +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :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. -To contribute to this module, please visit https://odoo-community.org. +This module is part of the `OCA/report-print-send `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/remote_report_to_printer/__manifest__.py b/remote_report_to_printer/__manifest__.py index 199b330..39a8836 100644 --- a/remote_report_to_printer/__manifest__.py +++ b/remote_report_to_printer/__manifest__.py @@ -3,10 +3,10 @@ { 'name': "Report to printer on remotes", - 'version': '11.0.2.1.1', + 'version': '12.0.2.1.1', 'category': 'Generic Modules/Base', 'author': "Creu Blanca, Odoo Community Association (OCA)", - 'website': 'http://www.agilebg.com', + 'website': 'http://www.github.com/OCA/report-print-send', 'license': 'AGPL-3', "depends": ['base_remote', 'base_report_to_printer'], 'data': [ @@ -16,5 +16,4 @@ 'views/res_remote_printer_views.xml', ], 'installable': True, - 'application': True, } diff --git a/remote_report_to_printer/data/printing_data.xml b/remote_report_to_printer/data/printing_data.xml index b6c54b5..9bf8c12 100644 --- a/remote_report_to_printer/data/printing_data.xml +++ b/remote_report_to_printer/data/printing_data.xml @@ -6,4 +6,8 @@ remote_default + + Use User Defaults + user_default + diff --git a/remote_report_to_printer/i18n/remote_report_to_printer.pot b/remote_report_to_printer/i18n/remote_report_to_printer.pot index c6a6d9c..3a1b8f4 100644 --- a/remote_report_to_printer/i18n/remote_report_to_printer.pot +++ b/remote_report_to_printer/i18n/remote_report_to_printer.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -19,47 +19,47 @@ msgid "A Remote cannot have the same printer for the same usage" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_create_uid +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__create_uid msgid "Created by" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_create_date +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__create_date msgid "Created on" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_display_name +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__display_name msgid "Display Name" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_id +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__id msgid "ID" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_is_default +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__is_default msgid "Is Default" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer___last_update +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer____last_update msgid "Last Modified on" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_write_uid +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__write_uid msgid "Last Updated by" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_write_date +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__write_date msgid "Last Updated on" msgstr "" #. module: remote_report_to_printer -#: code:addons/remote_report_to_printer/models/res_remote_printer.py:48 +#: code:addons/remote_report_to_printer/models/res_remote_printer.py:49 #, python-format msgid "Only one default printer is allowed" msgstr "" @@ -70,38 +70,39 @@ msgid "Print Job Action" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_printer_id +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__printer_id msgid "Printer" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_printer_tray_id +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__printer_tray_id msgid "Printer Tray" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_printer_usage +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__printer_usage msgid "Printer Usage" msgstr "" #. module: remote_report_to_printer -#: model:ir.ui.view,arch_db:remote_report_to_printer.res_remote_form +#: model_terms:ir.ui.view,arch_db:remote_report_to_printer.res_remote_form msgid "Printers" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer_remote_id +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_printer__remote_id msgid "Remote" msgstr "" #. module: remote_report_to_printer -#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote_remote_printer_ids -#: model:ir.ui.view,arch_db:remote_report_to_printer.res_remote_printer_form +#: model:ir.model,name:remote_report_to_printer.model_res_remote_printer +#: model:ir.model.fields,field_description:remote_report_to_printer.field_res_remote__remote_printer_ids +#: model_terms:ir.ui.view,arch_db:remote_report_to_printer.res_remote_printer_form msgid "Remote Printer" msgstr "" #. module: remote_report_to_printer -#: model:ir.ui.view,arch_db:remote_report_to_printer.res_remote_printer_tree +#: model_terms:ir.ui.view,arch_db:remote_report_to_printer.res_remote_printer_tree msgid "Remote Printers" msgstr "" @@ -110,18 +111,18 @@ msgstr "" msgid "Remotes" msgstr "" +#. module: remote_report_to_printer +#: model:ir.model,name:remote_report_to_printer.model_ir_actions_report +msgid "Report Action" +msgstr "" + #. module: remote_report_to_printer #: selection:res.remote.printer,printer_usage:0 msgid "Standard" msgstr "" #. module: remote_report_to_printer -#: model:ir.model,name:remote_report_to_printer.model_ir_actions_report -msgid "ir.actions.report" -msgstr "" - -#. module: remote_report_to_printer -#: model:ir.model,name:remote_report_to_printer.model_res_remote_printer -msgid "res.remote.printer" +#: model:ir.model.fields,field_description:remote_report_to_printer.field_printing_action__action_type +msgid "Type" msgstr "" diff --git a/remote_report_to_printer/models/res_remote_printer.py b/remote_report_to_printer/models/res_remote_printer.py index 50faaaf..5f86d7b 100644 --- a/remote_report_to_printer/models/res_remote_printer.py +++ b/remote_report_to_printer/models/res_remote_printer.py @@ -6,6 +6,7 @@ from odoo.exceptions import ValidationError class ResRemotePrinter(models.Model): _name = 'res.remote.printer' + _description = 'Remote Printer' remote_id = fields.Many2one( 'res.remote', diff --git a/remote_report_to_printer/readme/CONTRIBUTORS.rst b/remote_report_to_printer/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..93ec993 --- /dev/null +++ b/remote_report_to_printer/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Enric Tobella diff --git a/remote_report_to_printer/readme/DESCRIPTION.rst b/remote_report_to_printer/readme/DESCRIPTION.rst new file mode 100644 index 0000000..3aa0c75 --- /dev/null +++ b/remote_report_to_printer/readme/DESCRIPTION.rst @@ -0,0 +1,12 @@ +This module allows users to send reports to a printer using remote's configuration. + +A *remote* is an external entity that access odoo. For example, computers, mobiles, +servers... We will identify *remotes* by its name or ip. On some environments, +we want to configure the printers by remote, because users may change their +work place. + +It adds an optional behaviour on reports to send it directly to a printer. + +* `Use remote's configuration` use the remote's behaviour + +Also, this option can be selected as a user default option for printer. diff --git a/remote_report_to_printer/readme/USAGE.rst b/remote_report_to_printer/readme/USAGE.rst new file mode 100644 index 0000000..b923702 --- /dev/null +++ b/remote_report_to_printer/readme/USAGE.rst @@ -0,0 +1 @@ + * In *Settings > Remotes* configure the remotes printers by usage diff --git a/remote_report_to_printer/static/description/index.html b/remote_report_to_printer/static/description/index.html new file mode 100644 index 0000000..d7b56ea --- /dev/null +++ b/remote_report_to_printer/static/description/index.html @@ -0,0 +1,437 @@ + + + + + + +Report to printer on remotes + + + +
+

Report to printer on remotes

+ + +

Beta License: AGPL-3 OCA/report-print-send Translate me on Weblate Try me on Runbot

+

This module allows users to send reports to a printer using remote’s configuration.

+

A remote is an external entity that access odoo. For example, computers, mobiles, +servers… We will identify remotes by its name or ip. On some environments, +we want to configure the printers by remote, because users may change their +work place.

+

It adds an optional behaviour on reports to send it directly to a printer.

+
    +
  • Use remote’s configuration use the remote’s behaviour
  • +
+

Also, this option can be selected as a user default option for printer.

+

Table of contents

+ +
+

Usage

+
+
    +
  • In Settings > Remotes configure the remotes printers by usage
  • +
+
+
+
+

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.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Creu Blanca
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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.

+

This module is part of the OCA/report-print-send project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/remote_report_to_printer/tests/test_printer.py b/remote_report_to_printer/tests/test_printer.py index cfee617..27677b2 100644 --- a/remote_report_to_printer/tests/test_printer.py +++ b/remote_report_to_printer/tests/test_printer.py @@ -66,7 +66,7 @@ class TestRemotePrinter(TransactionCase): report = self.Model.search([], limit=1) self.env.user.printing_action = 'remote_default' report.property_printing_action_id = self.browse_ref( - 'base_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 @@ -96,7 +96,7 @@ class TestRemotePrinter(TransactionCase): report = self.Model.search([], limit=1) self.env.user.printing_action = 'remote_default' report.property_printing_action_id = self.browse_ref( - 'base_report_to_printer.printing_action_3' + 'remote_report_to_printer.printing_action_3' ) with patch( 'odoo.addons.base_remote.models.base.Base.remote', From 70d06c60c480e98c66a8ac7e9a0f2bc2c25200c7 Mon Sep 17 00:00:00 2001 From: Olga Marco Date: Thu, 17 Jun 2021 16:57:44 +0200 Subject: [PATCH 6/9] [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 - + - + From 3a37225ca10105b75b8f0dcd1f83c3cf8267033a Mon Sep 17 00:00:00 2001 From: Olga Marco Date: Thu, 17 Jun 2021 17:33:14 +0200 Subject: [PATCH 7/9] [MIG] remote_report_to_printer: Migration to 13.0 --- remote_report_to_printer/README.rst | 10 +++++----- .../i18n/remote_report_to_printer.pot | 13 ++++++------- .../models/ir_actions_report.py | 4 +--- remote_report_to_printer/models/res_remote.py | 3 +-- .../models/res_remote_printer.py | 1 - .../static/description/index.html | 6 +++--- remote_report_to_printer/tests/test_printer.py | 2 +- .../tests/test_remote_printer.py | 16 ++++++++-------- 8 files changed, 25 insertions(+), 30 deletions(-) diff --git a/remote_report_to_printer/README.rst b/remote_report_to_printer/README.rst index 1bd946e..fc8b5d1 100644 --- a/remote_report_to_printer/README.rst +++ b/remote_report_to_printer/README.rst @@ -14,13 +14,13 @@ Report to printer on remotes :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freport--print--send-lightgray.png?logo=github - :target: https://github.com/OCA/report-print-send/tree/12.0/remote_report_to_printer + :target: https://github.com/OCA/report-print-send/tree/13.0/remote_report_to_printer :alt: OCA/report-print-send .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/report-print-send-12-0/report-print-send-12-0-remote_report_to_printer + :target: https://translation.odoo-community.org/projects/report-print-send-13-0/report-print-send-13-0-remote_report_to_printer :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/144/12.0 + :target: https://runbot.odoo-community.org/runbot/144/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -54,7 +54,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -84,6 +84,6 @@ 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. -This module is part of the `OCA/report-print-send `_ project on GitHub. +This module is part of the `OCA/report-print-send `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/remote_report_to_printer/i18n/remote_report_to_printer.pot b/remote_report_to_printer/i18n/remote_report_to_printer.pot index 3a1b8f4..68c77f8 100644 --- a/remote_report_to_printer/i18n/remote_report_to_printer.pot +++ b/remote_report_to_printer/i18n/remote_report_to_printer.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * remote_report_to_printer +# * remote_report_to_printer # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: \n" #. module: remote_report_to_printer -#: sql_constraint:res.remote.printer:0 +#: model:ir.model.constraint,message:remote_report_to_printer.constraint_res_remote_printer_unique_printer_remote_usage msgid "A Remote cannot have the same printer for the same usage" msgstr "" @@ -59,7 +59,7 @@ msgid "Last Updated on" msgstr "" #. module: remote_report_to_printer -#: code:addons/remote_report_to_printer/models/res_remote_printer.py:49 +#: code:addons/remote_report_to_printer/models/res_remote_printer.py:0 #, python-format msgid "Only one default printer is allowed" msgstr "" @@ -117,7 +117,7 @@ msgid "Report Action" msgstr "" #. module: remote_report_to_printer -#: selection:res.remote.printer,printer_usage:0 +#: model:ir.model.fields.selection,name:remote_report_to_printer.selection__res_remote_printer__printer_usage__standard msgid "Standard" msgstr "" @@ -125,4 +125,3 @@ msgstr "" #: model:ir.model.fields,field_description:remote_report_to_printer.field_printing_action__action_type msgid "Type" msgstr "" - diff --git a/remote_report_to_printer/models/ir_actions_report.py b/remote_report_to_printer/models/ir_actions_report.py index 797eb18..4e26a29 100644 --- a/remote_report_to_printer/models/ir_actions_report.py +++ b/remote_report_to_printer/models/ir_actions_report.py @@ -1,20 +1,18 @@ # Copyright (c) 2018 Creu Blanca # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, models +from odoo import models class IrActionsReport(models.Model): _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": 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": diff --git a/remote_report_to_printer/models/res_remote.py b/remote_report_to_printer/models/res_remote.py index 69b9ce6..8fb8cc4 100644 --- a/remote_report_to_printer/models/res_remote.py +++ b/remote_report_to_printer/models/res_remote.py @@ -1,6 +1,6 @@ # 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 fields, models class ResRemote(models.Model): @@ -10,7 +10,6 @@ class ResRemote(models.Model): "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") diff --git a/remote_report_to_printer/models/res_remote_printer.py b/remote_report_to_printer/models/res_remote_printer.py index 197e632..0e3f02c 100644 --- a/remote_report_to_printer/models/res_remote_printer.py +++ b/remote_report_to_printer/models/res_remote_printer.py @@ -29,7 +29,6 @@ class ResRemotePrinter(models.Model): """ Reset the tray when the printer is changed """ self.printer_tray_id = False - @api.multi @api.constrains("remote_id", "printer_usage", "is_default") def _check_remote_usage(self): for rec in self.filtered(lambda r: r.is_default): diff --git a/remote_report_to_printer/static/description/index.html b/remote_report_to_printer/static/description/index.html index d7b56ea..ba291da 100644 --- a/remote_report_to_printer/static/description/index.html +++ b/remote_report_to_printer/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/report-print-send Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/report-print-send Translate me on Weblate Try me on Runbot

This module allows users to send reports to a printer using remote’s configuration.

A remote is an external entity that access odoo. For example, computers, mobiles, servers… We will identify remotes by its name or ip. On some environments, @@ -404,7 +404,7 @@ work place.

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.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -428,7 +428,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

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.

-

This module is part of the OCA/report-print-send project on GitHub.

+

This module is part of the OCA/report-print-send project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/remote_report_to_printer/tests/test_printer.py b/remote_report_to_printer/tests/test_printer.py index 5aacda2..9d92d6d 100644 --- a/remote_report_to_printer/tests/test_printer.py +++ b/remote_report_to_printer/tests/test_printer.py @@ -12,7 +12,7 @@ class TestRemotePrinter(TransactionCase): 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"} + {"name": name, "ip": "127.0.0.1", "in_network": True} ) self.server = self.env["printing.server"].create( {"name": "Server", "address": "localhost", "port": 631} diff --git a/remote_report_to_printer/tests/test_remote_printer.py b/remote_report_to_printer/tests/test_remote_printer.py index 6d3431e..636bd9d 100644 --- a/remote_report_to_printer/tests/test_remote_printer.py +++ b/remote_report_to_printer/tests/test_remote_printer.py @@ -18,7 +18,7 @@ class TestRemotePrinter(TransactionCase): 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"} + {"name": name, "ip": "127.0.0.1", "in_network": True} ) self.server = self.env["printing.server"].create( {"name": "Server", "address": "localhost", "port": 631} @@ -49,7 +49,7 @@ class TestRemotePrinter(TransactionCase): ) def test_constrain(self): - self.env["res.remote.printer"].sudo(self.printer_manager).create( + self.env["res.remote.printer"].with_user(self.printer_manager).create( { "remote_id": self.remote.id, "printer_id": self.printer_1.id, @@ -68,7 +68,7 @@ class TestRemotePrinter(TransactionCase): def test_onchange_printer(self): remote_printer = ( self.env["res.remote.printer"] - .sudo(self.printer_manager) + .with_user(self.printer_manager) .create( { "remote_id": self.remote.id, @@ -85,7 +85,7 @@ class TestRemotePrinter(TransactionCase): def test_permissions_delete_manager(self): printer = ( self.env["res.remote.printer"] - .sudo(self.printer_manager) + .with_user(self.printer_manager) .create( { "remote_id": self.remote.id, @@ -94,7 +94,7 @@ class TestRemotePrinter(TransactionCase): } ) ) - printer.sudo(self.printer_manager).unlink() + printer.with_user(self.printer_manager).unlink() printer = self.env["res.remote.printer"].search( [ ("remote_id", "=", self.remote.id), @@ -107,7 +107,7 @@ class TestRemotePrinter(TransactionCase): def test_permissions_delete_user(self): printer = ( self.env["res.remote.printer"] - .sudo(self.printer_manager) + .with_user(self.printer_manager) .create( { "remote_id": self.remote.id, @@ -117,11 +117,11 @@ class TestRemotePrinter(TransactionCase): ) ) with self.assertRaises(AccessError): - printer.sudo(self.printer_user).unlink() + printer.with_user(self.printer_user).unlink() def test_permissions_create_user(self): with self.assertRaises(AccessError): - self.env["res.remote.printer"].sudo(self.printer_user).create( + self.env["res.remote.printer"].with_user(self.printer_user).create( { "remote_id": self.remote.id, "printer_id": self.printer_1.id, From cc7debee28373a8615e89f0751970cd1bfc819bb Mon Sep 17 00:00:00 2001 From: Olga Marco Date: Tue, 4 Jan 2022 13:40:10 +0100 Subject: [PATCH 8/9] [IMP] remote_report_to_printer: black, isort, prettier --- remote_report_to_printer/__manifest__.py | 2 +- .../models/printing_action.py | 4 +++- remote_report_to_printer/models/res_remote.py | 3 ++- .../models/res_remote_printer.py | 15 ++++++++++++--- .../odoo/addons/remote_report_to_printer | 1 + setup/remote_report_to_printer/setup.py | 6 ++++++ 6 files changed, 25 insertions(+), 6 deletions(-) create mode 120000 setup/remote_report_to_printer/odoo/addons/remote_report_to_printer create mode 100644 setup/remote_report_to_printer/setup.py diff --git a/remote_report_to_printer/__manifest__.py b/remote_report_to_printer/__manifest__.py index 32617a1..aa805fa 100644 --- a/remote_report_to_printer/__manifest__.py +++ b/remote_report_to_printer/__manifest__.py @@ -6,7 +6,7 @@ "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", + "website": "https://github.com/OCA/report-print-send", "license": "AGPL-3", "depends": ["base_remote", "base_report_to_printer"], "data": [ diff --git a/remote_report_to_printer/models/printing_action.py b/remote_report_to_printer/models/printing_action.py index 8e10e1c..a8cda12 100644 --- a/remote_report_to_printer/models/printing_action.py +++ b/remote_report_to_printer/models/printing_action.py @@ -13,4 +13,6 @@ class PrintingAction(models.Model): 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 8fb8cc4..cef674d 100644 --- a/remote_report_to_printer/models/res_remote.py +++ b/remote_report_to_printer/models/res_remote.py @@ -7,7 +7,8 @@ class ResRemote(models.Model): _inherit = "res.remote" remote_printer_ids = fields.One2many( - "res.remote.printer", inverse_name="remote_id", + "res.remote.printer", + inverse_name="remote_id", ) def get_printer_behaviour(self): diff --git a/remote_report_to_printer/models/res_remote_printer.py b/remote_report_to_printer/models/res_remote_printer.py index 0e3f02c..9af9834 100644 --- a/remote_report_to_printer/models/res_remote_printer.py +++ b/remote_report_to_printer/models/res_remote_printer.py @@ -8,10 +8,19 @@ class ResRemotePrinter(models.Model): _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") diff --git a/setup/remote_report_to_printer/odoo/addons/remote_report_to_printer b/setup/remote_report_to_printer/odoo/addons/remote_report_to_printer new file mode 120000 index 0000000..40b12ab --- /dev/null +++ b/setup/remote_report_to_printer/odoo/addons/remote_report_to_printer @@ -0,0 +1 @@ +../../../../remote_report_to_printer \ No newline at end of file diff --git a/setup/remote_report_to_printer/setup.py b/setup/remote_report_to_printer/setup.py new file mode 100644 index 0000000..28c57bb --- /dev/null +++ b/setup/remote_report_to_printer/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From b6ce6b88079878a677b96848b5b3bc7993a473ad Mon Sep 17 00:00:00 2001 From: Olga Marco Date: Wed, 5 Jan 2022 09:39:55 +0100 Subject: [PATCH 9/9] [MIG] remote_report_to_printer: Migration to 14.0 --- remote_report_to_printer/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remote_report_to_printer/__manifest__.py b/remote_report_to_printer/__manifest__.py index aa805fa..7957e96 100644 --- a/remote_report_to_printer/__manifest__.py +++ b/remote_report_to_printer/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Report to printer on remotes", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "category": "Generic Modules/Base", "author": "Creu Blanca, Odoo Community Association (OCA)", "website": "https://github.com/OCA/report-print-send",