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

@@ -17,7 +17,7 @@
groups="activeblue_familylaw.group_admin,activeblue_familylaw.group_paralegal"/>
<button name="action_open_support_calculator" string="Open Calculator"
type="object"
attrs="{'invisible': [('case_type', 'not in', ['modification','dissolution_children','paternity','custody_modification'])]}"/>
invisible="case_type not in ['modification', 'dissolution_children', 'paternity', 'custody_modification']"/>
<button name="action_run_conflict_check" string="Run Conflict Check"
type="object"
groups="activeblue_familylaw.group_admin,activeblue_familylaw.group_paralegal"/>
@@ -31,7 +31,7 @@
<!-- Attorney Referral Banner -->
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('attorney_referral_flag', '=', False)]}">
invisible="not attorney_referral_flag">
<strong>⚠️ ATTORNEY REFERRAL RECOMMENDED</strong>
— This case has been flagged as complex or high-risk for pro se representation.
Strongly consider consulting with a family law attorney.
@@ -40,7 +40,7 @@
<!-- Conflict of Interest Banner -->
<div class="alert alert-danger" role="alert"
attrs="{'invisible': ['|', ('conflict_check_passed', '=', True), ('conflict_check_id', '=', False)]}">
invisible="(conflict_check_passed or not conflict_check_id)">
<strong>🚩 CONFLICT OF INTEREST — UNRESOLVED</strong>
— A conflict check has flagged matching parties on other open cases.
This case cannot advance past Intake until the conflict is overridden by an administrator.
@@ -52,7 +52,7 @@
<!-- DV Safety Note -->
<field name="dv_safety_note" widget="html"
attrs="{'invisible': [('domestic_violence_flag', '=', False)]}"/>
invisible="not domestic_violence_flag"/>
<sheet>
<div class="oe_button_box" name="button_box">
@@ -62,7 +62,7 @@
</button>
<button class="oe_stat_button" type="object"
name="action_open_support_calculator" icon="fa-calculator"
attrs="{'invisible': [('case_type', 'not in', ['modification','dissolution_children','paternity','custody_modification'])]}">
invisible="case_type not in ['modification', 'dissolution_children', 'paternity', 'custody_modification']">
<span class="o_stat_text">Calculator</span>
</button>
</div>
@@ -89,11 +89,11 @@
<field name="filing_date"/>
<field name="service_date"/>
<field name="last_order_date"
attrs="{'invisible': [('case_type', 'not in', ['modification','alimony_modification','custody_modification'])]}"/>
invisible="case_type not in ['modification', 'alimony_modification', 'custody_modification']"/>
<field name="marriage_date"
attrs="{'invisible': [('case_type', 'not in', ['dissolution_children','dissolution_no_children','alimony_modification'])]}"/>
invisible="case_type not in ['dissolution_children', 'dissolution_no_children', 'alimony_modification']"/>
<field name="years_of_marriage"
attrs="{'invisible': [('case_type', 'not in', ['dissolution_children','dissolution_no_children','alimony_modification'])]}"/>
invisible="case_type not in ['dissolution_children', 'dissolution_no_children', 'alimony_modification']"/>
<field name="retroactivity_date" readonly="1"/>
</group>
</group>
@@ -109,7 +109,7 @@
placeholder="Leave blank if pro se"/>
<field name="petitioner_fl_resident_since"/>
<field name="residency_warning" readonly="1"
attrs="{'invisible': [('petitioner_fl_resident_since', '=', False)]}"/>
invisible="not petitioner_fl_resident_since"/>
</group>
<group string="Respondent">
<field name="respondent_id"/>
@@ -122,7 +122,7 @@
<group string="Safety Flags">
<field name="domestic_violence_flag"/>
<field name="dv_injunction_active"
attrs="{'invisible': [('domestic_violence_flag', '=', False)]}"/>
invisible="not domestic_violence_flag"/>
</group>
<group string="Conflict of Interest">
<field name="conflict_check_passed" readonly="1"/>
@@ -144,27 +144,27 @@
<!-- TAB 2: Children -->
<page string="Children" name="children"
attrs="{'invisible': [('case_type', 'in', ['dissolution_no_children','alimony_modification'])]}">
invisible="case_type in ['dissolution_no_children', 'alimony_modification']">
<group>
<field name="children_count" readonly="1"/>
<field name="has_minor_children" readonly="1"/>
</group>
<separator string="Parenting Class (FL 61.21)"
attrs="{'invisible': [('parenting_class_required', '=', False)]}"/>
<group attrs="{'invisible': [('parenting_class_required', '=', False)]}">
invisible="not parenting_class_required"/>
<group invisible="not parenting_class_required">
<group>
<field name="petitioner_parenting_class_done"/>
<field name="petitioner_parenting_class_date"
attrs="{'invisible': [('petitioner_parenting_class_done', '=', False)]}"/>
invisible="not petitioner_parenting_class_done"/>
</group>
<group>
<field name="respondent_parenting_class_done"/>
<field name="respondent_parenting_class_date"
attrs="{'invisible': [('respondent_parenting_class_done', '=', False)]}"/>
invisible="not respondent_parenting_class_done"/>
</group>
</group>
<field name="parenting_class_warning" readonly="1"
attrs="{'invisible': [('parenting_class_required', '=', False)]}"/>
invisible="not parenting_class_required"/>
<separator string="Children on Case"/>
<field name="child_ids">
<tree string="Children" editable="bottom">
@@ -181,7 +181,7 @@
<!-- TAB 3: Support & Threshold -->
<page string="Support Calculation" name="support"
attrs="{'invisible': [('case_type', 'not in', ['modification','dissolution_children','paternity','custody_modification'])]}">
invisible="case_type not in ['modification', 'dissolution_children', 'paternity', 'custody_modification']">
<group string="Current Order">
<field name="current_order_amount"/>
<field name="current_order_per_child"/>
@@ -195,18 +195,18 @@
string="Difference %" widget="percentage"/>
</group>
<group string="Modification Threshold Test (FL 61.30(1)(b))"
attrs="{'invisible': [('case_type', '!=', 'modification')]}">
invisible="case_type != 'modification'">
<field name="threshold_met" readonly="1"/>
<field name="substantial_change_basis"/>
<field name="substantial_change_detail"/>
</group>
<field name="threshold_result" widget="html" readonly="1"
attrs="{'invisible': [('case_type', '!=', 'modification')]}"/>
invisible="case_type != 'modification'"/>
</page>
<!-- TAB 4: Timesharing -->
<page string="Timesharing" name="timesharing"
attrs="{'invisible': [('case_type', 'not in', ['modification','dissolution_children','paternity','custody_modification'])]}">
invisible="case_type not in ['modification', 'dissolution_children', 'paternity', 'custody_modification']">
<group>
<group>
<field name="timesharing_changed"/>
@@ -275,11 +275,11 @@
type="object" class="btn-primary"
groups="activeblue_familylaw.group_admin"/>
<field name="attorney_memo_id" readonly="1"
attrs="{'invisible': [('attorney_memo_id', '=', False)]}"/>
invisible="not attorney_memo_id"/>
<field name="attorney_memo_html" widget="html" readonly="1" nolabel="1"
attrs="{'invisible': [('attorney_memo_id', '=', False)]}"/>
invisible="not attorney_memo_id"/>
<field name="attorney_risk_narrative" readonly="1"
attrs="{'invisible': [('attorney_memo_id', '=', False)]}"/>
invisible="not attorney_memo_id"/>
<separator string="All Analyses"/>
<field name="analysis_ids">
<tree string="Analyses">
@@ -302,7 +302,7 @@
<button name="action_create_fee_waiver"
string="Create Fee Waiver Application"
type="object" class="btn-secondary"
attrs="{'invisible': [('fee_waiver_id', '!=', False)]}"/>
invisible="fee_waiver_id"/>
</group>
<group string="Post-Order">
<field name="new_order_amount"/>
@@ -403,7 +403,7 @@
<field name="next_deadline_label" string="Next Deadline"/>
<field name="overdue_deadline_count" string="Overdue"/>
<field name="threshold_met"
attrs="{'invisible': [('case_type', '!=', 'modification')]}"/>
invisible="case_type != 'modification'"/>
<field name="attorney_referral_flag" widget="boolean_toggle"/>
<field name="domestic_violence_flag" widget="boolean_toggle"/>
</tree>