TIP: You can type at any time to perform a new search.
Base Custom Info
base_custom_info · OCA/server-tools
⚠ Security warnings
access_category— Access rule grants write/create/unlink on 'model_custom_info_category' to EVERY user (portal/public included): no group is set acl-global-writeaccess_option— Access rule grants write/create/unlink on 'model_custom_info_option' to EVERY user (portal/public included): no group is set acl-global-writeaccess_property— Access rule grants write/create/unlink on 'model_custom_info_property' to EVERY user (portal/public included): no group is set acl-global-writeaccess_template— Access rule grants write/create/unlink on 'model_custom_info_template' to EVERY user (portal/public included): no group is set acl-global-writeaccess_value— Access rule grants write/create/unlink on 'model_custom_info_value' to EVERY user (portal/public included): no group is set acl-global-write
Found by automated static analysis: these patterns are usually risky, but only a manual review of the module can confirm a real issue.
- Repository
- OCA/server-tools · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Tools
- Folder size
- 1.1 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://github.com/OCA/server-tools
- Last tracking update
- 2026-08-07 07:57:05
- Authors
- Odoo Community Association (OCA), Tecnativa
- Maintainers
- Odoo Community Association (OCA), Tecnativa
- Committers
- Rad0van, Weblate, OCA-git-bot, oca-ci
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- product_custom_info
- Description
Code Analysis ⓘ
Views touched (23)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
custom_info_category_form |
custom.info.category | form | New | |
custom_info_category_search |
custom.info.category | search | New | |
custom_info_category_tree |
custom.info.category | tree | New | |
custom_info_option_form |
custom.info.option | form | New | |
custom_info_option_form_full |
custom.info.option | form | Inherits custom_info_option_form | |
custom_info_option_search |
custom.info.option | search | New | |
custom_info_option_tree |
custom.info.option | tree | New | |
custom_info_option_tree_full |
custom.info.option | tree | Inherits custom_info_option_tree | |
custom_info_property_form |
custom.info.property | form | New | |
custom_info_property_form_full |
custom.info.property | form | Inherits custom_info_property_form | |
custom_info_property_search |
custom.info.property | search | New | |
custom_info_property_tree |
custom.info.property | tree | New | |
custom_info_property_tree_full |
custom.info.property | tree | Inherits custom_info_property_tree | |
custom_info_template_form |
custom.info.template | form | New | |
custom_info_template_search |
custom.info.template | search | New | |
custom_info_template_tree |
custom.info.template | tree | New | |
custom_info_value_editable |
custom.info.value | New | ||
custom_info_value_form |
custom.info.value | form | New | |
custom_info_value_search |
custom.info.value | search | New | |
custom_info_value_tree |
custom.info.value | tree | New | |
custom_info_value_tree_editable |
custom.info.value | tree | Inherits custom_info_value_tree | |
res_config_settings_view_form |
Allow to enable custom information | res.config.settings | form | Inherits base_setup.res_config_settings_view_form |
view_partner_form |
res.partner | form | Inherits base.view_partner_form |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (10)
New fields (2)
-
custom_info_idsOne2many → custom.info.valueauto_join=Truecomodel_name='custom.info.value'domain=<expr>inverse_name='res_id'string='Custom Properties' -
custom_info_template_idMany2one → custom.info.templatecomodel_name='custom.info.template'domain=<expr>string='Custom Information Template'
-
all_custom_info_templates(self)Get all custom info templates involved in these owners. -
get_custom_info_value(self, properties)@api.returns('custom.info.value')Get ``custom.info.value`` records for the given property. -
onchange(self, values, field_name, field_onchange) -
unlink(self)Remove linked custom info this way, as can't be handled automatically.
New fields (3)
-
nameCharindex=Truerequired=Truetranslate=True -
property_idsOne2many → custom.info.propertycomodel_name='custom.info.property'help='Properties in this category.'inverse_name='category_id'string='Properties' -
sequenceIntegerindex=True
-
check_access_rule(self, operation)You access a category if you access at least one property.
New fields (4)
-
nameCharindex=Truerequired=Truetranslate=True -
property_idsMany2many → custom.info.propertycomodel_name='custom.info.property'help='Properties where this option is enabled.'string='Properties' -
template_idMany2one → custom.info.templatecomodel_name='custom.info.template'help='Additional template to be applied to the owner if this option is chosen.'string='Additional template' -
value_idsOne2many → custom.info.valuecomodel_name='custom.info.value'help='Values that have set this option.'inverse_name='value_id'string='Values'
-
check_access_rule(self, operation)You access an option if you access at least one property.
New fields (14)
-
category_idMany2one → custom.info.categorycomodel_name='custom.info.category'string='Category' -
category_sequenceIntegerreadonly=Truerelated='category_id.sequence'store=Truestring='Category Sequence' -
default_valueCharhelp='Will be applied by default to all custom values of this property. This is a char field, so you have to enter some value that can be converted to the field type you choose.'translate=True -
field_typeSelectioncompute='_compute_field_type'selection=[('str', 'Text'), ('int', 'Whole number'), ('float', 'Decimal number'), ('bool', 'Yes/No'), ('date', 'Date'), ('id', 'Selection')]store=True -
info_value_idsOne2many → custom.info.valuecomodel_name='custom.info.value'inverse_name='property_id'string='Property Values' -
maximumFloatdefault=-1help='For numeric fields, it means the maximum possible value; for text fields, it means the maximum possible length. If it is smaller than the minimum, then this check is skipped' -
minimumFloathelp='For numeric fields, it means the minimum possible value; for text fields, it means the minimum possible length. If it is bigger than the maximum, then this check is skipped' -
modelCharrelated='template_id.model' -
nameCharrequired=Truetranslate=True -
option_idsMany2many → custom.info.optioncomodel_name='custom.info.option'help="When the field type is 'selection', choose the available options here."string='Options' -
requiredBoolean -
sequenceIntegerindex=True -
template_idMany2one → custom.info.templatecomodel_name='custom.info.template'ondelete='cascade'required=Truestring='Template' -
widgetSelectiondefault='char'help='Type of information that can be stored in the property.'required=Trueselection=[('boolean', 'Boolean'), ('float', 'Decimal'), ('integer', 'Integer'), ('date', 'Date'), ('char', 'Single line text'), ('text', 'Multi line Text'), ('html', 'Complex text'), ('many2one', 'Choice')]
-
check_access_rule(self, operation)You access a property if you access its template.
New fields (4)
-
modelCharcompute='_compute_model'inverse='_inverse_model'search='_search_model'string='Model technical name' -
model_idMany2one → ir.modelauto_join=Truecomodel_name='ir.model'ondelete='cascade'required=Truestring='Model' -
nameCharrequired=Truetranslate=True -
property_idsOne2many → custom.info.propertycomodel_name='custom.info.property'inverse_name='template_id'string='Properties'
-
check_access_rule(self, operation)You access a template if you access its model. -
write(self, vals)
New fields (19)
-
category_idMany2onerelated='property_id.category_id'store=True -
category_sequenceIntegerrelated='property_id.category_id.sequence'store=Truestring='Category Sequence' -
field_nameCharcompute='_compute_field_name'help='Technical name of the field where the value is stored.' -
field_typeSelectionrelated='property_id.field_type' -
modelCharindex=Truereadonly=Truerelated='property_id.model'store=True -
nameCharrelated='property_id.name' -
owner_idReferencecompute='_compute_owner_id'help='Record that owns this custom value.'inverse='_inverse_owner_id'selection='_selection_owner_id'string='Owner' -
property_idMany2one → custom.info.propertycomodel_name='custom.info.property'required=Truestring='Property' -
property_sequenceIntegerindex=Truerelated='property_id.sequence'store=True -
requiredBooleanrelated='property_id.required' -
res_idIntegerindex=Truerequired=Truestring='Resource ID' -
valueCharcompute='_compute_value'help='Value, always converted to/from the typed field.'inverse='_inverse_value'search='_search_value' -
value_boolBooleanindex=Truestring='Yes/No value' -
value_dateDateindex=Truestring='Date value' -
value_floatFloatindex=Truestring='Decimal number value' -
value_idMany2one → custom.info.optioncomodel_name='custom.info.option'domain="[('property_ids', '=', property_id)]"ondelete='cascade'string='Selection value' -
value_intIntegerindex=Truestring='Whole number value' -
value_strCharindex=Truestring='Text value'translate=True -
widgetSelectionreadonly=Truerelated='property_id.widget'
-
check_access_rule(self, operation)You access a value if you access its owner record.
New fields (1)
-
view_modeSelectionondelete={'custom_info': 'cascade'}selection_add=[('custom_info', 'Custom Info')]
No public methods.
New fields (1)
-
typeSelectionondelete={'custom_info': 'cascade'}selection_add=[('custom_info', 'Custom Info')]
No public methods.
New fields (2)
-
group_custom_info_managerBooleanhelp='Allow all employees to manage custom information'implied_group='base_custom_info.group_basic'string='Manage custom information' -
group_custom_info_partnerBooleanhelp='Add a tab in the partners form to edit custom information'implied_group='base_custom_info.group_partner'string='Edit custom information in partners'
No public methods.
New fields (2)
-
custom_info_idsOne2manycontext={'default_model': _name} -
custom_info_template_idMany2onecontext={'default_model': _name}
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
- Status
- Open migration PR — not merged yet for this version
- CI status
- green — ready to merge
- Open since
- 34 days ago
- Last activity
- 34 days ago
- Repository
- OCA/server-tools
- Pull request
- 16.0 mig base custom info (#3678)