first push message
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import ks_export_gantt
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,79 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from odoo import http
|
||||
from odoo.http import request, content_disposition
|
||||
|
||||
# Odoo 19: ExcelExport path changed between versions — safe fallback import.
|
||||
try:
|
||||
from odoo.addons.web.controllers.export import ExcelExport
|
||||
except ImportError:
|
||||
try:
|
||||
from odoo.addons.web.controllers.main import ExcelExport
|
||||
except ImportError:
|
||||
ExcelExport = object
|
||||
|
||||
|
||||
class KsGanttExport(ExcelExport):
|
||||
|
||||
@http.route('/web/ksgantt/export/xlsx/', type='http', auth="user")
|
||||
def ks_gantt_export_excel(self, project_id):
|
||||
ks_fields = self.ks_gantt_export_field()
|
||||
ks_export_data = []
|
||||
|
||||
if project_id != 'false':
|
||||
project_ids = [project_id]
|
||||
else:
|
||||
project_ids = [
|
||||
str(p.id)
|
||||
for p in request.env['project.project'].search([])
|
||||
]
|
||||
|
||||
for ks_project in project_ids:
|
||||
ks_task_data = request.env['project.task'].search(
|
||||
[('project_id', '=', int(ks_project))]
|
||||
)
|
||||
for ks_task in ks_task_data:
|
||||
ks_row_list = []
|
||||
for ks_export_field in ks_fields:
|
||||
field_def = ks_task._fields.get(ks_export_field)
|
||||
if field_def and field_def.type == 'many2one':
|
||||
ks_row_list.append(ks_task[ks_export_field].display_name)
|
||||
elif field_def:
|
||||
ks_row_list.append(ks_task[ks_export_field])
|
||||
|
||||
if ks_task.ks_task_link_ids:
|
||||
for index, item in enumerate(ks_task.ks_task_link_ids):
|
||||
if index != 0:
|
||||
ks_row = (
|
||||
[ks_row_list[0]]
|
||||
+ [False] * (len(ks_fields) - 1)
|
||||
+ [item.ks_target_task_id.id, item.ks_task_link_type]
|
||||
)
|
||||
ks_export_data.append(ks_row)
|
||||
else:
|
||||
ks_row_list.append(item.ks_target_task_id.id)
|
||||
ks_row_list.append(item.ks_task_link_type)
|
||||
ks_export_data.append(ks_row_list)
|
||||
else:
|
||||
ks_export_data.append(ks_row_list)
|
||||
|
||||
ks_fields.append('ks_target_task_id')
|
||||
ks_fields.append('ks_task_link_type')
|
||||
response_data = self.from_data(ks_fields, ks_export_data)
|
||||
return request.make_response(
|
||||
response_data,
|
||||
headers=[
|
||||
(
|
||||
'Content-Disposition',
|
||||
content_disposition(self.filename('project_project')),
|
||||
),
|
||||
('Content-Type', self.content_type),
|
||||
],
|
||||
)
|
||||
|
||||
def ks_gantt_export_field(self):
|
||||
return [
|
||||
'id', 'name', 'priority', 'project_id', 'partner_id',
|
||||
'stage_id', 'date_deadline', 'ks_task_unschedule', 'ks_task_type',
|
||||
'ks_enable_task_duration', 'ks_start_datetime', 'ks_end_datetime',
|
||||
'ks_schedule_mode', 'ks_constraint_task_type', 'ks_constraint_task_date',
|
||||
]
|
||||
Reference in New Issue
Block a user