add dashboar module

This commit is contained in:
sonal
2020-07-30 12:45:38 +05:30
parent f8a05fc670
commit a0e71b882a
453 changed files with 123399 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
from . import ks_chart_export
from . import ks_list_export
from . import ks_dashboard_export

View File

@@ -0,0 +1,94 @@
import re
import datetime
import io
import json
import operator
from odoo.addons.web.controllers.main import ExportFormat,serialize_exception, ExportXlsxWriter
from odoo.tools.translate import _
from odoo import http
from odoo.http import content_disposition, request
from odoo.tools.misc import xlwt
from odoo.exceptions import UserError
from odoo.tools import pycompat
class KsChartExport(ExportFormat, http.Controller):
def base(self, data, token):
params = json.loads(data)
header,chart_data = operator.itemgetter('header','chart_data')(params)
chart_data = json.loads(chart_data)
chart_data['labels'].insert(0,'Measure')
columns_headers = chart_data['labels']
import_data = []
for dataset in chart_data['datasets']:
dataset['data'].insert(0, dataset['label'])
import_data.append(dataset['data'])
return request.make_response(self.from_data(columns_headers, import_data),
headers=[('Content-Disposition',
content_disposition(self.filename(header))),
('Content-Type', self.content_type)],
cookies={'fileToken': token})
class KsChartExcelExport(KsChartExport, http.Controller):
# Excel needs raw data to correctly handle numbers and date values
raw_data = True
@http.route('/ks_dashboard_ninja/export/chart_xls', type='http', auth="user")
@serialize_exception
def index(self, data, token):
return self.base(data, token)
@property
def content_type(self):
return 'application/vnd.ms-excel'
def filename(self, base):
return base + '.xls'
def from_data(self, fields, rows):
with ExportXlsxWriter(fields, len(rows)) as xlsx_writer:
for row_index, row in enumerate(rows):
for cell_index, cell_value in enumerate(row):
xlsx_writer.write_cell(row_index + 1, cell_index, cell_value)
return xlsx_writer.value
class KsChartCsvExport(KsChartExport, http.Controller):
@http.route('/ks_dashboard_ninja/export/chart_csv', type='http', auth="user")
@serialize_exception
def index(self, data, token):
return self.base(data, token)
@property
def content_type(self):
return 'text/csv;charset=utf8'
def filename(self, base):
return base + '.csv'
def from_data(self, fields, rows):
fp = io.BytesIO()
writer = pycompat.csv_writer(fp, quoting=1)
writer.writerow(fields)
for data in rows:
row = []
for d in data:
# Spreadsheet apps tend to detect formulas on leading =, + and -
if isinstance(d, str) and d.startswith(('=', '-', '+')):
d = "'" + d
row.append(pycompat.to_text(d))
writer.writerow(row)
return fp.getvalue()

View File

@@ -0,0 +1,66 @@
import io
import json
import operator
from odoo.addons.web.controllers.main import ExportFormat,serialize_exception
from odoo import http
from odoo.http import request
from odoo.http import content_disposition,request
class KsDashboardExport(ExportFormat, http.Controller):
def base(self, data, token):
params = json.loads(data)
header, dashboard_data = operator.itemgetter('header', 'dashboard_data')(params)
return request.make_response(self.from_data(dashboard_data),
headers=[('Content-Disposition',
content_disposition(self.filename(header))),
('Content-Type', self.content_type)],
cookies={'fileToken': token})
class KsDashboardJsonExport(KsDashboardExport, http.Controller):
@http.route('/ks_dashboard_ninja/export/dashboard_json', type='http', auth="user")
@serialize_exception
def index(self, data, token):
return self.base(data, token)
@property
def content_type(self):
return 'text/csv;charset=utf8'
def filename(self, base):
return base + '.json'
def from_data(self, dashboard_data):
fp = io.StringIO()
fp.write(json.dumps(dashboard_data))
return fp.getvalue()
class KsItemJsonExport(KsDashboardExport, http.Controller):
@http.route('/ks_dashboard_ninja/export/item_json', type='http', auth="user")
@serialize_exception
def index(self, data, token):
data = json.loads(data)
item_id = data["item_id"]
data['dashboard_data'] = request.env['ks_dashboard_ninja.board'].ks_export_item(item_id)
data = json.dumps(data)
return self.base(data, token)
@property
def content_type(self):
return 'text/csv;charset=utf8'
def filename(self, base):
return base + '.json'
def from_data(self, dashboard_data):
fp = io.StringIO()
fp.write(json.dumps(dashboard_data))
return fp.getvalue()

View File

@@ -0,0 +1,94 @@
import re
import datetime
import io
import json
import operator
from odoo.addons.web.controllers.main import ExportFormat,serialize_exception, ExportXlsxWriter
from odoo.tools.translate import _
from odoo import http
from odoo.http import content_disposition, request
from odoo.tools.misc import xlwt
from odoo.exceptions import UserError
from odoo.tools import pycompat
class KsListExport(ExportFormat, http.Controller):
def base(self, data, token):
params = json.loads(data)
header,list_data = operator.itemgetter('header','chart_data')(params)
list_data = json.loads(list_data)
# chart_data['labels'].insert(0,'Measure')
columns_headers = list_data['label']
import_data = []
for dataset in list_data['data_rows']:
# dataset['data'].insert(0, dataset['label'])
import_data.append(dataset['data'])
return request.make_response(self.from_data(columns_headers, import_data),
headers=[('Content-Disposition',
content_disposition(self.filename(header))),
('Content-Type', self.content_type)],
cookies={'fileToken': token})
class KsListExcelExport(KsListExport, http.Controller):
# Excel needs raw data to correctly handle numbers and date values
raw_data = True
@http.route('/ks_dashboard_ninja/export/list_xls', type='http', auth="user")
@serialize_exception
def index(self, data, token):
return self.base(data, token)
@property
def content_type(self):
return 'application/vnd.ms-excel'
def filename(self, base):
return base + '.xls'
def from_data(self, fields, rows):
with ExportXlsxWriter(fields, len(rows)) as xlsx_writer:
for row_index, row in enumerate(rows):
for cell_index, cell_value in enumerate(row):
xlsx_writer.write_cell(row_index + 1, cell_index, cell_value)
return xlsx_writer.value
class KsListCsvExport(KsListExport, http.Controller):
@http.route('/ks_dashboard_ninja/export/list_csv', type='http', auth="user")
@serialize_exception
def index(self, data, token):
return self.base(data, token)
@property
def content_type(self):
return 'text/csv;charset=utf8'
def filename(self, base):
return base + '.csv'
def from_data(self, fields, rows):
fp = io.BytesIO()
writer = pycompat.csv_writer(fp, quoting=1)
writer.writerow(fields)
for data in rows:
row = []
for d in data:
# Spreadsheet apps tend to detect formulas on leading =, + and -
if isinstance(d, str) and d.startswith(('=', '-', '+')):
d = "'" + d
row.append(pycompat.to_text(d))
writer.writerow(row)
return fp.getvalue()