odex25_standard/odex25_base/query_deluxe/wizard/pdforientation.py

41 lines
1.4 KiB
Python

from odoo import api, fields, models, _
from odoo.exceptions import UserError
class PdfOrientation(models.TransientModel):
_name = 'pdforientation'
_description = "Select the orientation of the pdf"
def orientation_choices(self):
return [('landscape', _('Landscape')), ('portrait', _('Portrait'))]
orientation = fields.Selection(string="PDF orientation", selection=orientation_choices, default='landscape')
query_name = fields.Text(string="Query")
def print_pdf(self):
self = self.sudo()
try:
self.env.cr.execute(self.query_name)
except Exception as e:
raise UserError(e)
try:
if self.env.cr.description:
headers = [d[0] for d in self.env.cr.description]
bodies = self.env.cr.fetchall()
except Exception as e:
raise UserError(e)
action_print_pdf = self.env.ref('query_deluxe.action_print_pdf')
if self.orientation == 'landscape':
action_print_pdf.paperformat_id.orientation = "Landscape"
elif self.orientation == 'portrait':
action_print_pdf.paperformat_id.orientation = "Portrait"
append_data = {
'query_name': self.query_name,
'headers': headers,
'bodies': bodies
}
return action_print_pdf.report_action(self, data=append_data)