mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user