Skip to content

Commit 1db8d76

Browse files
committed
Merge PR OCA#839 into 16.0
Signed-off-by legalsylvain
2 parents ed29bd1 + 53593c9 commit 1db8d76

File tree

6 files changed

+55
-5
lines changed

6 files changed

+55
-5
lines changed

bi_sql_editor/__manifest__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
{
66
"name": "BI SQL Editor",
77
"summary": "BI Views builder, based on Materialized or Normal SQL Views",
8-
"version": "16.0.1.2.0",
8+
"version": "16.0.2.0.0",
99
"license": "AGPL-3",
1010
"category": "Reporting",
1111
"author": "GRAP,Odoo Community Association (OCA)",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop)
2+
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
3+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
4+
5+
from openupgradelib import openupgrade
6+
7+
8+
@openupgrade.migrate()
9+
def migrate(env, version):
10+
for view in env["bi.sql.view"].search([("state", "=", "ui_valid")]):
11+
# create new Form view
12+
view.form_view_id = env["ir.ui.view"].create(view._prepare_form_view()).id
13+
# Update tree view, to add sum / avg option
14+
view.tree_view_id.write(view._prepare_tree_view())

bi_sql_editor/models/bi_sql_view.py

+27-3
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ class BiSQLView(models.Model):
7878
readonly=False,
7979
states={"ui_valid": [("readonly", True)]},
8080
default="pivot,graph,tree",
81-
help="Comma-separated text. Possible values:" ' "graph", "pivot" or "tree"',
81+
help="Comma-separated text. Possible values:"
82+
' "graph", "pivot", "tree" or "form"',
8283
)
8384

8485
query = fields.Text(
@@ -126,6 +127,7 @@ class BiSQLView(models.Model):
126127
model_id = fields.Many2one(
127128
string="Odoo Model", comodel_name="ir.model", readonly=True
128129
)
130+
129131
# UI related fields
130132
# 1. Editable fields, which can be set by the user (optional) before
131133
# creating the UI elements
@@ -151,6 +153,11 @@ def _default_parent_menu_id(self):
151153
)
152154

153155
# 2. Readonly fields, non editable by the user
156+
157+
form_view_id = fields.Many2one(
158+
string="Odoo Form View", comodel_name="ir.ui.view", readonly=True
159+
)
160+
154161
tree_view_id = fields.Many2one(
155162
string="Odoo Tree View", comodel_name="ir.ui.view", readonly=True
156163
)
@@ -207,9 +214,9 @@ def _check_view_order(self):
207214
for rec in self:
208215
if rec.view_order:
209216
for vtype in rec.view_order.split(","):
210-
if vtype not in ("graph", "pivot", "tree"):
217+
if vtype not in ("graph", "pivot", "tree", "form"):
211218
raise UserError(
212-
_("Only graph, pivot or tree views are supported")
219+
_("Only graph, pivot, tree or form views are supported")
213220
)
214221

215222
# Compute Section
@@ -324,6 +331,7 @@ def button_create_sql_view_and_model(self):
324331

325332
def button_reset_to_model_valid(self):
326333
views = self.filtered(lambda x: x.state == "ui_valid")
334+
views.mapped("form_view_id").unlink()
327335
views.mapped("tree_view_id").unlink()
328336
views.mapped("graph_view_id").unlink()
329337
views.mapped("pivot_view_id").unlink()
@@ -351,6 +359,7 @@ def button_set_draft(self):
351359
return super().button_set_draft()
352360

353361
def button_create_ui(self):
362+
self.form_view_id = self.env["ir.ui.view"].create(self._prepare_form_view()).id
354363
self.tree_view_id = self.env["ir.ui.view"].create(self._prepare_tree_view()).id
355364
self.graph_view_id = (
356365
self.env["ir.ui.view"].create(self._prepare_graph_view()).id
@@ -442,6 +451,19 @@ def _prepare_rule(self):
442451
"global": True,
443452
}
444453

454+
def _prepare_form_view(self):
455+
self.ensure_one()
456+
return {
457+
"name": self.name,
458+
"type": "form",
459+
"model": self.model_id.model,
460+
"arch": """<?xml version="1.0"?>"""
461+
"""<form><sheet><group string="Data" col="4">{}"""
462+
"""</group></sheet></form>""".format(
463+
"".join([x._prepare_form_field() for x in self.bi_sql_view_field_ids])
464+
),
465+
}
466+
445467
def _prepare_tree_view(self):
446468
self.ensure_one()
447469
return {
@@ -507,6 +529,8 @@ def _prepare_action(self):
507529
self.ensure_one()
508530
view_mode = self.view_order
509531
first_view = view_mode.split(",")[0]
532+
if first_view == "form":
533+
view_id = self.form_view_id.id
510534
if first_view == "tree":
511535
view_id = self.tree_view_id.id
512536
elif first_view == "pivot":

bi_sql_editor/models/bi_sql_view_field.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,10 @@ def _prepare_model_field(self):
249249
or False,
250250
}
251251

252+
def _prepare_form_field(self):
253+
self.ensure_one()
254+
return f"""<field name="{self.name}" context="{self.field_context}"/>\n"""
255+
252256
def _prepare_tree_field(self):
253257
self.ensure_one()
254258
if self.tree_visibility == "unavailable":
@@ -261,8 +265,14 @@ def _prepare_tree_field(self):
261265
elif self.tree_visibility == "optional_show":
262266
visibility_text = 'optional="show"'
263267

268+
operator_text = ""
269+
if self.group_operator == "sum":
270+
operator_text = f'sum="{_("Total")}"'
271+
elif self.group_operator == "avg":
272+
operator_text = f'avg="{_("Average")}"'
273+
264274
return (
265-
f"""<field name="{self.name}" {visibility_text}"""
275+
f"""<field name="{self.name}" {visibility_text} {operator_text}"""
266276
f""" context="{self.field_context}"/>\n"""
267277
)
268278

bi_sql_editor/static/description/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
12
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
23
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
34
<head>

bi_sql_editor/views/view_bi_sql_view.xml

+1
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
200200
<field name="parent_menu_id" />
201201
</group>
202202
<group string="UI Instances">
203+
<field name="form_view_id" />
203204
<field name="tree_view_id" />
204205
<field name="graph_view_id" />
205206
<field name="pivot_view_id" />

0 commit comments

Comments
 (0)