[FIX] base, test_new_api: adapt generated default form view to Grid
When we changed the display of the form in v16, we forgot to adapt the python framework default form view layout (used when the form view of the model isn't defined). This provided a weird layout in these case on Odoo 16.+. To fix this bad behavior, we adapt the algorithm used to build the default view form. Steps to reproduce: Create a model without a form view and edit it (like we do when you follow the rd training). closes odoo/odoo#133837 X-original-commit: 93e95274939abce5f3facde6c8cd29b922d15251 Signed-off-by: Pierre Paridans (app) <app@odoo.com> Signed-off-by: Romain Estievenart (res) <res@odoo.com>
This commit is contained in:
@@ -2282,18 +2282,38 @@ class Model(models.AbstractModel):
|
||||
:returns: a form view as an lxml document
|
||||
:rtype: etree._Element
|
||||
"""
|
||||
group = E.group(col="4")
|
||||
sheet = E.sheet(string=self._description)
|
||||
main_group = E.group()
|
||||
left_group = E.group()
|
||||
right_group = E.group()
|
||||
for fname, field in self._fields.items():
|
||||
if field.automatic:
|
||||
continue
|
||||
elif field.type in ('one2many', 'many2many', 'text', 'html'):
|
||||
group.append(E.newline())
|
||||
group.append(E.field(name=fname, colspan="4"))
|
||||
group.append(E.newline())
|
||||
# append to sheet left and right group if needed
|
||||
if len(left_group) > 0:
|
||||
main_group.append(left_group)
|
||||
left_group = E.group()
|
||||
if len(right_group) > 0:
|
||||
main_group.append(right_group)
|
||||
right_group = E.group()
|
||||
if len(main_group) > 0:
|
||||
sheet.append(main_group)
|
||||
main_group = E.group()
|
||||
# add an oneline group for field type 'one2many', 'many2many', 'text', 'html'
|
||||
sheet.append(E.group(E.field(name=fname)))
|
||||
else:
|
||||
group.append(E.field(name=fname))
|
||||
group.append(E.separator())
|
||||
return E.form(E.sheet(group, string=self._description))
|
||||
if len(left_group) > len(right_group):
|
||||
right_group.append(E.field(name=fname))
|
||||
else:
|
||||
left_group.append(E.field(name=fname))
|
||||
if len(left_group) > 0:
|
||||
main_group.append(left_group)
|
||||
if len(right_group) > 0:
|
||||
main_group.append(right_group)
|
||||
sheet.append(main_group)
|
||||
sheet.append(E.group(E.separator()))
|
||||
return E.form(sheet)
|
||||
|
||||
@api.model
|
||||
def _get_default_search_view(self):
|
||||
|
||||
@@ -15,4 +15,5 @@ from . import test_domain
|
||||
from . import test_schema
|
||||
from . import test_company_checks
|
||||
from . import test_unity_read
|
||||
from . import test_views
|
||||
from . import test_web_read_group
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo.tests import common
|
||||
from lxml import etree
|
||||
|
||||
|
||||
class TestDefaultView(common.TransactionCase):
|
||||
|
||||
def test_default_form_view(self):
|
||||
self.assertEqual(
|
||||
etree.tostring(self.env['test_new_api.message']._get_default_form_view()),
|
||||
b'<form><sheet string="Test New API Message"><group><group><field name="discussion"/></group></group><group><field name="body"/></group><group><group><field name="author"/><field name="display_name"/><field name="double_size"/><field name="author_partner"/><field name="label"/><field name="active"/></group><group><field name="name"/><field name="size"/><field name="discussion_name"/><field name="important"/><field name="priority"/><field name="attributes"/></group></group><group><separator/></group></sheet></form>'
|
||||
)
|
||||
self.assertEqual(
|
||||
etree.tostring(self.env['test_new_api.creativework.edition']._get_default_form_view()),
|
||||
b'<form><sheet string="Test New API Creative Work Edition"><group><group><field name="name"/><field name="res_model_id"/></group><group><field name="res_id"/><field name="res_model"/></group></group><group><separator/></group></sheet></form>'
|
||||
)
|
||||
self.assertEqual(
|
||||
etree.tostring(self.env['test_new_api.mixed']._get_default_form_view()),
|
||||
b'<form><sheet string="Test New API Mixed"><group><group><field name="number"/><field name="date"/><field name="now"/><field name="reference"/></group><group><field name="number2"/><field name="moment"/><field name="lang"/></group></group><group><field name="comment1"/></group><group><field name="comment2"/></group><group><field name="comment3"/></group><group><field name="comment4"/></group><group><field name="comment5"/></group><group><group><field name="currency_id"/></group><group><field name="amount"/></group></group><group><separator/></group></sheet></form>'
|
||||
)
|
||||
Reference in New Issue
Block a user