The Odoo Shortcuts scaffold system allows you to generate complete Odoo code quickly and consistently. Supports Odoo versions 14-19 and automatically adapts syntax according to the version.

Creates a complete addon with standard structure.
Command: Odoo Shortcuts: New Addon
Requested Fields:
Generated Structure:
my_addon/
βββ __init__.py
βββ __manifest__.py
βββ models/
β βββ __init__.py
βββ views/
βββ security/
βββ static/
β βββ src/
β βββ components/
βββ README.md
Similar to New Addon, creates a module with basic structure.
Generates a complete Odoo model with:
Command: Odoo Shortcuts: New Model

Generated Template (Odoo 18+):
class MyModel(models.Model):
_name = 'my.model'
_description = 'My Model'
name = fields.Char(string='Name', required=True)
Generated Views:
Creates a model that inherits from an existing one.
Command: Odoo Shortcuts: New Inherit Model
Template:
class MyModelInherited(models.Model):
_inherit = 'original.model'
new_field = fields.Char(string='New Field')
Generates a wizard (transient model) with:
Command: Odoo Shortcuts: New Wizard
Generates an HTTP controller.
Command: Odoo Shortcuts: New Controller
Template:
class MyController(http.Controller):
@http.route('/my/route', type='http', auth='public')
def my_route(self, **kw):
return request.render('template_id', {})
Generates a QWeb report.
Command: Odoo Shortcuts: New Report
Generates a complete view file for a model.
Command: Odoo Shortcuts: Create Views
Supported View Types:
Version Adaptation:
<tree>, view_mode="tree,form"<list>, view_mode="list,form"Generates inherited views (inherit) to extend existing views.
Command: Odoo Shortcuts: Create Inherit Views
Template:
<record id="view_model_form_inherit" model="ir.ui.view">
<field name="name">model.form.inherit</field>
<field name="model">my.model</field>
<field name="inherit_id" ref="original_module.view_id"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="after">
<field name="new_field"/>
</xpath>
</field>
</record>
Generates a complete OWL component.
Command: Odoo Shortcuts: New OWL Component
Generated Files:
component_name.js - Component classcomponent_name.xml - XML templatecomponent_name.scss - Styles (optional)JavaScript Template:
/** @odoo-module **/
import { Component, useState } from "@odoo/owl";
export class MyComponent extends Component {
static template = "addon_name.MyComponent";
static props = {};
setup() {
this.state = useState({});
}
}
Generates an OWL service.
Command: Odoo Shortcuts: New OWL Service
Template:
/** @odoo-module **/
import { registry } from "@web/core/registry";
export const myService = {
dependencies: [],
start(env) {
return {
// Service methods
};
}
};
registry.category("services").add("myService", myService);
Generates server actions (ir.actions.server).
Command: Odoo Shortcuts: New Server Actions
Generates client actions.
Command: Odoo Shortcuts: New Client Actions
Generates scheduled tasks (cron).
Command: Odoo Shortcuts: New Cron Actions
Template:
<record id="ir_cron_my_action" model="ir.cron">
<field name="name">My Scheduled Action</field>
<field name="model_id" ref="model_my_model"/>
<field name="state">code</field>
<field name="code">model.my_method()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
</record>
Generates custom paper formats for reports.
Command: Odoo Shortcuts: New Paper Format
Generates ir.model.access.csv file with access rules.
Command: Odoo Shortcuts: New Security File

Template:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_my_model_user,My Model User,model_my_model,base.group_user,1,1,1,0
Generates access rules for an existing model.
Command: Available via CodeLens on models
Generates tests in Python.
Command: Odoo Shortcuts: New Tests File
Available Templates:
Generates tests for OWL components.
Template:
/** @odoo-module **/
import { click, getFixture, mount } from "@web/../tests/helpers/utils";
import { makeTestEnv } from "@web/../tests/helpers/mock_env";
QUnit.module("My Component", {});
QUnit.test("Test description", async (assert) => {
// Test code
});
Generates .conf configuration files.
Command: Odoo Shortcuts: New Odoo Configuration
Template:
[options]
addons_path = /path/to/addons
admin_passwd = admin
db_host = localhost
db_port = 5432
db_user = odoo
db_password = odoo
Python models show CodeLens above the class to generate views, reports, etc.
Some commands automatically detect:
The system detects Odoo version and adjusts:
tree vs list)Scaffolds automatically update __manifest__.py to include new files.
Templates use the File Headers system configured in settings. You can customize:
See Configuration for more details.