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
+
+
+

+
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
+
+
+
+
+
+- In Settings > Remotes configure the remotes printers by usage
+
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
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.
+
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. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

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",