-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Description
Bug Report: Airproof Tutorial Loading Order Issue
Description
The Airproof website tutorial has a loading order issue in the __manifest__.py
file that causes module installation to fail with a ParseError.
Steps to Reproduce
- Clone the tutorial repository
- Navigate to the Airproof website module
- Try to install the
website_airproof
module - Installation fails with ParseError
Error Message
odoo.tools.convert.ParseError: while parsing None:13, somewhere inside
<data inherit_id="website_airproof.s_airproof_carousel" primary="True">
<xpath expr="." position="attributes">
<attribute name="t-name">website_airproof.new_page_template_airproof_services_s_airproof_carousel</attribute>
</xpath>
</data>
ValueError: External ID not found in the system: website_airproof.s_airproof_carousel
Root Cause
The new_page_templates
configuration in __manifest__.py
references the s_airproof_carousel
template, but the template file views/snippets/s_airproof_carousel.xml
is loaded too late in the data sequence.
When Odoo processes the new_page_templates
, it tries to create inheritance templates immediately, but the base template hasn't been loaded into the database yet.
Expected Behavior
The module should install without errors and be usable for following the tutorial.
Impact
- Blocks developers from completing the Airproof tutorial
- Error message is not immediately clear about the root cause
- Affects learning experience for new Odoo developers
Proposed Fix
Move 'views/snippets/options.xml'
and 'views/snippets/s_airproof_carousel.xml'
earlier in the data
list in __manifest__.py
, before any other files that might reference this template.
Environment
- Affected Odoo versions: 18.0, 19.0
- Tutorial: Airproof website theme tutorial
- Repository: odoo/tutorials
Additional Notes
This is a simple fix but not obvious for beginners following the tutorial. The loading order in Odoo manifests is critical when templates inherit from each other or are referenced in configurations like new_page_templates
.