diff --git a/base_report_to_printer_websocket/README.rst b/base_report_to_printer_websocket/README.rst index 041d09c74b2..2b3fce9b1ff 100644 --- a/base_report_to_printer_websocket/README.rst +++ b/base_report_to_printer_websocket/README.rst @@ -130,8 +130,13 @@ Authors Contributors ------------ -- David Jiménez david.jimenez@forgeflow.com -- Enric Tobella enric.tobella@dixmit.com +- `ForgeFlow `__: + + - David Jiménez david.jimenez@forgeflow.com + +- `Dixmit `__: + + - Enric Tobella Maintainers ----------- diff --git a/base_report_to_printer_websocket/models/ir_websocket.py b/base_report_to_printer_websocket/models/ir_websocket.py index 7f32bc68bd6..a73bdcd3cdd 100644 --- a/base_report_to_printer_websocket/models/ir_websocket.py +++ b/base_report_to_printer_websocket/models/ir_websocket.py @@ -9,15 +9,16 @@ class IrWebsocket(models.AbstractModel): _inherit = "ir.websocket" def _build_bus_channel_list(self, channels): - ws_channels = set( + websocket_printers = ( self.env["printing.printer"] .sudo() - .search([("backend", "=", "websocket"), ("websocket_channel", "!=", False)]) - .mapped("websocket_channel") + .search( + [ + ("backend", "=", "websocket"), + ("websocket_user_id", "=", self.env.uid), + ] + ) ) - is_printing_user = self.env.uid and self.env.user.has_group( - "base_report_to_printer.printing_group_user" - ) - if not is_printing_user: - channels = [ch for ch in channels if ch not in ws_channels] + for printer in websocket_printers: + channels.append(printer) return super()._build_bus_channel_list(channels) diff --git a/base_report_to_printer_websocket/models/printing_printer.py b/base_report_to_printer_websocket/models/printing_printer.py index 8c38d364824..26246f6030f 100644 --- a/base_report_to_printer_websocket/models/printing_printer.py +++ b/base_report_to_printer_websocket/models/printing_printer.py @@ -17,10 +17,8 @@ class PrintingPrinter(models.Model): selection_add=[("websocket", "WebSocket")], ondelete={"websocket": "cascade"}, ) - websocket_channel = fields.Char( - string="WebSocket Channel", - default="printer", - help="Channel name used to route print jobs to the correct WebSocket client.", + websocket_user_id = fields.Many2one( + "res.users", ) def print_document( @@ -39,7 +37,6 @@ def print_document( "file_data": pdf_b64, "file_type": doc_format, } - channel = self.websocket_channel or "printer" - self.env["bus.bus"]._sendone(channel, "print_job", payload) + self.env["bus.bus"]._sendone(self, "print_job", payload) _logger.info("Print job sent via WebSocket to printer '%s'", self.name) return True diff --git a/base_report_to_printer_websocket/readme/CONTRIBUTORS.md b/base_report_to_printer_websocket/readme/CONTRIBUTORS.md index 97487caf4fb..20e0310b46e 100644 --- a/base_report_to_printer_websocket/readme/CONTRIBUTORS.md +++ b/base_report_to_printer_websocket/readme/CONTRIBUTORS.md @@ -1,2 +1,6 @@ -- David Jiménez -- Enric Tobella +- [ForgeFlow](https://forgeflow.com): + - David Jiménez + +- [Dixmit](https://dixmit.com): + - Enric Tobella + diff --git a/base_report_to_printer_websocket/static/description/index.html b/base_report_to_printer_websocket/static/description/index.html index 735d4e48e5d..f317d149167 100644 --- a/base_report_to_printer_websocket/static/description/index.html +++ b/base_report_to_printer_websocket/static/description/index.html @@ -477,8 +477,14 @@

Authors

Contributors

diff --git a/base_report_to_printer_websocket/views/printing_printer.xml b/base_report_to_printer_websocket/views/printing_printer.xml index 0b0c12af76f..889b3da0256 100644 --- a/base_report_to_printer_websocket/views/printing_printer.xml +++ b/base_report_to_printer_websocket/views/printing_printer.xml @@ -11,7 +11,11 @@ printing.printer - +