From c18c7dd92745017d0768c3b6085af2dea8152e81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 24 Feb 2024 00:13:24 +0100 Subject: [PATCH] Add model Many2One on ir.ui.view --- modules/dashboard/ir.xml | 4 ++-- trytond/trytond/ir/action.py | 2 +- trytond/trytond/ir/ui/view.py | 13 ++++++++++--- trytond/trytond/ir/view/ui_view_form.xml | 4 ++-- trytond/trytond/ir/view/ui_view_list.xml | 2 +- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/modules/dashboard/ir.xml b/modules/dashboard/ir.xml index e8f03c1829..7bc6c5eeb3 100644 --- a/modules/dashboard/ir.xml +++ b/modules/dashboard/ir.xml @@ -5,13 +5,13 @@ this repository contains the full copyright notices and license terms. --> - + board dashboard Dashboard - + ir.action.act_window diff --git a/trytond/trytond/ir/action.py b/trytond/trytond/ir/action.py index de947d60b9..9d103c05e0 100644 --- a/trytond/trytond/ir/action.py +++ b/trytond/trytond/ir/action.py @@ -939,7 +939,7 @@ class ActionActWindowView( view = fields.Many2One( 'ir.ui.view', "View", required=True, ondelete='CASCADE', domain=[ - ('model', '=', Eval('model')), + ('model', '=', Eval('model', None)), ]) act_window = fields.Many2One('ir.action.act_window', 'Action', ondelete='CASCADE') diff --git a/trytond/trytond/ir/ui/view.py b/trytond/trytond/ir/ui/view.py index eaeba0070f..53317a33af 100644 --- a/trytond/trytond/ir/ui/view.py +++ b/trytond/trytond/ir/ui/view.py @@ -23,10 +23,13 @@ class XMLError(ValidationError): pass -class View(ModelSQL, ModelView): +class View( + fields.fmany2one( + 'model_ref', 'model', 'ir.model,model', "Model", + ondelete='CASCADE'), + ModelSQL, ModelView): "View" __name__ = 'ir.ui.view' - _rec_name = 'model' model = fields.Char('Model', states={ 'required': Eval('type') != 'board', }) @@ -102,9 +105,13 @@ class View(ModelSQL, ModelView): def get_rec_name(self, name): return '%s (%s)' % ( - self.model, + self.model_ref.rec_name, self.inherit.rec_name if self.inherit else self.type_string) + @classmethod + def search_rec_name(cls, name, clause): + return [('model_ref.rec_name', *clause[1:])] + @classmethod @ModelView.button_action('ir.act_view_show') def show(cls, views): diff --git a/trytond/trytond/ir/view/ui_view_form.xml b/trytond/trytond/ir/view/ui_view_form.xml index cc75e1a596..3a4dce9b1e 100644 --- a/trytond/trytond/ir/view/ui_view_form.xml +++ b/trytond/trytond/ir/view/ui_view_form.xml @@ -2,8 +2,8 @@
-