diff options
| author | Xavier Morel <xmo@odoo.com> | 2020-07-20 07:22:33 +0000 |
|---|---|---|
| committer | Xavier Morel <xmo@odoo.com> | 2020-07-28 13:03:13 +0000 |
| commit | c8063af7a085eda61e470fa5c861e94388429644 (patch) | |
| tree | 4138a64b383e2ee9cc50d5275d85e4fb03c2c568 | |
| parent | 6835aeb0de6895f7f4d6b23e0b4654465ef21d6a (diff) | |
[IMP] core, account, lunch: make <menuitem> recursive
For clarity, some data files are formatted as pseudo-tree
structure. This is somewhat confusing and dangerous when the structure
has no meaning... so add meaning:
* allow nesting menuitems, nested items are set as children to the
parent they're nested in
* update schema to allow an icon *or* a parent on regular menu items,
and neither on nested (they have an implicit parent meaning can't
have an icon)
* remove attributes which don't actually exist from the menuitem
schema
* also type sequence as an integer while at it
Convert two large-ish menuitem data files to recursive form.
closes odoo/odoo#54564
Related: odoo/enterprise#11887
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
| -rw-r--r-- | addons/account/views/account_menuitem.xml | 158 | ||||
| -rw-r--r-- | addons/lunch/views/lunch_views.xml | 44 | ||||
| -rw-r--r-- | addons/mrp/views/mrp_views_menus.xml | 20 | ||||
| -rw-r--r-- | odoo/addons/base/wizard/base_module_update_views.xml | 3 | ||||
| -rw-r--r-- | odoo/import_xml.rng | 49 | ||||
| -rw-r--r-- | odoo/tools/convert.py | 15 |
6 files changed, 155 insertions, 134 deletions
diff --git a/addons/account/views/account_menuitem.xml b/addons/account/views/account_menuitem.xml index 35f1c5ee5ef..2f6020b454f 100644 --- a/addons/account/views/account_menuitem.xml +++ b/addons/account/views/account_menuitem.xml @@ -1,79 +1,87 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> - <data> + <!-- Top menu item --> + <menuitem name="Invoicing" + id="menu_finance" + groups="account.group_account_readonly,account.group_account_invoice" + web_icon="account,static/description/icon.png" + sequence="40"> - <!-- Top menu item --> - <menuitem name="Invoicing" - id="menu_finance" - groups="account.group_account_readonly,account.group_account_invoice" - web_icon="account,static/description/icon.png" - sequence="40"/> - - <menuitem id="menu_board_journal_1" name="Overview" parent="menu_finance" action="open_account_journal_dashboard_kanban" groups="account.group_account_readonly" sequence="1"/> - <menuitem id="menu_finance_receivables" name="Customers" parent="menu_finance" sequence="2"/> - <menuitem id="menu_action_move_out_invoice_type" parent="account.menu_finance_receivables" action="action_move_out_invoice_type" sequence="1"/> - <menuitem id="menu_action_move_out_refund_type" parent="account.menu_finance_receivables" action="action_move_out_refund_type" sequence="2"/> - <menuitem id="menu_action_move_out_receipt_type" parent="account.menu_finance_receivables" action="action_move_out_receipt_type" groups="account.group_sale_receipts" sequence="3"/> - <menuitem id="menu_action_account_payments_receivable" parent="account.menu_finance_receivables" action="action_account_payments" sequence="15"/> - <menuitem id="product_product_menu_sellable" name="Products" parent="account.menu_finance_receivables" action="product_product_action_sellable" sequence="100"/> - <menuitem id="menu_account_customer" name="Customers" parent="account.menu_finance_receivables" action="res_partner_action_customer" sequence="110"/> - <menuitem id="menu_finance_payables" name="Vendors" parent="menu_finance" sequence="3"/> - <menuitem id="menu_action_move_in_invoice_type" parent="account.menu_finance_payables" action="action_move_in_invoice_type" sequence="1"/> - <menuitem id="menu_action_move_in_refund_type" parent="account.menu_finance_payables" action="action_move_in_refund_type" sequence="2"/> - <menuitem id="menu_action_move_in_receipt_type" parent="account.menu_finance_payables" action="action_move_in_receipt_type" groups="account.group_purchase_receipts" sequence="3"/> - <menuitem id="menu_action_account_payments_payable" parent="account.menu_finance_payables" action="action_account_payments_payable" sequence="20"/> - <menuitem id="product_product_menu_purchasable" name="Products" parent="account.menu_finance_payables" action="product_product_action_purchasable" sequence="100"/> - <menuitem id="menu_account_supplier" name="Vendors" parent="account.menu_finance_payables" action="account.res_partner_action_supplier" sequence="200"/> - <menuitem id="menu_finance_entries" name="Accounting" parent="menu_finance" sequence="4" groups="account.group_account_readonly"/> - <!-- Adviser sub-menus --> - <menuitem id="menu_finance_entries_accounting_miscellaneous" name="Miscellaneous" parent="account.menu_finance_entries" sequence="1"/> - <menuitem id="menu_action_account_moves_all" parent="account.menu_finance_entries_accounting_miscellaneous" action="action_account_moves_all" groups="base.group_no_one" sequence="10"/> - <menuitem id="menu_action_move_journal_line_form" parent="account.menu_finance_entries_accounting_miscellaneous" action="action_move_journal_line" groups="account.group_account_readonly" sequence="1"/> - <menuitem id="menu_finance_entries_accounting_journals" name="Journals" parent="account.menu_finance_entries" sequence="2"/> - <menuitem id="menu_action_account_moves_journal_sales" parent="account.menu_finance_entries_accounting_journals" action="action_account_moves_journal_sales" groups="account.group_account_readonly" sequence="1"/> - <menuitem id="menu_action_account_moves_journal_purchase" parent="account.menu_finance_entries_accounting_journals" action="action_account_moves_journal_purchase" groups="account.group_account_readonly" sequence="2"/> - <menuitem id="menu_action_account_moves_journal_bank_cash" parent="account.menu_finance_entries_accounting_journals" action="action_account_moves_journal_bank_cash" groups="account.group_account_readonly" sequence="3"/> - <menuitem id="menu_action_account_moves_journal_misc" parent="account.menu_finance_entries_accounting_journals" action="action_account_moves_journal_misc" groups="account.group_account_readonly" sequence="4"/> - <menuitem id="menu_finance_entries_accounting_ledgers" name="Ledgers" parent="account.menu_finance_entries" sequence="3"/> - <menuitem id="menu_action_account_moves_ledger_general" parent="account.menu_finance_entries_accounting_ledgers" action="action_account_moves_ledger_general" groups="account.group_account_readonly" sequence="1"/> - <menuitem id="menu_action_account_moves_ledger_partner" parent="account.menu_finance_entries_accounting_ledgers" action="action_account_moves_ledger_partner" groups="account.group_account_readonly" sequence="2"/> - <menuitem id="menu_finance_entries_management" name="Management" parent="menu_finance_entries" sequence="10" groups="account.group_account_invoice,account.group_account_readonly"/> - <menuitem id="menu_finance_entries_actions" name="Actions" parent="account.menu_finance_entries" sequence="11" groups="account.group_account_user"/> - <menuitem id="menu_action_tax_adjustment" parent="account.menu_finance_entries_actions" action="tax_adjustments_form" groups="base.group_no_one" sequence="45"/> - <menuitem id="menu_finance_entries_generate_entries" name="Generate Entries" parent="account.menu_finance_entries"/> - - <menuitem id="menu_finance_reports" name="Reporting" parent="menu_finance" sequence="20" groups="account.group_account_readonly,account.group_account_invoice"/> - <!-- Reporting sub-menus --> - <menuitem id="account_reports_management_menu" name="Management" parent="account.menu_finance_reports" sequence="4"/> - <menuitem id="menu_action_account_invoice_report_all" name="Invoice Analysis" parent="account.account_reports_management_menu" action="action_account_invoice_report_all" sequence="1"/> - <menuitem id="account_reports_legal_statements_menu" name="Generic Statements" parent="account.menu_finance_reports" sequence="1" groups="account.group_account_readonly"/> - - <menuitem id="menu_finance_configuration" name="Configuration" parent="menu_finance" sequence="35" groups="account.group_account_manager"/> - <!-- Configuration Sub-Menu --> - <menuitem id="menu_account_config" name="Settings" parent="menu_finance_configuration" action="action_account_config" groups="base.group_system" sequence="0"/> - <menuitem id="account_invoicing_menu" name="Invoicing" parent="account.menu_finance_configuration" groups="account.group_account_invoice,account.group_account_readonly" sequence="1"/> - <menuitem id="menu_action_payment_term_form" parent="account_invoicing_menu" action="action_payment_term_form" sequence="1"/> - <menuitem id="menu_action_incoterm_open" parent="account.account_invoicing_menu" action="action_incoterms_tree" groups="account.group_account_manager" sequence="3"/> - <menuitem id="account_banks_menu" name="Banks" parent="account.menu_finance_configuration" groups="account.group_account_manager" sequence="2"/> - <menuitem id="menu_action_account_bank_journal_form" parent="account_banks_menu" action="action_new_bank_setting" groups="account.group_account_manager" sequence="1"/> - <menuitem id="action_account_reconcile_model_menu" parent="account.account_banks_menu" action="account.action_account_reconcile_model" sequence="3" /> - <menuitem id="account_account_menu" name="Accounting" parent="account.menu_finance_configuration" groups="account.group_account_manager" sequence="3"/> - <menuitem id="menu_action_account_form" parent="account.account_account_menu" action="action_account_form" groups="account.group_account_readonly" sequence="1"/> - <menuitem id="menu_action_tax_form" parent="account_account_menu" action="action_tax_form" sequence="2"/> - <menuitem id="menu_action_account_journal_form" parent="account_account_menu" action="action_account_journal_form" groups="account.group_account_manager" sequence="3"/> - <menuitem id="menu_product_product_categories" action="product.product_category_action_form" parent="account.account_account_menu" sequence="3"/> - <menuitem id="account_report_folder" name="Reporting" parent="account_account_menu" groups="account.group_account_readonly" sequence="4"/> - <menuitem id="menu_action_currency_form" action="base.action_currency_form" name="Currencies" parent="account_account_menu" groups="base.group_multi_currency" sequence="4"/> - <menuitem id="menu_action_account_fiscal_position_form" parent="account_account_menu" action="action_account_fiscal_position_form" sequence="5"/> - <menuitem id="menu_action_account_journal_group_list" parent="account_account_menu" action="action_account_journal_group_list" groups="account.group_account_manager" sequence="7"/> - <menuitem id="root_payment_menu" name="Payments" parent="account.menu_finance_configuration" groups="account.group_account_manager" sequence="4"/> - <menuitem id="account_management_menu" name="Management" parent="account.menu_finance_configuration" groups="account.group_account_manager" sequence="5"/> - <menuitem id="menu_action_rounding_form_view" parent="account_management_menu" action="rounding_list_action" groups="account.group_cash_rounding" sequence="4"/> - <menuitem id="menu_configure_tax_report" name="Tax Report" parent="account.account_management_menu" action="account.action_configure_tax_report" groups="base.group_no_one" sequence="5"/> - <menuitem id="menu_action_analytic_lines_tree" name="Analytic Items" parent="account.menu_finance_entries_management" action="analytic.account_analytic_line_action_entries" groups="analytic.group_analytic_accounting" sequence="35"/> - <menuitem id="menu_analytic_accounting" name="Analytic Accounting" parent="menu_finance_configuration" groups="analytic.group_analytic_accounting,analytic.group_analytic_tags" sequence="6"/> - <menuitem id="account_analytic_def_account" parent="menu_analytic_accounting" action="analytic.action_account_analytic_account_form" groups="analytic.group_analytic_accounting" sequence="1"/> - <menuitem id="account_analytic_tag_menu" name="Analytic Tags" parent="menu_analytic_accounting" action="analytic.account_analytic_tag_action" groups="analytic.group_analytic_tags"/> - <menuitem id="account_analytic_group_menu" name="Analytic Account Groups" parent="menu_analytic_accounting" action="analytic.account_analytic_group_action" groups="analytic.group_analytic_accounting" sequence="2"/> - </data> + <menuitem id="menu_board_journal_1" name="Overview" action="open_account_journal_dashboard_kanban" groups="account.group_account_readonly" sequence="1"/> + <menuitem id="menu_finance_receivables" name="Customers" sequence="2"> + <menuitem id="menu_action_move_out_invoice_type" action="action_move_out_invoice_type" sequence="1"/> + <menuitem id="menu_action_move_out_refund_type" action="action_move_out_refund_type" sequence="2"/> + <menuitem id="menu_action_move_out_receipt_type" action="action_move_out_receipt_type" groups="account.group_sale_receipts" sequence="3"/> + <menuitem id="menu_action_account_payments_receivable" action="action_account_payments" sequence="15"/> + <menuitem id="product_product_menu_sellable" name="Products" action="product_product_action_sellable" sequence="100"/> + <menuitem id="menu_account_customer" name="Customers" action="res_partner_action_customer" sequence="110"/> + </menuitem> + <menuitem id="menu_finance_payables" name="Vendors" sequence="3"> + <menuitem id="menu_action_move_in_invoice_type" action="action_move_in_invoice_type" sequence="1"/> + <menuitem id="menu_action_move_in_refund_type" action="action_move_in_refund_type" sequence="2"/> + <menuitem id="menu_action_move_in_receipt_type" action="action_move_in_receipt_type" groups="account.group_purchase_receipts" sequence="3"/> + <menuitem id="menu_action_account_payments_payable" action="action_account_payments_payable" sequence="20"/> + <menuitem id="product_product_menu_purchasable" name="Products" action="product_product_action_purchasable" sequence="100"/> + <menuitem id="menu_account_supplier" name="Vendors" action="account.res_partner_action_supplier" sequence="200"/> + </menuitem> + <menuitem id="menu_finance_entries" name="Accounting" sequence="4" groups="account.group_account_readonly"> + <menuitem id="menu_finance_entries_accounting_miscellaneous" name="Miscellaneous" sequence="1"> + <menuitem id="menu_action_move_journal_line_form" action="action_move_journal_line" groups="account.group_account_readonly" sequence="1"/> + <menuitem id="menu_action_account_moves_all" action="action_account_moves_all" groups="base.group_no_one" sequence="10"/> + </menuitem> + <menuitem id="menu_finance_entries_accounting_journals" name="Journals" sequence="2"> + <menuitem id="menu_action_account_moves_journal_sales" action="action_account_moves_journal_sales" groups="account.group_account_readonly" sequence="1"/> + <menuitem id="menu_action_account_moves_journal_purchase" action="action_account_moves_journal_purchase" groups="account.group_account_readonly" sequence="2"/> + <menuitem id="menu_action_account_moves_journal_bank_cash" action="action_account_moves_journal_bank_cash" groups="account.group_account_readonly" sequence="3"/> + <menuitem id="menu_action_account_moves_journal_misc" action="action_account_moves_journal_misc" groups="account.group_account_readonly" sequence="4"/> + </menuitem> + <menuitem id="menu_finance_entries_accounting_ledgers" name="Ledgers" sequence="3"> + <menuitem id="menu_action_account_moves_ledger_general" action="action_account_moves_ledger_general" groups="account.group_account_readonly" sequence="1"/> + <menuitem id="menu_action_account_moves_ledger_partner" action="action_account_moves_ledger_partner" groups="account.group_account_readonly" sequence="2"/> + </menuitem> + <menuitem id="menu_finance_entries_management" name="Management" sequence="10" groups="account.group_account_invoice,account.group_account_readonly"/> + <menuitem id="menu_finance_entries_generate_entries" name="Generate Entries"/> + <menuitem id="menu_finance_entries_actions" name="Actions" sequence="11" groups="account.group_account_user"> + <menuitem id="menu_action_tax_adjustment" action="tax_adjustments_form" groups="base.group_no_one" sequence="45"/> + </menuitem> + </menuitem> + <menuitem id="menu_finance_reports" name="Reporting" sequence="20" groups="account.group_account_readonly,account.group_account_invoice"> + <menuitem id="account_reports_management_menu" name="Management" sequence="4"> + <menuitem id="menu_action_account_invoice_report_all" name="Invoice Analysis" action="action_account_invoice_report_all" sequence="1"/> + </menuitem> + <menuitem id="account_reports_legal_statements_menu" name="Generic Statements" sequence="1" groups="account.group_account_readonly"/> + </menuitem> + <menuitem id="menu_finance_configuration" name="Configuration" sequence="35" groups="account.group_account_manager"> + <menuitem id="menu_account_config" name="Settings" action="action_account_config" groups="base.group_system" sequence="0"/> + <menuitem id="account_invoicing_menu" name="Invoicing" groups="account.group_account_invoice,account.group_account_readonly" sequence="1"> + <menuitem id="menu_action_payment_term_form" action="action_payment_term_form" sequence="1"/> + <menuitem id="menu_action_incoterm_open" action="action_incoterms_tree" groups="account.group_account_manager" sequence="3"/> + </menuitem> + <menuitem id="account_banks_menu" name="Banks" groups="account.group_account_manager" sequence="2"> + <menuitem id="menu_action_account_bank_journal_form" action="action_new_bank_setting" groups="account.group_account_manager" sequence="1"/> + <menuitem id="action_account_reconcile_model_menu" action="account.action_account_reconcile_model" sequence="3" /> + </menuitem> + <menuitem id="account_account_menu" name="Accounting" groups="account.group_account_manager" sequence="3"> + <menuitem id="menu_action_account_form" action="action_account_form" groups="account.group_account_readonly" sequence="1"/> + <menuitem id="menu_action_tax_form" action="action_tax_form" sequence="2"/> + <menuitem id="menu_action_account_journal_form" action="action_account_journal_form" groups="account.group_account_manager" sequence="3"/> + <menuitem id="menu_product_product_categories" action="product.product_category_action_form" sequence="3"/> + <menuitem id="account_report_folder" name="Reporting" groups="account.group_account_readonly" sequence="4"/> + <menuitem id="menu_action_currency_form" action="base.action_currency_form" name="Currencies" groups="base.group_multi_currency" sequence="4"/> + <menuitem id="menu_action_account_fiscal_position_form" action="action_account_fiscal_position_form" sequence="5"/> + <menuitem id="menu_action_account_journal_group_list" action="action_account_journal_group_list" groups="account.group_account_manager" sequence="7"/> + </menuitem> + <menuitem id="root_payment_menu" name="Payments" groups="account.group_account_manager" sequence="4"/> + <menuitem id="account_management_menu" name="Management" groups="account.group_account_manager" sequence="5"> + <menuitem id="menu_action_rounding_form_view" action="rounding_list_action" groups="account.group_cash_rounding" sequence="4"/> + <menuitem id="menu_configure_tax_report" name="Tax Report" action="account.action_configure_tax_report" groups="base.group_no_one" sequence="5"/> + <menuitem id="menu_action_analytic_lines_tree" name="Analytic Items" action="analytic.account_analytic_line_action_entries" groups="analytic.group_analytic_accounting" sequence="35"/> + </menuitem> + <menuitem id="menu_analytic_accounting" name="Analytic Accounting" groups="analytic.group_analytic_accounting,analytic.group_analytic_tags" sequence="6"> + <menuitem id="account_analytic_def_account" action="analytic.action_account_analytic_account_form" groups="analytic.group_analytic_accounting" sequence="1"/> + <menuitem id="account_analytic_group_menu" name="Analytic Account Groups" action="analytic.account_analytic_group_action" groups="analytic.group_analytic_accounting" sequence="2"/> + <menuitem id="account_analytic_tag_menu" name="Analytic Tags" action="analytic.account_analytic_tag_action" groups="analytic.group_analytic_tags"/> + </menuitem> + </menuitem> + </menuitem> </odoo> diff --git a/addons/lunch/views/lunch_views.xml b/addons/lunch/views/lunch_views.xml index c0254e906cc..4a720e8feea 100644 --- a/addons/lunch/views/lunch_views.xml +++ b/addons/lunch/views/lunch_views.xml @@ -1,25 +1,25 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> - <!-- Top menu item --> - <menuitem id='menu_lunch' name='Lunch' sequence="105" groups="group_lunch_user" web_icon="lunch,static/description/icon.png"/> - <menuitem name="My Lunch" parent="menu_lunch" id="menu_lunch_title" sequence="50" /> - <menuitem name="Manager" parent="menu_lunch" id="menu_lunch_admin" sequence="51" groups="group_lunch_manager"/> - <menuitem name="Configuration" parent="menu_lunch" id="menu_lunch_config" sequence="53" groups="group_lunch_manager"/> - - <menuitem name="New Order" parent="menu_lunch_title" id="lunch_order_menu_form" action="lunch.lunch_product_action_order" sequence="1"/> - <menuitem name="My Order History" parent="menu_lunch_title" id="lunch_order_menu_tree" action="lunch_order_action" sequence="2"/> - <menuitem name="My Account History" parent="menu_lunch_title" id="lunch_cashmove_report_menu_form" action="lunch_cashmove_report_action_account" sequence="3"/> - - <menuitem name="Today's Orders" parent="menu_lunch_admin" id="lunch_order_menu_by_supplier" action="lunch_order_action_by_supplier" /> - <menuitem name="Control Vendors" parent="menu_lunch_admin" id="lunch_order_menu_control_suppliers" action="lunch_order_action_control_suppliers" /> - <menuitem name="Control Accounts" parent="menu_lunch_admin" id="lunch_cashmove_report_menu_control_accounts" action="lunch_cashmove_report_action_control_accounts"/> - <menuitem name="Cash Moves" parent="menu_lunch_admin" id="lunch_cashmove_report_menu_payment" action="lunch_cashmove_action_payment"/> - - <menuitem name="Settings" parent="menu_lunch_config" id="lunch_settings_menu" action="lunch_config_settings_action" sequence="1"/> - <menuitem name="Vendors" parent="menu_lunch_config" id="lunch_vendors_menu" action="lunch_vendors_action" sequence="2"/> - <menuitem name="Locations" parent="menu_lunch_config" id="lunch_location_menu" action="lunch_location_action" sequence="3"/> - <menuitem name="Products" parent="menu_lunch_config" id="lunch_product_menu" action="lunch_product_action" sequence="4"/> - <menuitem name="Product Categories" parent="menu_lunch_config" id="lunch_product_category_menu" action="lunch_product_category_action" sequence="5"/> - <menuitem name="Alerts" parent="menu_lunch_config" id="lunch_alert_menu" action="lunch_alert_action" sequence="6"/> - + <!-- Top menu item --> + <menuitem id='menu_lunch' name='Lunch' sequence="105" groups="group_lunch_user" web_icon="lunch,static/description/icon.png"> + <menuitem name="My Lunch" id="menu_lunch_title" sequence="50"> + <menuitem name="New Order" id="lunch_order_menu_form" action="lunch.lunch_product_action_order" sequence="1"/> + <menuitem name="My Order History" id="lunch_order_menu_tree" action="lunch_order_action" sequence="2"/> + <menuitem name="My Account History" id="lunch_cashmove_report_menu_form" action="lunch_cashmove_report_action_account" sequence="3"/> + </menuitem> + <menuitem name="Manager" id="menu_lunch_admin" sequence="51" groups="group_lunch_manager"> + <menuitem name="Today's Orders" id="lunch_order_menu_by_supplier" action="lunch_order_action_by_supplier" /> + <menuitem name="Control Vendors" id="lunch_order_menu_control_suppliers" action="lunch_order_action_control_suppliers" /> + <menuitem name="Control Accounts" id="lunch_cashmove_report_menu_control_accounts" action="lunch_cashmove_report_action_control_accounts"/> + <menuitem name="Cash Moves" id="lunch_cashmove_report_menu_payment" action="lunch_cashmove_action_payment"/> + </menuitem> + <menuitem name="Configuration" id="menu_lunch_config" sequence="53" groups="group_lunch_manager"> + <menuitem name="Settings" id="lunch_settings_menu" action="lunch_config_settings_action" sequence="1"/> + <menuitem name="Vendors" id="lunch_vendors_menu" action="lunch_vendors_action" sequence="2"/> + <menuitem name="Locations" id="lunch_location_menu" action="lunch_location_action" sequence="3"/> + <menuitem name="Products" id="lunch_product_menu" action="lunch_product_action" sequence="4"/> + <menuitem name="Product Categories" id="lunch_product_category_menu" action="lunch_product_category_action" sequence="5"/> + <menuitem name="Alerts" id="lunch_alert_menu" action="lunch_alert_action" sequence="6"/> + </menuitem> + </menuitem> </odoo> diff --git a/addons/mrp/views/mrp_views_menus.xml b/addons/mrp/views/mrp_views_menus.xml index bde51d95633..747f252100b 100644 --- a/addons/mrp/views/mrp_views_menus.xml +++ b/addons/mrp/views/mrp_views_menus.xml @@ -1,39 +1,31 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> - <data> - <!-- Top menu item --> - <menuitem id="menu_mrp_root" - name="Manufacturing" - groups="group_mrp_user,group_mrp_manager" - icon="fa-wrench" - web_icon="mrp,static/description/icon.png" - sequence="35"/> + <menuitem id="menu_mrp_root" + name="Manufacturing" + groups="group_mrp_user,group_mrp_manager" + web_icon="mrp,static/description/icon.png" + sequence="35"> <menuitem id="menu_mrp_manufacturing" name="Operations" - parent="menu_mrp_root" sequence="10"/> <menuitem id="mrp_planning_menu_root" name="Planning" - parent="menu_mrp_root" sequence="15"/> <menuitem id="menu_mrp_bom" name="Products" - parent="menu_mrp_root" sequence="20"/> <menuitem id="menu_mrp_reporting" name="Reporting" - parent="menu_mrp_root" sequence="25"/> <menuitem id="menu_mrp_configuration" name="Configuration" - parent="menu_mrp_root" groups="group_mrp_manager" sequence="100"/> - </data> + </menuitem> </odoo> diff --git a/odoo/addons/base/wizard/base_module_update_views.xml b/odoo/addons/base/wizard/base_module_update_views.xml index 2b1b8a00ffb..18382ce8f10 100644 --- a/odoo/addons/base/wizard/base_module_update_views.xml +++ b/odoo/addons/base/wizard/base_module_update_views.xml @@ -44,8 +44,7 @@ id="menu_view_base_module_update" groups="base.group_no_one" parent="menu_management" - sequence="40" - icon="fa-exchange"/> + sequence="40"/> </data> </odoo> diff --git a/odoo/import_xml.rng b/odoo/import_xml.rng index 1a182ce6ffc..016f21dca8b 100644 --- a/odoo/import_xml.rng +++ b/odoo/import_xml.rng @@ -224,23 +224,42 @@ </rng:element> </rng:define> + <rng:define name="menuitem_attrs"> + <rng:attribute name="id" /> + <rng:optional><rng:attribute name="name"/></rng:optional> + <rng:optional> + <rng:attribute name="sequence"> + <rng:data type="int"/> + </rng:attribute> + </rng:optional> + <rng:optional><rng:attribute name="groups"/></rng:optional> + <rng:optional><rng:attribute name="active"/></rng:optional> + <rng:optional> + <!-- menu can't have both children and action --> + <rng:choice> + <rng:attribute name="action"/> + <rng:oneOrMore> + <rng:ref name="submenuitem"/> + </rng:oneOrMore> + </rng:choice> + </rng:optional> + </rng:define> <rng:define name="menuitem"> <rng:element name="menuitem"> - <!-- TODO: id should probably be mandatory --> - <rng:optional> <rng:attribute name="id" /></rng:optional> - <rng:optional> <rng:attribute name="name"/></rng:optional> - <rng:optional> <rng:attribute name="parent"/> </rng:optional> - <rng:optional> <rng:attribute name="action"/> </rng:optional> - <rng:optional> <rng:attribute name="sequence"/> </rng:optional> - <rng:optional> <rng:attribute name="groups"/> </rng:optional> - <rng:optional> <rng:attribute name="active"/> </rng:optional> - <!-- TODO: remove icon stuff --> - <rng:optional> <rng:attribute name="icon"/> </rng:optional> - <rng:optional> <rng:attribute name="web_icon"/> </rng:optional> - <rng:optional> <rng:attribute name="web_icon_hover"/> </rng:optional> - <!-- string doesn't seem used anywhere --> - <rng:optional> <rng:attribute name="string"/> </rng:optional> - <rng:empty /> + <rng:ref name="menuitem_attrs"/> + <rng:optional> + <rng:choice> + <!-- can't have submenus with icons --> + <rng:attribute name="parent"/> + <rng:attribute name="web_icon"/> + </rng:choice> + </rng:optional> + </rng:element> + </rng:define> + <!-- menuitem except no parent (is implicit) or web_icon attributes --> + <rng:define name="submenuitem"> + <rng:element name="menuitem"> + <rng:ref name="menuitem_attrs"/> </rng:element> </rng:define> diff --git a/odoo/tools/convert.py b/odoo/tools/convert.py index 0a6a0c23da8..54b9b0d9ef4 100644 --- a/odoo/tools/convert.py +++ b/odoo/tools/convert.py @@ -419,7 +419,7 @@ form: module.record_id""" % (xml_id,) data = dict(xml_id=xid, values=res, noupdate=self.noupdate) self.env['ir.actions.act_window']._load_records([data], self.mode == 'update') - def _tag_menuitem(self, rec): + def _tag_menuitem(self, rec, parent=None): rec_id = rec.attrib["id"] self._test_xml_id(rec_id) @@ -433,11 +433,12 @@ form: module.record_id""" % (xml_id,) if rec.get('sequence'): values['sequence'] = int(rec.get('sequence')) - if rec.get('parent'): + if parent is not None: + values['parent_id'] = parent + elif rec.get('parent'): values['parent_id'] = self.id_get(rec.attrib['parent']) - else: - if rec.get('web_icon'): - values['web_icon'] = rec.attrib['web_icon'] + elif rec.get('web_icon'): + values['web_icon'] = rec.attrib['web_icon'] if rec.get('name'): @@ -475,7 +476,9 @@ form: module.record_id""" % (xml_id,) 'values': values, 'noupdate': self.noupdate, } - self.env['ir.ui.menu']._load_records([data], self.mode == 'update') + menu = self.env['ir.ui.menu']._load_records([data], self.mode == 'update') + for child in rec.iterchildren('menuitem'): + self._tag_menuitem(child, parent=menu.id) def _tag_record(self, rec): rec_model = rec.get("model") |
