mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
[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
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
{
|
||||
"name": "BI SQL Editor",
|
||||
"summary": "BI Views builder, based on Materialized or Normal SQL Views",
|
||||
"version": "16.0.1.2.0",
|
||||
"version": "16.0.2.0.0",
|
||||
"license": "AGPL-3",
|
||||
"category": "Reporting",
|
||||
"author": "GRAP,Odoo Community Association (OCA)",
|
||||
|
||||
11
bi_sql_editor/migrations/16.0.2.0.0/post-migration.py
Normal file
11
bi_sql_editor/migrations/16.0.2.0.0/post-migration.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop)
|
||||
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from openupgradelib import openupgrade
|
||||
|
||||
|
||||
@openupgrade.migrate()
|
||||
def migrate(env, version):
|
||||
for view in env["bi.sql.view"].search([("state", "=", "ui_valid")]):
|
||||
view.form_view_id = env["ir.ui.view"].create(view._prepare_form_view()).id
|
||||
@@ -78,7 +78,8 @@ class BiSQLView(models.Model):
|
||||
readonly=False,
|
||||
states={"ui_valid": [("readonly", True)]},
|
||||
default="pivot,graph,tree",
|
||||
help="Comma-separated text. Possible values:" ' "graph", "pivot" or "tree"',
|
||||
help="Comma-separated text. Possible values:"
|
||||
' "graph", "pivot", "tree" or "form"',
|
||||
)
|
||||
|
||||
query = fields.Text(
|
||||
@@ -126,6 +127,7 @@ class BiSQLView(models.Model):
|
||||
model_id = fields.Many2one(
|
||||
string="Odoo Model", comodel_name="ir.model", readonly=True
|
||||
)
|
||||
|
||||
# UI related fields
|
||||
# 1. Editable fields, which can be set by the user (optional) before
|
||||
# creating the UI elements
|
||||
@@ -151,6 +153,11 @@ class BiSQLView(models.Model):
|
||||
)
|
||||
|
||||
# 2. Readonly fields, non editable by the user
|
||||
|
||||
form_view_id = fields.Many2one(
|
||||
string="Odoo Form View", comodel_name="ir.ui.view", readonly=True
|
||||
)
|
||||
|
||||
tree_view_id = fields.Many2one(
|
||||
string="Odoo Tree View", comodel_name="ir.ui.view", readonly=True
|
||||
)
|
||||
@@ -207,9 +214,9 @@ class BiSQLView(models.Model):
|
||||
for rec in self:
|
||||
if rec.view_order:
|
||||
for vtype in rec.view_order.split(","):
|
||||
if vtype not in ("graph", "pivot", "tree"):
|
||||
if vtype not in ("graph", "pivot", "tree", "form"):
|
||||
raise UserError(
|
||||
_("Only graph, pivot or tree views are supported")
|
||||
_("Only graph, pivot, tree or form views are supported")
|
||||
)
|
||||
|
||||
# Compute Section
|
||||
@@ -324,6 +331,7 @@ class BiSQLView(models.Model):
|
||||
|
||||
def button_reset_to_model_valid(self):
|
||||
views = self.filtered(lambda x: x.state == "ui_valid")
|
||||
views.mapped("form_view_id").unlink()
|
||||
views.mapped("tree_view_id").unlink()
|
||||
views.mapped("graph_view_id").unlink()
|
||||
views.mapped("pivot_view_id").unlink()
|
||||
@@ -351,6 +359,7 @@ class BiSQLView(models.Model):
|
||||
return super().button_set_draft()
|
||||
|
||||
def button_create_ui(self):
|
||||
self.form_view_id = self.env["ir.ui.view"].create(self._prepare_form_view()).id
|
||||
self.tree_view_id = self.env["ir.ui.view"].create(self._prepare_tree_view()).id
|
||||
self.graph_view_id = (
|
||||
self.env["ir.ui.view"].create(self._prepare_graph_view()).id
|
||||
@@ -442,6 +451,19 @@ class BiSQLView(models.Model):
|
||||
"global": True,
|
||||
}
|
||||
|
||||
def _prepare_form_view(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
"name": self.name,
|
||||
"type": "form",
|
||||
"model": self.model_id.model,
|
||||
"arch": """<?xml version="1.0"?>"""
|
||||
"""<form><sheet><group string="Data" col="4">{}"""
|
||||
"""</group></sheet></form>""".format(
|
||||
"".join([x._prepare_form_field() for x in self.bi_sql_view_field_ids])
|
||||
),
|
||||
}
|
||||
|
||||
def _prepare_tree_view(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
@@ -507,6 +529,8 @@ class BiSQLView(models.Model):
|
||||
self.ensure_one()
|
||||
view_mode = self.view_order
|
||||
first_view = view_mode.split(",")[0]
|
||||
if first_view == "form":
|
||||
view_id = self.form_view_id.id
|
||||
if first_view == "tree":
|
||||
view_id = self.tree_view_id.id
|
||||
elif first_view == "pivot":
|
||||
|
||||
@@ -249,6 +249,10 @@ class BiSQLViewField(models.Model):
|
||||
or False,
|
||||
}
|
||||
|
||||
def _prepare_form_field(self):
|
||||
self.ensure_one()
|
||||
return f"""<field name="{self.name}" context="{self.field_context}"/>\n"""
|
||||
|
||||
def _prepare_tree_field(self):
|
||||
self.ensure_one()
|
||||
if self.tree_visibility == "unavailable":
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
|
||||
@@ -200,6 +200,7 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
<field name="parent_menu_id" />
|
||||
</group>
|
||||
<group string="UI Instances">
|
||||
<field name="form_view_id" />
|
||||
<field name="tree_view_id" />
|
||||
<field name="graph_view_id" />
|
||||
<field name="pivot_view_id" />
|
||||
|
||||
Reference in New Issue
Block a user