mirror of
https://github.com/OCA/report-print-send.git
synced 2025-02-16 07:11:31 +02:00
[ADD] base_report_to_printer: Print attachments wizard
This commit is contained in:
@@ -156,6 +156,7 @@ Contributors
|
|||||||
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
|
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
|
||||||
* Matias Peralta <mnp@adhoc.com.ar>
|
* Matias Peralta <mnp@adhoc.com.ar>
|
||||||
* Hughes Damry <hughes.damry@acsone.eu>
|
* Hughes Damry <hughes.damry@acsone.eu>
|
||||||
|
* Akim Juillerat <akim.juillerat@camptocamp.com>
|
||||||
|
|
||||||
Maintainers
|
Maintainers
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
"views/printing_report.xml",
|
"views/printing_report.xml",
|
||||||
"views/res_users.xml",
|
"views/res_users.xml",
|
||||||
"views/ir_actions_report.xml",
|
"views/ir_actions_report.xml",
|
||||||
|
"wizards/print_attachment_report.xml",
|
||||||
"wizards/printing_printer_update_wizard_view.xml",
|
"wizards/printing_printer_update_wizard_view.xml",
|
||||||
],
|
],
|
||||||
"assets": {
|
"assets": {
|
||||||
|
|||||||
@@ -13,3 +13,4 @@
|
|||||||
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
|
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
|
||||||
* Matias Peralta <mnp@adhoc.com.ar>
|
* Matias Peralta <mnp@adhoc.com.ar>
|
||||||
* Hughes Damry <hughes.damry@acsone.eu>
|
* Hughes Damry <hughes.damry@acsone.eu>
|
||||||
|
* Akim Juillerat <akim.juillerat@camptocamp.com>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
|
<meta name="generator" content="Docutils 0.14: http://docutils.sourceforge.net/" />
|
||||||
<title>Report to printer</title>
|
<title>Report to printer</title>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
|
||||||
@@ -507,6 +507,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
|
|||||||
<li>Alexandre Fayolle <<a class="reference external" href="mailto:alexandre.fayolle@camptocamp.com">alexandre.fayolle@camptocamp.com</a>></li>
|
<li>Alexandre Fayolle <<a class="reference external" href="mailto:alexandre.fayolle@camptocamp.com">alexandre.fayolle@camptocamp.com</a>></li>
|
||||||
<li>Matias Peralta <<a class="reference external" href="mailto:mnp@adhoc.com.ar">mnp@adhoc.com.ar</a>></li>
|
<li>Matias Peralta <<a class="reference external" href="mailto:mnp@adhoc.com.ar">mnp@adhoc.com.ar</a>></li>
|
||||||
<li>Hughes Damry <<a class="reference external" href="mailto:hughes.damry@acsone.eu">hughes.damry@acsone.eu</a>></li>
|
<li>Hughes Damry <<a class="reference external" href="mailto:hughes.damry@acsone.eu">hughes.damry@acsone.eu</a>></li>
|
||||||
|
<li>Akim Juillerat <<a class="reference external" href="mailto:akim.juillerat@camptocamp.com">akim.juillerat@camptocamp.com</a>></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="maintainers">
|
<div class="section" id="maintainers">
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
|
from . import print_attachment_report
|
||||||
from . import printing_printer_update_wizard
|
from . import printing_printer_update_wizard
|
||||||
|
|||||||
77
base_report_to_printer/wizards/print_attachment_report.py
Normal file
77
base_report_to_printer/wizards/print_attachment_report.py
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# Copyright 2020 Camptocamp SA
|
||||||
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
||||||
|
import base64
|
||||||
|
|
||||||
|
from openerp import _, api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class PrintAttachment(models.TransientModel):
|
||||||
|
_name = "wizard.print.attachment"
|
||||||
|
_description = "Print Attachment"
|
||||||
|
|
||||||
|
printer_id = fields.Many2one(
|
||||||
|
comodel_name="printing.printer",
|
||||||
|
string="Printer",
|
||||||
|
required=True,
|
||||||
|
help="Printer used to print the attachments.",
|
||||||
|
)
|
||||||
|
attachment_line_ids = fields.One2many(
|
||||||
|
"wizard.print.attachment.line",
|
||||||
|
"wizard_id",
|
||||||
|
string="Attachments to print",
|
||||||
|
)
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def print_attachments(self):
|
||||||
|
"""Prints a label per selected record"""
|
||||||
|
self.ensure_one()
|
||||||
|
errors = []
|
||||||
|
for att_line in self.attachment_line_ids:
|
||||||
|
data = att_line.attachment_id.datas
|
||||||
|
if not data:
|
||||||
|
errors.append(att_line)
|
||||||
|
continue
|
||||||
|
content = base64.b64decode(data)
|
||||||
|
content_format = att_line.get_format()
|
||||||
|
self.printer_id.print_document(
|
||||||
|
None, content=content, format=content_format, copies=att_line.copies
|
||||||
|
)
|
||||||
|
if errors:
|
||||||
|
return {
|
||||||
|
"warning": _(
|
||||||
|
"Following attachments could not be printed:\n\n%s"
|
||||||
|
% "\n".join(
|
||||||
|
[
|
||||||
|
_("%s (%s copies)") % (err.record_name, err.copies)
|
||||||
|
for err in errors
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class PrintAttachmentLine(models.TransientModel):
|
||||||
|
_name = "wizard.print.attachment.line"
|
||||||
|
_description = "Print Attachment line"
|
||||||
|
|
||||||
|
wizard_id = fields.Many2one("wizard.print.attachment")
|
||||||
|
attachment_id = fields.Many2one(
|
||||||
|
"ir.attachment",
|
||||||
|
required=True,
|
||||||
|
domain=[
|
||||||
|
"|",
|
||||||
|
("mimetype", "=", "application/pdf"),
|
||||||
|
("mimetype", "=", "application/octet-stream"),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
record_name = fields.Char(related="attachment_id.res_name", readonly=True)
|
||||||
|
copies = fields.Integer(default=1)
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def get_format(self):
|
||||||
|
self.ensure_one()
|
||||||
|
mimetype = self.attachment_id.mimetype
|
||||||
|
if mimetype == "application/pdf":
|
||||||
|
return "pdf"
|
||||||
|
else:
|
||||||
|
return "raw"
|
||||||
60
base_report_to_printer/wizards/print_attachment_report.xml
Normal file
60
base_report_to_printer/wizards/print_attachment_report.xml
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
<record id="wizard_print_attachment_form" model="ir.ui.view">
|
||||||
|
<field name="name">wizard.print.attachment</field>
|
||||||
|
<field name="model">wizard.print.attachment</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Print attachments">
|
||||||
|
<group>
|
||||||
|
<field name="printer_id" />
|
||||||
|
<field name="attachment_line_ids">
|
||||||
|
<tree editable="top">
|
||||||
|
<field name="attachment_id" create="0" />
|
||||||
|
<field name="record_name" />
|
||||||
|
<field name="copies" />
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</group>
|
||||||
|
<footer>
|
||||||
|
<button
|
||||||
|
name="print_attachments"
|
||||||
|
string="Print"
|
||||||
|
type="object"
|
||||||
|
class="oe_highlight"
|
||||||
|
/>
|
||||||
|
or
|
||||||
|
<button string="Cancel" class="oe_link" special="cancel" />
|
||||||
|
</footer>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
<record id="wizard_print_attachment_line_form" model="ir.ui.view">
|
||||||
|
<field name="name">wizard.print.attachment.line.form</field>
|
||||||
|
<field name="model">wizard.print.attachment.line</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form>
|
||||||
|
<group>
|
||||||
|
<field name="attachment_id" create="0" />
|
||||||
|
<field name="record_name" />
|
||||||
|
<field name="copies" />
|
||||||
|
</group>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
<record id="action_wizard_print_attachment" model="ir.actions.act_window">
|
||||||
|
<field name="name">Print Attachments</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">wizard.print.attachment</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">form</field>
|
||||||
|
<field name="target">new</field>
|
||||||
|
</record>
|
||||||
|
<menuitem
|
||||||
|
id="menu_action_wizard_print_attachment"
|
||||||
|
action="action_wizard_print_attachment"
|
||||||
|
sequence="50"
|
||||||
|
parent="printing_menu"
|
||||||
|
/>
|
||||||
|
</data>
|
||||||
|
</openerp>
|
||||||
Reference in New Issue
Block a user