@@ -78,7 +78,8 @@ class BiSQLView(models.Model):
78
78
readonly = False ,
79
79
states = {"ui_valid" : [("readonly" , True )]},
80
80
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"' ,
82
83
)
83
84
84
85
query = fields .Text (
@@ -127,6 +128,10 @@ class BiSQLView(models.Model):
127
128
string = "Odoo Model" , comodel_name = "ir.model" , readonly = True
128
129
)
129
130
131
+ form_view_id = fields .Many2one (
132
+ string = "Odoo Form View" , comodel_name = "ir.ui.view" , readonly = True
133
+ )
134
+
130
135
tree_view_id = fields .Many2one (
131
136
string = "Odoo Tree View" , comodel_name = "ir.ui.view" , readonly = True
132
137
)
@@ -183,7 +188,7 @@ def _check_view_order(self):
183
188
for rec in self :
184
189
if rec .view_order :
185
190
for vtype in rec .view_order .split ("," ):
186
- if vtype not in ("graph" , "pivot" , "tree" ):
191
+ if vtype not in ("graph" , "pivot" , "tree" , "form" ):
187
192
raise UserError (
188
193
_ ("Only graph, pivot or tree views are supported" )
189
194
)
@@ -300,6 +305,7 @@ def button_create_sql_view_and_model(self):
300
305
301
306
def button_reset_to_model_valid (self ):
302
307
views = self .filtered (lambda x : x .state == "ui_valid" )
308
+ views .mapped ("form_view_id" ).unlink ()
303
309
views .mapped ("tree_view_id" ).unlink ()
304
310
views .mapped ("graph_view_id" ).unlink ()
305
311
views .mapped ("pivot_view_id" ).unlink ()
@@ -327,6 +333,7 @@ def button_set_draft(self):
327
333
return super ().button_set_draft ()
328
334
329
335
def button_create_ui (self ):
336
+ self .form_view_id = self .env ["ir.ui.view" ].create (self ._prepare_form_view ()).id
330
337
self .tree_view_id = self .env ["ir.ui.view" ].create (self ._prepare_tree_view ()).id
331
338
self .graph_view_id = (
332
339
self .env ["ir.ui.view" ].create (self ._prepare_graph_view ()).id
@@ -418,6 +425,19 @@ def _prepare_rule(self):
418
425
"global" : True ,
419
426
}
420
427
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
+
421
441
def _prepare_tree_view (self ):
422
442
self .ensure_one ()
423
443
return {
@@ -483,6 +503,8 @@ def _prepare_action(self):
483
503
self .ensure_one ()
484
504
view_mode = self .view_order
485
505
first_view = view_mode .split ("," )[0 ]
506
+ if first_view == "form" :
507
+ view_id = self .form_view_id .id
486
508
if first_view == "tree" :
487
509
view_id = self .tree_view_id .id
488
510
elif first_view == "pivot" :
0 commit comments