
Meet Pierre, lead developer at Nagios and an Odoo partner, as he introduces the Odoo development masterclass and outlines monthly updates, domains, website development, and daily developer life tips.
Set up a Linux lab to install Odoo from source, including git clone, python3 verification, Postgres setup, dependencies via apt and pip, and HTML to PDF for printing.
Launch Odoo by running the Odoo bin python script, specifying the add ons folder and database. Install the base model and access localhost:8069 to log in as admin.
Install Linux deb for IDE with sudo dpkg -i, enter password, then create a folder named my first app and open it in VS Code to prepare the module space.
Create a module in Odoo with manifest.py and init.py, organize into models, views, controllers, reports, templates, static, and security, then launch Odoo in debug mode and install.
Define a module with a manifest file that loads XML, CSS, and JavaScript, declares dependencies with the depends key, and organizes data and assets for backend, frontend, and common use.
Update the manifest and add an init with my first model.py, define a class inheriting from models.model, run -u, and note automatic fields like create and last update.
Import fields and create model attributes in Odoo using char, text, integer, float, boolean, date, date time, selection fields, html, binary, and image fields; then add them to a view.
Import the xml file containing Odoo views, create a form view under ir.ui.view, and use sheet and groups to organize fields like name and architecture for my first model.
Create a menu to access a view by naming it and assigning an xml id. Nest submenus with actions and update odoo to address an external id not found.
Create a new window action linked to the menu item, specify the res model and form view, then upgrade the app and set up model security.
Add minimal security to the IoT model by creating a security IAM model access CSV with read, write, create and unlink permissions, then load it via the manifest.
Learn how a form view manages a single record with grouped layouts and notebooks, add fields and headers, use smart buttons and FontAwesome icons, and reload changes with dev XML.
Create a tree view to overview records, enable in-place editing with the tree tag, configure the model and view, and use filters and group bys to organize data.
Create a search view in odoo by defining search fields, filters, and group by in an XML file, enabling name search, domain filters, and grouped results.
Learn how to work with advanced relational fields in Odoo by creating a new model and implementing many-to-one, many-to-many, and one-to-many relationships, including on-the-fly record creation and UI widgets.
Apply on change, compute, depends, and constraints in Odoo to react to field changes, compute a boolean value, store values, and raise user errors when constraints fail.
Explore how to work with odoo models in the shell using browse, search, sorted, filtered, and mapped to query and retrieve records.
Create a wizard as a transient model with a name field, then return an action dictionary to open a popup form view and apply changes to the current record.
Define abstract models as Python objects used by other models. Reuse them as mixins through inheritance, since they are not stored in the database and not directly accessed by Odoo.
Learn how to enable chatter and activity on an Odoo model by inheriting mail thread and mail.activity.mixing, configuring form views, and ensuring mail dependency to access messages, followers, and activities.
Configure ir.cron and client and server actions to automate tasks on a schedule. Build a data folder with an icon XML, update the manifest, and set interval numbers.
Learn to create server actions (ir.actions.server) for form and tree views in Odoo, define the record with id, model, binding, and code, and use action equals to open a wizard.
Explore front end development in Odoo by installing the website module, wiring up a controller with a route, and rendering a template to restore the web layout.
Pass a data dictionary to an Odoo template, reference keys with tsk, and render dynamic content using if, elif, else and for loops, including a Fibonacci example.
Define your first report by creating an action report bound to a model with an XML header. Expect a print error due to a minimum variable template, covered next.
Develop a pdf report in odoo by looping over records, using a first model document template, and applying a web external layout with header and footer and document layout.
Extend Bayes Odoo modules by inheriting the sales order model, install the cell module, and add custom fields such as my custom date and my model id.
Learn to inherit an Odoo view by creating a views file, using external id and model, insert a new field after the quotation template with XPath and set priority.
Change the compute behavior of an Odoo field by inheriting from Silverline, overriding compute name, using super to reuse base logic, or disable pre-compute to make it non computed.
Install the website sale app and add it to the manifest. Import the controller, inherit the shop function, and create a new route /my shop that returns the original behavior.
Inherit Odoo report templates to customize sale order documents by editing XML with XPath, adding an information block, and conditionally displaying a custom date for HTML and PDF outputs.
Create and manage groups in Odoo to control user access, define access rights, establish hierarchy with implied ids, and apply group-based permissions via csv import.
Learn to implement ir.rule based access in the Odoo development masterclass by loading higher rules xml into the manifest and defining rules with model, groups, and domain filters.
Use groups to restrict access with the manager group, hiding a button, the project name, and a tab, and a one-to-many field; reveal them by changing access rights.
Learn how to check if the connected user has a specific group in an Odoo model, using not in to raise a user error when the group is missing.
Learn how to add a systray element in Odoo 17 by building a module, configuring a venv, loading xml and js, and displaying a joke from the Chuck Norris API.
Create a custom field widget for Odoo by building a random number field, registering it in the fields registry, and wiring a simple xml and javascript module.
Build a small Owl dashboard by converting a backend action into an Owl component, loading partners and contacts from the ORM, and displaying them as cards with navigation and scrolling.
This course will cover all the aspects of Odoo in general. Module from scratch (models, views, security, reports, controllers, frontend development, ...) and inheritance will be explained.
Then, I'll update this course once a month with an in-depth lecture about a subject.
You can vote for the next subject by adding me on LinkedIn and answer the Poll that will appear every month.
The first in-depth lecture will be about Odoo 17 (in January 2024), it's new features, and removed features, since Odoo 16.
Then, I will let you vote for some subject, or you can even give your own ideas ! It could be: Website Development, Domains in depth, Records in depth, Reports in depth, more information about certain views, create a full module from A to Z (you'd give me the module's idea). We can also organize Q&A session as Webinars, so that you can ask me in advance all questions you want, and I'll answer them live with code examples etc.
You can also contact me if you have troubles with your Odoo code. If it's very specific, I'll help you directly. If it's something that could be of interest for most people learning Odoo, I will do a new chapter in the Course (for example, Learner's Corner, where I'll add all answers to your questions).
I will also, here and there, add "Tips and Tricks used in my daily developer's life", that are Odoo trick I had to use as workaround when something wasn't easy to do.
All this will make this course an essential to follow. It will help you get started, and then have deep knowledge about everything Odoo has to offer.
See you there !