Skip to content

Commit 99e67ed

Browse files
committed
[IMP] bi_sql_editor: allow to generate form view. So It is possible to see data detail, when clicking on an item in a tree view
1 parent 69488d0 commit 99e67ed

File tree

6 files changed

+42
-3
lines changed

6 files changed

+42
-3
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.1.1",
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,11 @@
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+
view.form_view_id = env["ir.ui.view"].create(view._prepare_form_view()).id

bi_sql_editor/models/bi_sql_view.py

+24-2
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(
@@ -127,6 +128,10 @@ class BiSQLView(models.Model):
127128
string="Odoo Model", comodel_name="ir.model", readonly=True
128129
)
129130

131+
form_view_id = fields.Many2one(
132+
string="Odoo Form View", comodel_name="ir.ui.view", readonly=True
133+
)
134+
130135
tree_view_id = fields.Many2one(
131136
string="Odoo Tree View", comodel_name="ir.ui.view", readonly=True
132137
)
@@ -183,7 +188,7 @@ def _check_view_order(self):
183188
for rec in self:
184189
if rec.view_order:
185190
for vtype in rec.view_order.split(","):
186-
if vtype not in ("graph", "pivot", "tree"):
191+
if vtype not in ("graph", "pivot", "tree", "form"):
187192
raise UserError(
188193
_("Only graph, pivot or tree views are supported")
189194
)
@@ -300,6 +305,7 @@ def button_create_sql_view_and_model(self):
300305

301306
def button_reset_to_model_valid(self):
302307
views = self.filtered(lambda x: x.state == "ui_valid")
308+
views.mapped("form_view_id").unlink()
303309
views.mapped("tree_view_id").unlink()
304310
views.mapped("graph_view_id").unlink()
305311
views.mapped("pivot_view_id").unlink()
@@ -327,6 +333,7 @@ def button_set_draft(self):
327333
return super().button_set_draft()
328334

329335
def button_create_ui(self):
336+
self.form_view_id = self.env["ir.ui.view"].create(self._prepare_form_view()).id
330337
self.tree_view_id = self.env["ir.ui.view"].create(self._prepare_tree_view()).id
331338
self.graph_view_id = (
332339
self.env["ir.ui.view"].create(self._prepare_graph_view()).id
@@ -418,6 +425,19 @@ def _prepare_rule(self):
418425
"global": True,
419426
}
420427

428+
def _prepare_form_view(self):
429+
self.ensure_one()
430+
return {
431+
"name": self.name,
432+
"type": "form",
433+
"model": self.model_id.model,
434+
"arch": """<?xml version="1.0"?>"""
435+
"""<form><sheet><group string="Data" col="4">{}"""
436+
"""</group></sheet></form>""".format(
437+
"".join([x._prepare_form_field() for x in self.bi_sql_view_field_ids])
438+
),
439+
}
440+
421441
def _prepare_tree_view(self):
422442
self.ensure_one()
423443
return {
@@ -483,6 +503,8 @@ def _prepare_action(self):
483503
self.ensure_one()
484504
view_mode = self.view_order
485505
first_view = view_mode.split(",")[0]
506+
if first_view == "form":
507+
view_id = self.form_view_id.id
486508
if first_view == "tree":
487509
view_id = self.tree_view_id.id
488510
elif first_view == "pivot":

bi_sql_editor/models/bi_sql_view_field.py

+4
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":

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
@@ -196,6 +196,7 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
196196
/>
197197
</group>
198198
<group string="User Interface">
199+
<field name="form_view_id" />
199200
<field name="tree_view_id" />
200201
<field name="graph_view_id" />
201202
<field name="pivot_view_id" />

0 commit comments

Comments
 (0)