41 lines
1.4 KiB
Python
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)
|