bi_sql_editor: add support for group operators

this commit allows specifying the group operator for each field. This functionality was originally included in a seperate module "bi_sql_editor_aggregate" in version 12.
This commit is contained in:
David James
2021-06-07 16:07:38 +10:00
parent ebd77c9399
commit 53dc46e058
6 changed files with 66 additions and 1 deletions

View File

@@ -9,7 +9,7 @@ from psycopg2 import ProgrammingError
from odoo import SUPERUSER_ID, _, api, fields, models
from odoo.exceptions import UserError
from odoo.tools import pycompat, sql
from odoo.tools import pycompat, sql, table_columns
from odoo.tools.safe_eval import safe_eval
from odoo.addons.base.models.ir_model import IrModel
@@ -726,6 +726,40 @@ class BiSQLView(models.Model):
self._log_execute(req)
sql_view.size = self.env.cr.fetchone()[0]
def check_manual_fields(self, model):
# check the fields we need are defined on self, to stop it going
# early on install / startup - particularly problematic during upgrade
if "group_operator" in table_columns(
self.env.cr, "bi_sql_view_field"
) and model._name.startswith(self._model_prefix):
# Use SQL instead of ORM, as ORM might not be fully initialised -
# we have no control over the order that fields are defined!
# We are not concerned about user security rules.
self.env.cr.execute(
"""
SELECT
f.name,
f.ttype,
f.group_operator
FROM
bi_sql_view v
LEFT JOIN bi_sql_view_field f ON f.bi_sql_view_id = v.id
WHERE
v.model_name = %s
;
""",
(model._name,),
)
sql_fields = self.env.cr.fetchall()
for sql_field in sql_fields:
if (
sql_field[0] in model._fields
and sql_field[1] in ("integer", "float")
and sql_field[2]
):
model._fields[sql_field[0]].group_operator = sql_field[2]
def button_preview_sql_expression(self):
self.button_validate_sql_expression()
res = self._execute_sql_request()