Migrate views to Odoo 17/18 syntax; fix pre-existing XML blockers

- Convert all 124 attrs="{...}" across 13 view files to direct Odoo 17/18
  attributes (invisible/readonly/required with Python expressions); prefix-domain
  OR/AND/NOT and operators handled (e.g. "(is_overdue or days_until_due > 7) and completed")
- Fix pre-existing XML errors that blocked module load on any version:
  - Replace invalid   HTML entity with   in 4 files (reports + portal)
  - Merge duplicate style= attributes (3 spots in website_intake_templates)
  - Replace 3 illegal <t t-if> embedded in class="" attributes with t-attf-class
- All 44 module XML files now parse clean

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-29 14:15:25 +00:00
parent 6f6129550e
commit 983964c6d2
18 changed files with 156 additions and 156 deletions

View File

@@ -40,26 +40,26 @@
</group>
</group>
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('attorney_referral_flag', '=', False)]}">
invisible="not attorney_referral_flag">
<strong>⚠️ ATTORNEY REFERRAL RECOMMENDED</strong><br/>
<field name="attorney_referral_reason" readonly="1" nolabel="1"/>
</div>
<separator string="Strategy Memo"
attrs="{'invisible': [('analysis_type', '!=', 'attorney')]}"/>
invisible="analysis_type != 'attorney'"/>
<field name="strategy_memo" widget="html" readonly="1" nolabel="1"
attrs="{'invisible': [('analysis_type', '!=', 'attorney')]}"/>
invisible="analysis_type != 'attorney'"/>
<separator string="Risk Narrative"
attrs="{'invisible': [('risk_narrative', '=', False)]}"/>
invisible="not risk_narrative"/>
<field name="risk_narrative" readonly="1" nolabel="1"
attrs="{'invisible': [('risk_narrative', '=', False)]}"/>
invisible="not risk_narrative"/>
<separator string="Plain English Summary (English)"/>
<field name="plain_english_summary" readonly="1" nolabel="1"/>
<separator string="Plain English Summary (Español)"/>
<field name="plain_english_summary_es" readonly="1" nolabel="1"/>
<separator string="Cited Statutes"
attrs="{'invisible': [('cited_statute_ids', '=', [])]}"/>
invisible="not cited_statute_ids"/>
<field name="cited_statute_ids" widget="many2many_tags" readonly="1" nolabel="1"
attrs="{'invisible': [('cited_statute_ids', '=', [])]}"/>
invisible="not cited_statute_ids"/>
<separator string="Matched Case Law"/>
<field name="matched_caselaw_ids" widget="many2many_tags" readonly="1" nolabel="1"/>
</sheet>