Skip to content

Instantly share code, notes, and snippets.

@ray-odoo
Created December 22, 2024 16:39
Show Gist options
  • Save ray-odoo/450ccd5c04512c532c7cff82433d048d to your computer and use it in GitHub Desktop.
Save ray-odoo/450ccd5c04512c532c7cff82433d048d to your computer and use it in GitHub Desktop.
Script for field, model, view, window action, server action, automated action, access rights and buttons
# Odoo 16/17/18 - ray
###################
# create a record #
###################
rec = env[''].create({})
env['ir.model.data'].create({'model': '','module': 'ray_odoo_script','name': '', 'res_id': rec.id})
##############################
# create simple custom field #
##############################
rec = env['ir.model.fields'].create({
'name': 'x_name',
'field_description': 'Name',
'model_id': env.ref('module.model_res_partner').id,
'ttype': 'binary / boolean / char / date / datetime / float / html / integer / json / monetary / one2many / text',
'help': 'this ...',
'tracking': 1,
})
env['ir.model.data'].create({'model': 'ir.model.fields','module': 'ray_odoo_script','name': 'field_model_name', 'res_id': rec.id})
###############################
# create complex custom field #
###############################
rec = env['ir.model.fields'].create({
'name': 'x_name',
'field_description': 'Name',
'model_id': env.ref('module.model_res_partner').id,
'ttype': 'many2many / many2one / many2one_reference / one2many / properties / properties_definition / reference / selection',
'help': 'this ...',
'tracking': 1,
'relation': 'related.model',
# 'compute': """
# """,
# 'relation_field': 'many2one_field',
# 'group_expand': True,
# 'selection': [
# ('option1', 'Option 1'),
# ]
})
env['ir.model.data'].create({'model': 'ir.model.fields','module': 'ray_odoo_script','name': 'field_model_name', 'res_id': rec.id})
####################
# create base view #
####################
rec = env['ir.ui.view'].create({
'name': 'custom_ray wdid',
'model': 'sale.order',
'mode': 'primary',
'type': 'tree/form',
'arch_base':"""
<data>
</data>"""})
env['ir.model.data'].create({'model': 'ir.ui.view','module': 'ray_odoo_script','name': 'view_type_model_name', 'res_id': rec.id})
#########################
# create inherited view #
#########################
rec = env['ir.ui.view'].create({
'name': 'custom_ray wdid',
'model': 'sale.order',
'inherit_id': env.ref('sale.view_order_form').id,
'mode': 'extension',
'arch_base':"""
<data>
</data>"""})
env['ir.model.data'].create({'model': 'ir.ui.view','module': 'ray_odoo_script','name': 'view_type_model_name', 'res_id': rec.id})
#######################
# create simple model #
#######################
rec = env['ir.model'].create({
'model': 'x_name',
'name': 'Name',
'order': 'id',
'is_mail_thread': True,
'is_mail_activity': True,
#'transient': True,
})
env['ir.model.data'].create({'model': 'ir.model','module': 'ray_odoo_script','name': 'model_name', 'res_id': rec.id})
# permissions
rec = env['ir.model.access'].create({
'name': 'Relevant Users can Manage but not delete',
'model_id': env.ref('').id,
'group_id': env.ref('base.group_user').id,
'perm_read': True,
'perm_write': True,
'perm_create': True,
'perm_unlink': False
})
env['ir.model.data'].create({'model': 'ir.model.access','module': 'ray_odoo_script','name': 'access_model_name', 'res_id': rec.id})
########################
# create window action #
########################
rec = env['ir.actions.act_window'].create({
'name': 'Name',
'res_model': 'res.partner',
'domain': "[('customer_rank','!=',0)]",
'view_ids':
[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': tree_view.id}),
(0, 0, {'view_mode': 'form', 'view_id': form_view.id})
]
})
env['ir.model.data'].create({'model': 'ir.actions.act_window','module': 'ray_odoo_script','name': 'action_window_model_name', 'res_id': rec.id})
###############
# create menu #
###############
rec = env['ir.ui.menu'].create({'name': 'Industries', 'parent_id': env.ref('sale.menu_sale_config').id,
'action': 'ir.actions.act_window,' + str(env.ref('ray_odoo_script.ir_actions_act_window_industries').id),'sequence': 70,
})
env['ir.model.data'].create({'model': 'ir.ui.menu','module': 'ray_odoo_script','name': 'ir_ui_menu_industries', 'res_id': rec.id})
########################
# create server action #
########################
rec = env['ir.actions.server'].create({
'name': 'Name',
'model_id': env.ref('module.model_res_partner').id,
'state': 'code',
'code': """
"""
})
env['ir.model.data'].create({'model': 'ir.actions.server','module': 'ray_odoo_script','name': 'action_server_model_name', 'res_id': rec.id})
###########################
# create automated action #
###########################
rec = env['base.automation'].create({
'name': 'Name',
'model_id': env.ref('module.model_res_partner').id,
'trigger': 'on_create' or 'on_write'
'state': 'code',
'code': """
"""
})
env['ir.model.data'].create({'model': 'base.automation','module': 'ray_odoo_script','name': 'action_automated_model_name', 'res_id': rec.id})
#####################
# add access rights #
#####################
rec = env['ir.model.access'].create({
'name': 'Relevant Users can Manage but not delete',
'model_id': env.ref('').id,
'group_id': env.ref('').id,
'perm_read': True,
'perm_write': True,
'perm_create': True,
'perm_unlink': False
})
env['ir.model.data'].create({'model': 'ir.model.access','module': 'ray_odoo_script','name': 'access_model_name', 'res_id': rec.id})
#######################################
# use external id of something in xml #
#######################################
<button name='""" + str(env.ref('ray_odoo_script.action_order_split').id) + """'
<button name="%(ray_odoo_script.action_sales_order_lines)s" type="action" class="btn btn-link"
attrs="{'invisible': [('order_line','=',False)]}" string="Manage Order Lines" icon="fa-arrow-right"/>
name='""" + str(env.ref('ray_odoo_script.action_purchase_order_invite_user').id) + """ '
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment