From f0ef8ac446115c0cb40a07a3792095c76d45c8e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 4 Jul 2014 14:36:21 +0200 Subject: [PATCH] [FIX] web_kanban_sparkline, sales_team, stock: use char function field to transmit sparkline data; the data is now correctly dumped into json, and parsed in the widget. --- addons/crm/sales_team.py | 7 +++++-- addons/sale/sales_team.py | 7 ++++--- addons/stock/stock.py | 4 ++-- addons/web_kanban_gauge/static/src/js/kanban_gauge.js | 3 +++ .../web_kanban_sparkline/static/src/js/kanban_sparkline.js | 5 +++-- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/addons/crm/sales_team.py b/addons/crm/sales_team.py index 8a1e9f938af..cd75417816d 100644 --- a/addons/crm/sales_team.py +++ b/addons/crm/sales_team.py @@ -1,6 +1,9 @@ +# -*- coding: utf-8 -*- + import calendar from datetime import date from dateutil import relativedelta +import json from openerp import tools from openerp.osv import fields, osv @@ -30,8 +33,8 @@ class crm_case_section(osv.Model): res[id] = dict() lead_domain = lead_pre_domain + [('section_id', '=', id)] opp_domain = opp_pre_domain + [('section_id', '=', id)] - res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context) - res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'date_deadline'], 'planned_revenue', 'date_deadline', context=context) + res[id]['monthly_open_leads'] = json.dumps(self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context)) + res[id]['monthly_planned_revenue'] = json.dumps(self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'date_deadline'], 'planned_revenue', 'date_deadline', context=context)) return res _columns = { diff --git a/addons/sale/sales_team.py b/addons/sale/sales_team.py index 372fc0fba19..3d831ef54c5 100644 --- a/addons/sale/sales_team.py +++ b/addons/sale/sales_team.py @@ -3,6 +3,7 @@ import calendar from datetime import date from dateutil import relativedelta +import json from openerp import tools from openerp.osv import fields, osv @@ -20,9 +21,9 @@ class crm_case_section(osv.osv): for id in ids: res[id] = dict() created_domain = [('section_id', '=', id), ('state', '=', 'draft'), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)] - res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context) + res[id]['monthly_quoted'] = json.dumps(self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context)) validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent', 'cancel']), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)] - res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context) + res[id]['monthly_confirmed'] = json.dumps(self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context)) return res def _get_invoices_data(self, cr, uid, ids, field_name, arg, context=None): @@ -33,7 +34,7 @@ class crm_case_section(osv.osv): date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1]).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) for id in ids: created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', date_begin), ('date', '<=', date_end)] - res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date'], 'price_total', 'date', context=context) + res[id] = json.dumps(self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date'], 'price_total', 'date', context=context)) return res _columns = { diff --git a/addons/stock/stock.py b/addons/stock/stock.py index acb228b6232..0aaa1362290 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -21,7 +21,7 @@ from datetime import date, datetime from dateutil import relativedelta - +import json import time from openerp.osv import fields, osv @@ -4100,7 +4100,7 @@ class stock_picking_type(osv.osv): tristates.insert(0, {'tooltip': picking.name or '' + _(': Backorder exists'), 'value': 0}) else: tristates.insert(0, {'tooltip': picking.name or '' + _(': OK'), 'value': 1}) - res[picking_type_id] = tristates + res[picking_type_id] = json.dumps(tristates) return res def _get_picking_count(self, cr, uid, ids, field_names, arg, context=None): diff --git a/addons/web_kanban_gauge/static/src/js/kanban_gauge.js b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js index fdae9534764..29a77723696 100644 --- a/addons/web_kanban_gauge/static/src/js/kanban_gauge.js +++ b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js @@ -38,6 +38,9 @@ instance.web_kanban.GaugeWidget = instance.web_kanban.AbstractField.extend({ var title = this.$node.html() || this.field.string; // current gauge value var val = this.field.value; + if (_.isArray(JSON.parse(val))) { + val = JSON.parse(val); + } var value = _.isArray(val) && val.length ? val[val.length-1]['value'] : val; // displayed value under gauge var gauge_value = value; diff --git a/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js b/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js index dd2f9ca75d5..b8c7761d103 100644 --- a/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js +++ b/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js @@ -11,8 +11,9 @@ instance.web_kanban.SparklineBarWidget = instance.web_kanban.AbstractField.exten var self = this; var title = this.$node.html() || this.field.string; setTimeout(function () { - var value = _.pluck(self.field.value, 'value'); - var tooltips = _.pluck(self.field.value, 'tooltip'); + var field_value = JSON.parse(self.field.value); + var value = _.pluck(field_value, 'value'); + var tooltips = _.pluck(field_value, 'tooltip'); var suffix = self.options.tooltip_suffix || ""; var tooltipFormat = self.options.type == 'tristate' && '{{offset:offset}}' + suffix || '{{offset:offset}} {{value:value}}' + suffix var sparkline_options = _.extend({