63 lines
2.7 KiB
Python
63 lines
2.7 KiB
Python
# Copyright 2020-2021 Akretion France (http://www.akretion.com)
|
|
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
{
|
|
"name": "Base Dynamic List",
|
|
"version": "14.0.1.0.0",
|
|
"category": "Tools",
|
|
"license": "AGPL-3",
|
|
"summary": "Dynamic lists",
|
|
"description": """
|
|
Base Dynamic List
|
|
=================
|
|
|
|
Very often during an Odoo implementation, we need to add selection fields on a native objet, and we don't want to have a hard-coded selection list (fields.Selection), but a selection list that can be changed by users (Many2one field). For that, the developper needs to add a new object (with just a 'name' and 'sequence' field) with a form/tree view. The goal of this module is to speed-up this process by defining a dynamic list object that already has all the required views.
|
|
|
|
This module provides several ready-to-go objects:
|
|
|
|
* simple list : fields *name*, *sequence* and *active*
|
|
* translatable list : fields *name* with translate=True, *sequence* and *active*
|
|
* code list : fields *code* (unique), *name*, *sequence* and *active*
|
|
* translatable code list : fields *code* (unique), *name* with translate=True, *sequence* and *active*
|
|
|
|
These objects are readable by the employee group. The system group has full rights on it.
|
|
|
|
To use it, you need to do 2 or 3 things :
|
|
|
|
1) Add an entry in the domain field and the object you selected:
|
|
|
|
domain = fields.Selection(selection_add=[('risk.type', "Risk Type")], ondelete={"risk.type": "cascade"})
|
|
|
|
2) Add the many2one field on your object:
|
|
|
|
risk_type_id = fields.Many2one(
|
|
'dynamic.list', string="Risk Type",
|
|
ondelete='restrict', domain=[('domain', '=', 'risk.type')])
|
|
|
|
|
|
3) Optionally, you can add a dedicated action and a menu entry (otherwize, you can use the generic menu entry under *Settings > Technical > Dynamic Lists*:
|
|
|
|
<record id="dynamic_list_risk_type_action" model="ir.actions.act_window">
|
|
<field name="name">Risk Type</field>
|
|
<field name="res_model">dynamic.list</field>
|
|
<field name="view_mode">tree,form</field>
|
|
<field name="domain">[('domain', '=', 'risk.type')]</field>
|
|
<field name="context">{'default_domain': 'risk.type'}</field>
|
|
</record>
|
|
|
|
<menuitem id="dynamic_list_risk_type_menu" action="dynamic_list_risk_type_action"
|
|
parent="parent_menu_xmlid"/>
|
|
|
|
Limitation: when you want to have different access rights on these lists depending on the source object, you should prefer to use dedicated objects.
|
|
""",
|
|
"author": "Akretion",
|
|
"website": "https://github.com/OCA/odoo-usability",
|
|
"depends": ["base"],
|
|
"data": [
|
|
"security/ir.model.access.csv",
|
|
"views/dynamic_list.xml",
|
|
],
|
|
"installable": True,
|
|
}
|