Skip to content

Airproof tutorial: Loading order issue causes installation failure #981

@omarait-mlouk

Description

@omarait-mlouk

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

  1. Clone the tutorial repository
  2. Navigate to the Airproof website module
  3. Try to install the website_airproof module
  4. 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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions