diff --git a/bi_sql_editor/models/bi_sql_view.py b/bi_sql_editor/models/bi_sql_view.py
index 60374b722..f87187216 100644
--- a/bi_sql_editor/models/bi_sql_view.py
+++ b/bi_sql_editor/models/bi_sql_view.py
@@ -8,7 +8,7 @@ from psycopg2 import ProgrammingError
from odoo import _, api, fields, models, SUPERUSER_ID
from odoo.exceptions import UserError
-from odoo.tools import pycompat, sql
+from odoo.tools import pycompat, safe_eval, sql
from odoo.addons.base.models.ir_model import IrModel
_logger = logging.getLogger(__name__)
@@ -120,6 +120,10 @@ class BiSQLView(models.Model):
'sql_valid': [('readonly', False)],
})
+ computed_action_context = fields.Text(
+ compute="_compute_computed_action_context",
+ string="Computed Action Context")
+
action_context = fields.Text(
string="Action Context", default="{}", readonly=True,
help="Define here a context that will be used"
@@ -127,6 +131,7 @@ class BiSQLView(models.Model):
states={
'draft': [('readonly', False)],
'sql_valid': [('readonly', False)],
+ 'model_valid': [('readonly', False)],
})
has_group_changed = fields.Boolean(copy=False)
@@ -192,6 +197,29 @@ class BiSQLView(models.Model):
'Only graph, pivot or tree views are supported'))
# Compute Section
+ @api.depends("bi_sql_view_field_ids.graph_type")
+ @api.multi
+ def _compute_computed_action_context(self):
+ for rec in self:
+ action = {
+ "pivot_measures": [],
+ "pivot_row_groupby": [],
+ "pivot_column_groupby": [],
+ }
+ for field in rec.bi_sql_view_field_ids.filtered(
+ lambda x: x.graph_type == "measure"):
+ action["pivot_measures"].append(field.name)
+
+ for field in rec.bi_sql_view_field_ids.filtered(
+ lambda x: x.graph_type == "row"):
+ action["pivot_row_groupby"].append(field.name)
+
+ for field in rec.bi_sql_view_field_ids.filtered(
+ lambda x: x.graph_type == "col"):
+ action["pivot_column_groupby"].append(field.name)
+
+ rec.computed_action_context = str(action)
+
@api.depends('is_materialized')
@api.multi
def _compute_materialized_text(self):
@@ -453,6 +481,9 @@ class BiSQLView(models.Model):
view_id = self.pivot_view_id.id
else:
view_id = self.graph_view_id.id
+ action = safe_eval(self.computed_action_context)
+ for k, v in safe_eval(self.action_context).items():
+ action[k] = v
return {
'name': self._prepare_action_name(),
'res_model': self.model_id.model,
@@ -460,7 +491,7 @@ class BiSQLView(models.Model):
'view_mode': view_mode,
'view_id': view_id,
'search_view_id': self.search_view_id.id,
- 'context': self.action_context,
+ 'context': str(action),
}
@api.multi
diff --git a/bi_sql_editor/models/bi_sql_view_field.py b/bi_sql_editor/models/bi_sql_view_field.py
index 183678427..c8c943008 100644
--- a/bi_sql_editor/models/bi_sql_view_field.py
+++ b/bi_sql_editor/models/bi_sql_view_field.py
@@ -118,7 +118,7 @@ class BiSQLViewField(models.Model):
sql_field.bi_sql_view_id.view_name, sql_field.name)
# Overload Section
- @api.multi
+ @api.model
def create(self, vals):
field_without_prefix = vals['name'][2:]
# guess field description
@@ -201,7 +201,7 @@ class BiSQLViewField(models.Model):
self.ensure_one()
res = ''
if self.graph_type and self.field_description:
- res = """""".format(
+ res = """\n""".format(
self.name, self.graph_type)
return res
@@ -209,9 +209,11 @@ class BiSQLViewField(models.Model):
def _prepare_pivot_field(self):
self.ensure_one()
res = ''
- if self.graph_type and self.field_description:
- res = """""".format(
- self.name, self.graph_type)
+ if self.field_description:
+ graph_type_text =\
+ self.graph_type and "type=\"%s\"" % (self.graph_type) or ""
+ res = """\n""".format(
+ self.name, graph_type_text)
return res
@api.multi
@@ -219,7 +221,7 @@ class BiSQLViewField(models.Model):
self.ensure_one()
res = ''
if self.field_description:
- res = """""".format(self.name)
+ res = """\n""".format(self.name)
return res
@api.multi
@@ -227,10 +229,8 @@ class BiSQLViewField(models.Model):
self.ensure_one()
res = ''
if self.field_description and self.is_group_by:
- res = \
- """""" % (
- self.field_description.lower().replace(' ', '_'),
- self.field_description, self.name
+ res = """\n""" % (
+ self.name, self.field_description, self.name
)
return res
diff --git a/bi_sql_editor/views/view_bi_sql_view.xml b/bi_sql_editor/views/view_bi_sql_view.xml
index a94000ea4..91013803d 100644
--- a/bi_sql_editor/views/view_bi_sql_view.xml
+++ b/bi_sql_editor/views/view_bi_sql_view.xml
@@ -107,7 +107,10 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-
+
+
+
+