|
|
@ -0,0 +1,38 @@ |
|
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|
|
|
|
|
|
|
from odoo import models, tools |
|
|
|
|
|
|
|
|
|
|
|
class BiSQLView(models.Model): |
|
|
|
_inherit = 'bi.sql.view' |
|
|
|
|
|
|
|
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 tools.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] |