Develop a Custom Settings Page in Odoo
Odoo's framework provides the ability to create settings pages for modules and applications. In this video learn how to use this framework to create your own custom settings page.
Building a custom settings page using Odoo's framework
Often times when building a module or application you will need to create or modify a settings page to provide an administrator the ability to configure the application for a specific business requirement. If you have built your own settings page you already know there are a few things you must understand about the Odoo framework... If you are new to developing settings pages, this video is for you.
Taking a step-by-step approach to developing Odoo modules
Once again this video takes a step-by-step approach in teaching you exactly how to customize the Odoo framework and solve business requirements. Learn how to customize settings pages in Odoo and provide your users with specific configuration options for your module or application. In this video we use a real-world development example that adds real functionality to the application.
What do I need to know to develop settings pages in Odoo?
This video will be useful to anyone who understands the basics of Odoo development. If you are new to developing modules or applications in Odoo it would likely be best for you to first watch some of the associated videos provided below.
Step 1 - Finding the view for the settings form
In our real world example we take an application that provides Slack integration into Odoo and wish to make the application easier to configure by providing a settings page.
As this application will integrate with the sales/crm application we want to customize the sale settings to include new options for our slack application. We can easily find out which view we need to customize by turning on developer mode and navigating to the settings page and choosing Edit FormView from the developer settings.
Step 2 - Understand the view inheritence
Next you must determine which view you wish to inherit from and find it's extrenal_id. You can see here that for the sale.settings view that we have the Inherited Views tab selected. Under there we can the options that the CRM application has added to the sale.settings menu. We wish to inherit from the CRM view crm.view_sale_config_settings because this application is a CRM application that manages customer relationships. This also means that the CRM application must be installed in order for our custom Slack integration application to function properly.
Step 3 - Determine the external id from the parent view you wish to inherit from
If your are new to Odoo Development this can be a little confusing at first. That is largely why the video dedicates time in showing you how to navigate the various views in Odoo so you can completely understand how everything fits together.
Those that are new to how views are handled in Odoo should take a look at the associated videos below for more information.
Code from the standard Odoo sales configuration settings
<record id="view_sale_config_settings" model="ir.ui.view">
<field name="name">sale settings</field>
<field name="model">sale.config.settings</field>
<field name="arch" type="xml">
<form string="Configure Sales" class="oe_form_configuration" name="sale_config_form">
<header>
<button string="Apply" type="object" name="execute" class="oe_highlight"/>
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<div id="main"/>
</form>
</field>
</record>
Code Example for a Custom Settings View in Odoo
<record id="view_slack_config_settings" model="ir.ui.view">
<field name="name">slack settings</field>
<field name="model">sale.config.settings</field>
<field name="inherit_id" ref="sales_team.view_sale_config_settings"/>
<field name="arch" type="xml">
<div id="main" position="inside">
<group string="Slack" name="config_slack">
<label for="module_crm_slack" string="Slack integration"/>
<div>
<field name="module_crm_slack" class="oe_inline"/>
<label for="module_crm_slack" invisible="1"/>
</div>
</group>
</div>
</field>
</record>
Step 4 - Add fields to the model
This should be very simple for even beginning Odoo developers. Simply add the custom fields you wish to use for storing your custom settings. Details for this step are provided in the video.
Step 5 - Create your custom view
Now that you know exactly how you need to integrate your view with Odoo's CRM application and associated settings we can begin writing our view.
As you will see in the code example we create a record in XML that inherits from sales_team.view_sale_config_settings. This demonstrates a typical aspect of Odoo development. Much of the work is examining existing Odoo source code. In fact if you are not spending a lot of time looking at the base Odoo application code when building your own custom modules, you are probably doing something wrong... or at the very least you are not being productive.