Skip to content

File creator ​

Create Odoo Python, XML and security files from the Explorer, with templates for views, reports, groups, rules, sequences, settings and cron jobs. The templates follow your Odoo version.

What you can do ​

Right-click a folder in the Explorer and open Assista Odoo.

Menu pathWhat it creates
Create Odoo File > Create Model File__init__.py, __manifest__.py, an Odoo model or an Odoo controller.
Create Odoo File > Create View FileAn XML file from one of ten templates.
Create Odoo File > Create Security FileA row in the access file of your Odoo version.
Create Odoo File > Add to __init__.pyAn import line in the parent __init__.py.
Create Odoo Report > Create PDF Report or Create HTML ReportA report XML file (the Report View template) with the report type set.

Add to __init__.py is also in the editor and Explorer context menus for Python files and folders. Add File to Manifest is a Command Palette command (see Tips and limits).

Get started ​

  1. Right-click a folder inside your module, such as models, views or security.
  2. Select Assista Odoo > Create Odoo File, then pick the entry.
  3. Choose a template, enter a file name and press Enter.

File name rules ​

  • Use lowercase letters and _ only. Digits, dots and spaces are rejected. Do not type the extension.
  • Model, controller and view files cannot be created at the module root or outside a module. Right-click a subfolder such as models or views.
  • If a file with the same name exists, the extension warns you and does not overwrite it.
  • Views open after creation. Python files are created without opening.

How the model is chosen ​

XML templates are written for a model taken from the file name. The extension strips a trailing _views, _view, _templates, _data, _report, _reports, _security or _menus, then looks for an indexed model whose name matches. If none matches, underscores become dots.

You enterModelIDs start with
sale_order_viewssale.ordersale_order
library_book_viewslibrary.booklibrary_book

Create the model first so the index can match it. Templates also contain placeholder fields (field1 to field4, line_ids, notes, total, your_field_setting). Replace them with your model's fields.

Python templates ​

Choose these under Create Model File.

TemplateWhat it creates
__init____init__.py with the encoding line and from . import , ready for you to finish. Needs no name.
__manifest____manifest__.py with name, version, category, summary, description, author, website, depends (base), data (the access file of your version and views/views.xml), license (LGPL-3), installable, application and auto_install. Needs no name.
Odoo Model<name>.py with a class named after the file, _name with dots (sale_order gives sale.order) and a name field.
Odoo Controller<name>.py with a MainController class and a public @http.route('/my_module/my_module') that returns "Hello, world".

After you create a model or controller, run Add to __init__.py so Odoo imports it.

XML templates ​

Choose these under Create View File. IDs use your file name, for example sale_order_view_form.

TemplateWhat it generates
Empty ViewAn empty <odoo> file with a comment.
Basic ViewA form view, a list view, a window action (list,form) with a help message, and a menu item.
Advanced ViewA form with header buttons (Confirm, Cancel) and a status bar, a title block, two-column group, a notebook with an editable lines list and notes, and chatter. Also a list with row decorations, a search view with filters and group by, a calendar, a kanban, a window action for all four views, and a root menu with a sub-menu.
Inherit ViewA form and a list inheriting module.original_form_view_id and module.original_list_view_id, with xpath examples for inside, attributes, replace, before and after. Replace the placeholder view IDs.
Report ViewAn ir.actions.report record bound to the model, and a QWeb document template based on web.external_layout with header fields and a lines table. The entry point iterates docs.
Security Group ViewA User group and a Manager group, where Manager implies User. See Version differences.
Security Rule ViewAccess rights for those two groups, and an own-records restriction for users. See Version differences.
Sequence ViewA noupdate ir.sequence with a year prefix and padding 5. A comment shows how to call it with next_by_code.
Settings ViewA settings app, block and setting inside base.res_config_settings_view_form, plus a window action for res.config.settings. Replace your_field_setting.
Cron Job ViewA noupdate ir.cron that runs model._cron_<name>() daily as the root user. Define that method on your model.

Create PDF Report and Create HTML Report use the Report View template, with the report type set to qweb-pdf or qweb-html, and the module name in report_name.

Version differences ​

The XML templates match the conventions of each Odoo version.

Security rules and record rules are ir.access records. Each has an operation (a subset of crud) and an optional domain.

xml
<record id="access_library_book_user" model="ir.access">
    <field name="name">library.book: user</field>
    <field name="model_id" ref="model_library_book"/>
    <field name="group_id" ref="group_library_book_user"/>
    <field name="operation">cru</field>
    <field name="domain">[('create_uid', '=', user.id)]</field>
</record>

Groups belong to a privilege (res.groups.privilege), and the Report View has no report_file field.

Create Security File ​

Use this to add an access row for a model without opening the CSV.

  1. Right-click the module's security folder.
  2. Select Assista Odoo > Create Odoo File > Create Security File.
  3. Enter the model's technical name, for example sale.order.

The extension creates the access file of your version with its header if it does not exist, adds a full-access row for internal users (base.group_user) and opens it.

Odoo versionFileHeader
18 and 19security/ir.model.access.csvid,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
20security/ir.access.csvid,name,model_id,group_id/id,operation,domain
csv
id,name,model_id,group_id/id,operation,domain
access_sale_order_user,sale.order user,sale.order,base.group_user,crud,

This command only works on the security folder of a module. It appends a row each time you run it, and does not add the file to the manifest. To avoid duplicates and update the manifest automatically, use Create Access Right from a model class. See Model tools.

Register a file ​

Add to __init__.py adds from . import <name> for a Python file or a folder to the __init__.py next to it. It creates __init__.py if it is missing, and does nothing if the import is already there. It works only for Python files and folders.

Add File to Manifest adds the current file to the manifest data list. Run it from the Command Palette (Ctrl+Shift+P, or Cmd+Shift+P on macOS).

Tips and limits ​

  • Add File to Manifest adds to the data list only, and needs that list to exist.
  • Generated XML files are not added to the manifest. Use Add File to Manifest, or list them yourself.
  • Check the Odoo version in the status bar before you create files. Click it to change the version.
  • To create views, a report or an access rule from an existing model class, use Model tools.

Next steps ​

Built by Cybrosys Technologies.