How to do it...

In order to create custom settings options, follow these steps:

  1. Add a new group in the my_library/security/groups.xml file:
    <record id="group_self_borrow" model="res.groups">
<field name="name">Self borrow</field>
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
</record>
  1. Add a new field by inheriting the res.config.settings model:
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'

group_self_borrow = fields.Boolean(string="Self borrow",
implied_group='my_library.group_self_borrow')
  1. Add this field in the existing settings view with xpath (for more details, refer to Chapter 10, Backend Views):
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.library</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="5"/>
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('settings')]" position="inside">
<div class="app_settings_block"
data-string="Library" string="Library" data-key="my_library"
groups="my_library.group_librarian">
<h2>Library</h2>
<div class="row mt16 o_settings_container">
<div class="col-12 col-lg-6 o_setting_box" id="library">
<div class="o_setting_left_pane">
<field name="group_self_borrow"/>
</div>
<div class="o_setting_right_pane">
<label for="group_self_borrow"/>
<div class="text-muted">
Allow users to borrow and return books by themself
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
  1. Add some actions and a menu for the Settings:
<record id="library_config_settings_action" model="ir.actions.act_window">
<field name="name">Settings</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.config.settings</field>
<field name="view_id" ref="res_config_settings_view_form"/>
<field name="view_mode">form</field>
<field name="target">inline</field>
<field name="context">{'module' : 'my_library'}</field>
</record>

<menuitem name="Settings"
id="library_book_setting_menu"
parent="library_base_menu"
action="library_config_settings_action"
sequence="50"/>
  1. Modify the buttons in the book's form view and add a my_library.group_self_borrow group:
<button name="book_rent" 
string="Rent this book"
type="object" class="btn-primary"
groups="my_library.group_self_borrow"/>
<button
name="return_all_books"
string="Return all book"
type="object" class="btn-primary"
groups="my_library.group_self_borrow"/>

Restart the server and update the my_library module to apply the changes.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset