Created
December 22, 2024 16:39
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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