mirror of
https://github.com/OCA/report-print-send.git
synced 2025-02-16 07:11:31 +02:00
[MIG] base_report_to_printer: Upgrade to v9
This commit is contained in:
76
base_report_to_printer/models/report.py
Normal file
76
base_report_to_printer/models/report.py
Normal file
@@ -0,0 +1,76 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2014 Camptocamp SA
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from openerp import models, exceptions, _, api
|
||||
|
||||
|
||||
class Report(models.Model):
|
||||
_inherit = 'report'
|
||||
|
||||
@api.v7
|
||||
def print_document(self, cr, uid, ids, report_name, html=None,
|
||||
data=None, context=None):
|
||||
""" Print a document, do not return the document file """
|
||||
if context is None:
|
||||
context = self.pool['res.users'].context_get(cr, uid)
|
||||
local_context = context.copy()
|
||||
local_context['must_skip_send_to_printer'] = True
|
||||
document = self.get_pdf(cr, uid, ids, report_name,
|
||||
html=html, data=data, context=local_context)
|
||||
report = self._get_report_from_name(cr, uid, report_name)
|
||||
behaviour = report.behaviour()[report.id]
|
||||
printer = behaviour['printer']
|
||||
if not printer:
|
||||
raise exceptions.Warning(
|
||||
_('No printer configured to print this report.')
|
||||
)
|
||||
return printer.with_context(context).print_document(
|
||||
report, document, report.report_type)
|
||||
|
||||
@api.v8
|
||||
def print_document(self, records, report_name, html=None, data=None):
|
||||
return self._model.print_document(
|
||||
self._cr, self._uid,
|
||||
records.ids, report_name,
|
||||
html=html, data=data, context=self._context)
|
||||
|
||||
def _can_print_report(self, cr, uid, ids, behaviour, printer, document,
|
||||
context=None):
|
||||
"""Predicate that decide if report can be sent to printer
|
||||
|
||||
If you want to prevent `get_pdf` to send report you can set
|
||||
the `must_skip_send_to_printer` key to True in the context
|
||||
"""
|
||||
if context is not None and context.get('must_skip_send_to_printer'):
|
||||
return False
|
||||
if behaviour['action'] == 'server' and printer and document:
|
||||
return True
|
||||
return False
|
||||
|
||||
@api.v7
|
||||
def get_pdf(self, cr, uid, ids, report_name, html=None,
|
||||
data=None, context=None):
|
||||
""" Generate a PDF and returns it.
|
||||
|
||||
If the action configured on the report is server, it prints the
|
||||
generated document as well.
|
||||
"""
|
||||
document = super(Report, self).get_pdf(cr, uid, ids, report_name,
|
||||
html=html, data=data,
|
||||
context=context)
|
||||
report = self._get_report_from_name(cr, uid, report_name)
|
||||
behaviour = report.behaviour()[report.id]
|
||||
printer = behaviour['printer']
|
||||
can_print_report = self._can_print_report(cr, uid, ids,
|
||||
behaviour, printer, document,
|
||||
context=context)
|
||||
if can_print_report:
|
||||
printer.print_document(report, document, report.report_type)
|
||||
return document
|
||||
|
||||
@api.v8
|
||||
def get_pdf(self, records, report_name, html=None, data=None):
|
||||
return self._model.get_pdf(self._cr, self._uid,
|
||||
records.ids, report_name,
|
||||
html=html, data=data, context=self._context)
|
||||
Reference in New Issue
Block a user