5 changed files with 6 additions and 95 deletions
@ -1,22 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
################################################################################ |
|
||||
# |
|
||||
# Cybrosys Technologies Pvt. Ltd. |
|
||||
# |
|
||||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|
||||
# Author: Bhagyadev KP (<https://www.cybrosys.com>) |
|
||||
# |
|
||||
# You can modify it under the terms of the GNU LESSER |
|
||||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
|
||||
# |
|
||||
# This program is distributed in the hope that it will be useful, |
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|
||||
# |
|
||||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|
||||
# (LGPL v3) along with this program. |
|
||||
# If not, see <http://www.gnu.org/licenses/>. |
|
||||
# |
|
||||
################################################################################ |
|
||||
from . import controllers |
|
||||
@ -1,71 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
################################################################################ |
|
||||
# |
|
||||
# Cybrosys Technologies Pvt. Ltd. |
|
||||
# |
|
||||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|
||||
# Author: Bhagyadev KP (<https://www.cybrosys.com>) |
|
||||
# |
|
||||
# You can modify it under the terms of the GNU LESSER |
|
||||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
|
||||
# |
|
||||
# This program is distributed in the hope that it will be useful, |
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|
||||
# |
|
||||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|
||||
# (LGPL v3) along with this program. |
|
||||
# If not, see <http://www.gnu.org/licenses/>. |
|
||||
# |
|
||||
################################################################################ |
|
||||
import json |
|
||||
from odoo import http |
|
||||
from odoo.http import content_disposition, request |
|
||||
from odoo.tools import html_escape |
|
||||
|
|
||||
|
|
||||
class XLSXReportController(http.Controller): |
|
||||
@http.route('/xlsx_report', type='http', auth='user', methods=['POST'], |
|
||||
csrf=False) |
|
||||
def get_report_xlsx(self, model, data, output_format, report_name, |
|
||||
report_action): |
|
||||
"""Generate an XLSX report based on the provided data and return it as |
|
||||
a response. |
|
||||
Args: |
|
||||
model (str): The name of the model on which the report is based. |
|
||||
data (str): The data required for generating the report. |
|
||||
output_format (str): The desired output format for the report |
|
||||
(e.g., 'xlsx'). |
|
||||
report_name (str): The name to be given to the generated report |
|
||||
file. |
|
||||
Returns: |
|
||||
Response: The generated report file as a response. |
|
||||
Raises: |
|
||||
Exception: If an error occurs during report generation. |
|
||||
""" |
|
||||
uid = request.session.uid |
|
||||
report_obj = request.env[model].with_user(uid) |
|
||||
token = 'dummy-because-api-expects-one' |
|
||||
try: |
|
||||
if output_format == 'xlsx': |
|
||||
response = request.make_response( |
|
||||
None, |
|
||||
headers=[ |
|
||||
('Content-Type', 'application/vnd.ms-excel'), |
|
||||
('Content-Disposition', |
|
||||
content_disposition(report_name + '.xlsx')) |
|
||||
] |
|
||||
) |
|
||||
report_obj.get_xlsx_report(data, response, report_name, |
|
||||
report_action) |
|
||||
response.set_cookie('fileToken', token) |
|
||||
return response |
|
||||
except Exception as e: |
|
||||
se = http.serialize_exception(e) |
|
||||
error = { |
|
||||
'code': 200, |
|
||||
'message': 'Odoo Server Error', |
|
||||
'data': se |
|
||||
} |
|
||||
return request.make_response(html_escape(json.dumps(error))) |
|
||||
Loading…
Reference in new issue