From c1b5947b7cd158bbf98a22a5172a3afae61c5e45 Mon Sep 17 00:00:00 2001 From: tocmo0nlord Date: Sat, 30 May 2026 03:28:55 +0000 Subject: [PATCH] Make module installable on stock Odoo 18 (verified via test DB install) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Caught and fixed by running an actual install on a throwaway DB: - Strip 29 # comment lines from ir.model.access.csv (Odoo CSV loader treats them as malformed rows → IndexError); 79 data rows preserved - Remove obsolete ir.cron.numbercall field (removed in Odoo 17+) from 4 cron records in fl_deadline_rules.xml - Rename across 26 sites; inside x2many inline views Odoo 18 no longer recognizes , which made it fall back to the outer model and reject inner fields ("Field 'partner_id' does not exist in model 'fl.case'") - Add store=True to non-stored computed fields referenced by search filters, which Odoo 18 now rejects as unsearchable: - fl.case: overdue_deadline_count, next_deadline_label - fl.deposition: notice_valid Module loads cleanly: 31 fl.* models registered, no errors. Co-Authored-By: Claude Sonnet 4.6 --- .../data/fl_deadline_rules.xml | 4 --- activeblue_familylaw/models/fl_case.py | 4 +-- activeblue_familylaw/models/fl_deposition.py | 2 +- .../security/ir.model.access.csv | 29 --------------- .../views/fl_analysis_views.xml | 4 +-- activeblue_familylaw/views/fl_case_views.xml | 36 +++++++++---------- .../views/fl_caselaw_views.xml | 4 +-- activeblue_familylaw/views/fl_child_views.xml | 4 +-- .../views/fl_conflict_check_views.xml | 4 +-- .../views/fl_deadline_views.xml | 4 +-- .../views/fl_deposition_views.xml | 4 +-- .../views/fl_discovery_views.xml | 4 +-- .../views/fl_efiling_views.xml | 4 +-- .../views/fl_fee_waiver_views.xml | 4 +-- .../views/fl_hearing_views.xml | 4 +-- activeblue_familylaw/views/fl_party_views.xml | 8 ++--- .../views/fl_statute_views.xml | 8 ++--- .../views/fl_support_views.xml | 8 ++--- .../views/fl_timesheet_views.xml | 4 +-- 19 files changed, 55 insertions(+), 88 deletions(-) diff --git a/activeblue_familylaw/data/fl_deadline_rules.xml b/activeblue_familylaw/data/fl_deadline_rules.xml index cc701e2..42ee221 100644 --- a/activeblue_familylaw/data/fl_deadline_rules.xml +++ b/activeblue_familylaw/data/fl_deadline_rules.xml @@ -14,7 +14,6 @@ model._cron_deadline_alerts() 1 days - -1 True @@ -27,7 +26,6 @@ model._cron_check_default_judgment() 1 days - -1 True @@ -40,7 +38,6 @@ model._cron_emancipation_alerts() 1 days - -1 True @@ -53,7 +50,6 @@ model._cron_discovery_overdue_alerts() 1 days - -1 True diff --git a/activeblue_familylaw/models/fl_case.py b/activeblue_familylaw/models/fl_case.py index 7149442..b879b91 100644 --- a/activeblue_familylaw/models/fl_case.py +++ b/activeblue_familylaw/models/fl_case.py @@ -353,11 +353,11 @@ class FlCase(models.Model): ) next_deadline_label = fields.Char( string='Next Deadline Description', - compute='_compute_next_deadline' + compute='_compute_next_deadline', store=True ) overdue_deadline_count = fields.Integer( string='Overdue Deadlines', - compute='_compute_next_deadline' + compute='_compute_next_deadline', store=True ) # ══════════════════════════════════════════════════════════════════════ diff --git a/activeblue_familylaw/models/fl_deposition.py b/activeblue_familylaw/models/fl_deposition.py index 32f868b..1000c2b 100644 --- a/activeblue_familylaw/models/fl_deposition.py +++ b/activeblue_familylaw/models/fl_deposition.py @@ -49,7 +49,7 @@ class FlDeposition(models.Model): ) notice_valid = fields.Boolean( string='Notice Valid (≥10 days)', - compute='_compute_notice_info', + compute='_compute_notice_info', store=True, help='FL 1.310(b): At least 10 days notice required' ) notice_warning = fields.Char( diff --git a/activeblue_familylaw/security/ir.model.access.csv b/activeblue_familylaw/security/ir.model.access.csv index 6842f9c..0393f7e 100644 --- a/activeblue_familylaw/security/ir.model.access.csv +++ b/activeblue_familylaw/security/ir.model.access.csv @@ -1,109 +1,80 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -# ── fl.case.stage ───────────────────────────────────────────────────────────── access_fl_case_stage_admin,fl.case.stage admin,model_fl_case_stage,group_admin,1,1,1,1 access_fl_case_stage_paralegal,fl.case.stage paralegal,model_fl_case_stage,group_paralegal,1,0,0,0 access_fl_case_stage_petitioner,fl.case.stage petitioner,model_fl_case_stage,group_portal_petitioner,1,0,0,0 -# ── fl.case ────────────────────────────────────────────────────────────────── access_fl_case_admin,fl.case admin,model_fl_case,group_admin,1,1,1,1 access_fl_case_paralegal,fl.case paralegal,model_fl_case,group_paralegal,1,1,1,0 access_fl_case_petitioner,fl.case petitioner portal,model_fl_case,group_portal_petitioner,1,1,0,0 access_fl_case_respondent,fl.case respondent portal,model_fl_case,group_portal_respondent,1,0,0,0 -# ── fl.party ───────────────────────────────────────────────────────────────── access_fl_party_admin,fl.party admin,model_fl_party,group_admin,1,1,1,1 access_fl_party_paralegal,fl.party paralegal,model_fl_party,group_paralegal,1,1,1,0 access_fl_party_petitioner,fl.party petitioner portal,model_fl_party,group_portal_petitioner,1,1,0,0 access_fl_party_respondent,fl.party respondent portal,model_fl_party,group_portal_respondent,1,1,0,0 -# ── fl.income.source ───────────────────────────────────────────────────────── access_fl_income_source_admin,fl.income.source admin,model_fl_income_source,group_admin,1,1,1,1 access_fl_income_source_paralegal,fl.income.source paralegal,model_fl_income_source,group_paralegal,1,1,1,0 access_fl_income_source_petitioner,fl.income.source petitioner,model_fl_income_source,group_portal_petitioner,1,1,0,0 -# ── fl.child ───────────────────────────────────────────────────────────────── access_fl_child_admin,fl.child admin,model_fl_child,group_admin,1,1,1,1 access_fl_child_paralegal,fl.child paralegal,model_fl_child,group_paralegal,1,1,1,0 access_fl_child_petitioner,fl.child petitioner portal,model_fl_child,group_portal_petitioner,1,1,0,0 access_fl_child_respondent,fl.child respondent portal,model_fl_child,group_portal_respondent,1,0,0,0 -# ── fl.support.calculation ─────────────────────────────────────────────────── access_fl_support_calc_admin,fl.support.calculation admin,model_fl_support_calculation,group_admin,1,1,1,1 access_fl_support_calc_paralegal,fl.support.calculation paralegal,model_fl_support_calculation,group_paralegal,1,1,1,0 access_fl_support_calc_petitioner,fl.support.calculation petitioner,model_fl_support_calculation,group_portal_petitioner,1,1,1,0 access_fl_support_calc_respondent,fl.support.calculation respondent,model_fl_support_calculation,group_portal_respondent,1,0,0,0 -# ── fl.support.schedule.entry ──────────────────────────────────────────────── access_fl_support_schedule_admin,fl.support.schedule.entry admin,model_fl_support_schedule_entry,group_admin,1,1,1,1 access_fl_support_schedule_paralegal,fl.support.schedule.entry paralegal,model_fl_support_schedule_entry,group_paralegal,1,0,0,0 access_fl_support_schedule_petitioner,fl.support.schedule.entry petitioner,model_fl_support_schedule_entry,group_portal_petitioner,1,0,0,0 -# ── fl.statute ─────────────────────────────────────────────────────────────── access_fl_statute_admin,fl.statute admin,model_fl_statute,group_admin,1,1,1,1 access_fl_statute_paralegal,fl.statute paralegal,model_fl_statute,group_paralegal,1,0,0,0 access_fl_statute_petitioner,fl.statute petitioner,model_fl_statute,group_portal_petitioner,1,0,0,0 -# ── fl.issue.tag ───────────────────────────────────────────────────────────── access_fl_issue_tag_admin,fl.issue.tag admin,model_fl_issue_tag,group_admin,1,1,1,1 access_fl_issue_tag_paralegal,fl.issue.tag paralegal,model_fl_issue_tag,group_paralegal,1,0,0,0 access_fl_issue_tag_petitioner,fl.issue.tag petitioner,model_fl_issue_tag,group_portal_petitioner,1,0,0,0 -# ── fl.deadline ────────────────────────────────────────────────────────────── access_fl_deadline_admin,fl.deadline admin,model_fl_deadline,group_admin,1,1,1,1 access_fl_deadline_paralegal,fl.deadline paralegal,model_fl_deadline,group_paralegal,1,1,1,0 access_fl_deadline_petitioner,fl.deadline petitioner,model_fl_deadline,group_portal_petitioner,1,0,0,0 -# ── fl.hearing ─────────────────────────────────────────────────────────────── access_fl_hearing_admin,fl.hearing admin,model_fl_hearing,group_admin,1,1,1,1 access_fl_hearing_paralegal,fl.hearing paralegal,model_fl_hearing,group_paralegal,1,1,1,0 access_fl_hearing_petitioner,fl.hearing petitioner,model_fl_hearing,group_portal_petitioner,1,0,0,0 -# ── fl.deposition ──────────────────────────────────────────────────────────── access_fl_deposition_admin,fl.deposition admin,model_fl_deposition,group_admin,1,1,1,1 access_fl_deposition_paralegal,fl.deposition paralegal,model_fl_deposition,group_paralegal,1,1,1,0 access_fl_deposition_petitioner,fl.deposition petitioner,model_fl_deposition,group_portal_petitioner,1,0,0,0 -# ── fl.discovery ───────────────────────────────────────────────────────────── access_fl_discovery_admin,fl.discovery admin,model_fl_discovery,group_admin,1,1,1,1 access_fl_discovery_paralegal,fl.discovery paralegal,model_fl_discovery,group_paralegal,1,1,1,0 access_fl_discovery_petitioner,fl.discovery petitioner,model_fl_discovery,group_portal_petitioner,1,0,0,0 -# ── fl.document ────────────────────────────────────────────────────────────── access_fl_document_admin,fl.document admin,model_fl_document,group_admin,1,1,1,1 access_fl_document_paralegal,fl.document paralegal,model_fl_document,group_paralegal,1,1,1,0 access_fl_document_petitioner,fl.document petitioner,model_fl_document,group_portal_petitioner,1,0,0,0 -# ── fl.caselaw ─────────────────────────────────────────────────────────────── access_fl_caselaw_admin,fl.caselaw admin,model_fl_caselaw,group_admin,1,1,1,1 access_fl_caselaw_paralegal,fl.caselaw paralegal,model_fl_caselaw,group_paralegal,1,1,0,0 access_fl_caselaw_petitioner,fl.caselaw petitioner,model_fl_caselaw,group_portal_petitioner,1,0,0,0 -# ── fl.analysis ────────────────────────────────────────────────────────────── access_fl_analysis_admin,fl.analysis admin,model_fl_analysis,group_admin,1,1,1,1 access_fl_analysis_paralegal,fl.analysis paralegal,model_fl_analysis,group_paralegal,1,0,0,0 access_fl_analysis_petitioner,fl.analysis petitioner,model_fl_analysis,group_portal_petitioner,1,0,0,0 -# ── fl.argument ────────────────────────────────────────────────────────────── access_fl_argument_admin,fl.argument admin,model_fl_argument,group_admin,1,1,1,1 access_fl_argument_paralegal,fl.argument paralegal,model_fl_argument,group_paralegal,1,1,0,0 -# ── fl.fee.waiver ──────────────────────────────────────────────────────────── access_fl_fee_waiver_admin,fl.fee.waiver admin,model_fl_fee_waiver,group_admin,1,1,1,1 access_fl_fee_waiver_paralegal,fl.fee.waiver paralegal,model_fl_fee_waiver,group_paralegal,1,1,1,0 access_fl_fee_waiver_petitioner,fl.fee.waiver petitioner,model_fl_fee_waiver,group_portal_petitioner,1,1,1,0 -# ── fl.income.withholding ───────────────────────────────────────────────────── access_fl_income_withholding_admin,fl.income.withholding admin,model_fl_income_withholding,group_admin,1,1,1,1 access_fl_income_withholding_paralegal,fl.income.withholding paralegal,model_fl_income_withholding,group_paralegal,1,1,1,0 access_fl_income_withholding_petitioner,fl.income.withholding petitioner,model_fl_income_withholding,group_portal_petitioner,1,0,0,0 -# ── fl.conflict.check ──────────────────────────────────────────────────────── access_fl_conflict_check_admin,fl.conflict.check admin,model_fl_conflict_check,group_admin,1,1,1,1 access_fl_conflict_check_paralegal,fl.conflict.check paralegal,model_fl_conflict_check,group_paralegal,1,1,1,0 -# ── fl.timesheet ───────────────────────────────────────────────────────────── access_fl_timesheet_admin,fl.timesheet admin,model_fl_timesheet,group_admin,1,1,1,1 access_fl_timesheet_paralegal,fl.timesheet paralegal,model_fl_timesheet,group_paralegal,1,1,1,0 -# ── account.analytic.line (timesheet wraps it — ensure non-admins can post) ─── access_account_analytic_line_fl_admin,account.analytic.line fl admin,analytic.model_account_analytic_line,group_admin,1,1,1,1 access_account_analytic_line_fl_paralegal,account.analytic.line fl paralegal,analytic.model_account_analytic_line,group_paralegal,1,1,1,0 -# ── fl.efiling.submission ──────────────────────────────────────────────────── access_fl_efiling_submission_admin,fl.efiling.submission admin,model_fl_efiling_submission,group_admin,1,1,1,1 access_fl_efiling_submission_paralegal,fl.efiling.submission paralegal,model_fl_efiling_submission,group_paralegal,1,1,1,0 -# ── fl.efiling.wizard ──────────────────────────────────────────────────────── access_fl_efiling_wizard_admin,fl.efiling.wizard admin,model_fl_efiling_wizard,group_admin,1,1,1,1 access_fl_efiling_wizard_paralegal,fl.efiling.wizard paralegal,model_fl_efiling_wizard,group_paralegal,1,1,1,1 -# ── fl.intake.wizard ───────────────────────────────────────────────────────── access_fl_intake_wizard_admin,fl.intake.wizard admin,model_fl_intake_wizard,group_admin,1,1,1,1 access_fl_intake_wizard_paralegal,fl.intake.wizard paralegal,model_fl_intake_wizard,group_paralegal,1,1,1,1 -# ── fl.analysis.wizard ─────────────────────────────────────────────────────── access_fl_analysis_wizard_admin,fl.analysis.wizard admin,model_fl_analysis_wizard,group_admin,1,1,1,1 -# ── fl.generate.packet.wizard ──────────────────────────────────────────────── access_fl_generate_packet_wizard_admin,fl.generate.packet.wizard admin,model_fl_generate_packet_wizard,group_admin,1,1,1,1 access_fl_generate_packet_wizard_paralegal,fl.generate.packet.wizard paralegal,model_fl_generate_packet_wizard,group_paralegal,1,1,1,1 -# ── fl.discovery.suggest.wizard ────────────────────────────────────────────── access_fl_discovery_suggest_wizard_admin,fl.discovery.suggest.wizard admin,model_fl_discovery_suggest_wizard,group_admin,1,1,1,1 access_fl_discovery_suggest_wizard_paralegal,fl.discovery.suggest.wizard paralegal,model_fl_discovery_suggest_wizard,group_paralegal,1,1,1,1 -# ── fl.discovery.suggest.line ──────────────────────────────────────────────── access_fl_discovery_suggest_line_admin,fl.discovery.suggest.line admin,model_fl_discovery_suggest_line,group_admin,1,1,1,1 access_fl_discovery_suggest_line_paralegal,fl.discovery.suggest.line paralegal,model_fl_discovery_suggest_line,group_paralegal,1,1,1,1 diff --git a/activeblue_familylaw/views/fl_analysis_views.xml b/activeblue_familylaw/views/fl_analysis_views.xml index 8a4cdd8..76a633b 100644 --- a/activeblue_familylaw/views/fl_analysis_views.xml +++ b/activeblue_familylaw/views/fl_analysis_views.xml @@ -6,7 +6,7 @@ fl.analysis.tree fl.analysis - + @@ -15,7 +15,7 @@ - + diff --git a/activeblue_familylaw/views/fl_case_views.xml b/activeblue_familylaw/views/fl_case_views.xml index bd38afe..9d5bab1 100644 --- a/activeblue_familylaw/views/fl_case_views.xml +++ b/activeblue_familylaw/views/fl_case_views.xml @@ -131,14 +131,14 @@ - + - + @@ -167,7 +167,7 @@ invisible="not parenting_class_required"/> - + @@ -175,7 +175,7 @@ - + @@ -230,7 +230,7 @@ - @@ -240,7 +240,7 @@ - + @@ -248,13 +248,13 @@ - + - + @@ -282,7 +282,7 @@ invisible="not attorney_memo_id"/> - + @@ -290,7 +290,7 @@ - + @@ -320,16 +320,16 @@ groups="activeblue_familylaw.group_admin,activeblue_familylaw.group_paralegal"/> - + - + - @@ -339,7 +339,7 @@ - + @@ -356,7 +356,7 @@ - @@ -367,7 +367,7 @@ - + @@ -389,7 +389,7 @@ fl.case.tree fl.case - @@ -406,7 +406,7 @@ invisible="case_type != 'modification'"/> - + diff --git a/activeblue_familylaw/views/fl_caselaw_views.xml b/activeblue_familylaw/views/fl_caselaw_views.xml index 01aeaf9..5cde70f 100644 --- a/activeblue_familylaw/views/fl_caselaw_views.xml +++ b/activeblue_familylaw/views/fl_caselaw_views.xml @@ -6,14 +6,14 @@ fl.caselaw.tree fl.caselaw - + - + diff --git a/activeblue_familylaw/views/fl_child_views.xml b/activeblue_familylaw/views/fl_child_views.xml index d5f3b62..c864c86 100644 --- a/activeblue_familylaw/views/fl_child_views.xml +++ b/activeblue_familylaw/views/fl_child_views.xml @@ -55,7 +55,7 @@ fl.child.tree fl.child - @@ -66,7 +66,7 @@ - + diff --git a/activeblue_familylaw/views/fl_conflict_check_views.xml b/activeblue_familylaw/views/fl_conflict_check_views.xml index 629567c..774ed34 100644 --- a/activeblue_familylaw/views/fl_conflict_check_views.xml +++ b/activeblue_familylaw/views/fl_conflict_check_views.xml @@ -69,7 +69,7 @@ fl.conflict.check.tree fl.conflict.check - @@ -77,7 +77,7 @@ - + diff --git a/activeblue_familylaw/views/fl_deadline_views.xml b/activeblue_familylaw/views/fl_deadline_views.xml index 4087529..cfe5e4d 100644 --- a/activeblue_familylaw/views/fl_deadline_views.xml +++ b/activeblue_familylaw/views/fl_deadline_views.xml @@ -9,7 +9,7 @@ fl.deadline.tree fl.deadline - - + diff --git a/activeblue_familylaw/views/fl_deposition_views.xml b/activeblue_familylaw/views/fl_deposition_views.xml index 815580c..6fe1fdb 100644 --- a/activeblue_familylaw/views/fl_deposition_views.xml +++ b/activeblue_familylaw/views/fl_deposition_views.xml @@ -9,7 +9,7 @@ fl.deposition.tree fl.deposition - - + diff --git a/activeblue_familylaw/views/fl_discovery_views.xml b/activeblue_familylaw/views/fl_discovery_views.xml index 2413045..5cad8ae 100644 --- a/activeblue_familylaw/views/fl_discovery_views.xml +++ b/activeblue_familylaw/views/fl_discovery_views.xml @@ -9,7 +9,7 @@ fl.discovery.tree fl.discovery - - + diff --git a/activeblue_familylaw/views/fl_efiling_views.xml b/activeblue_familylaw/views/fl_efiling_views.xml index 63acf7a..cc10812 100644 --- a/activeblue_familylaw/views/fl_efiling_views.xml +++ b/activeblue_familylaw/views/fl_efiling_views.xml @@ -82,7 +82,7 @@ fl.efiling.submission.tree fl.efiling.submission - @@ -93,7 +93,7 @@ - + diff --git a/activeblue_familylaw/views/fl_fee_waiver_views.xml b/activeblue_familylaw/views/fl_fee_waiver_views.xml index 620e75a..69f8a36 100644 --- a/activeblue_familylaw/views/fl_fee_waiver_views.xml +++ b/activeblue_familylaw/views/fl_fee_waiver_views.xml @@ -71,7 +71,7 @@ fl.fee.waiver.tree fl.fee.waiver - + @@ -79,7 +79,7 @@ - + diff --git a/activeblue_familylaw/views/fl_hearing_views.xml b/activeblue_familylaw/views/fl_hearing_views.xml index 69e372d..b661d5b 100644 --- a/activeblue_familylaw/views/fl_hearing_views.xml +++ b/activeblue_familylaw/views/fl_hearing_views.xml @@ -9,7 +9,7 @@ fl.hearing.tree fl.hearing - - + diff --git a/activeblue_familylaw/views/fl_party_views.xml b/activeblue_familylaw/views/fl_party_views.xml index 8640be5..31b0ffa 100644 --- a/activeblue_familylaw/views/fl_party_views.xml +++ b/activeblue_familylaw/views/fl_party_views.xml @@ -45,13 +45,13 @@ - + - + @@ -109,7 +109,7 @@ fl.party.tree fl.party - + @@ -118,7 +118,7 @@ - + diff --git a/activeblue_familylaw/views/fl_statute_views.xml b/activeblue_familylaw/views/fl_statute_views.xml index 579c1c7..c7d5132 100644 --- a/activeblue_familylaw/views/fl_statute_views.xml +++ b/activeblue_familylaw/views/fl_statute_views.xml @@ -6,12 +6,12 @@ fl.statute.tree fl.statute - + - + @@ -42,12 +42,12 @@ fl.issue.tag.tree fl.issue.tag - + - + diff --git a/activeblue_familylaw/views/fl_support_views.xml b/activeblue_familylaw/views/fl_support_views.xml index 4417d06..83c542a 100644 --- a/activeblue_familylaw/views/fl_support_views.xml +++ b/activeblue_familylaw/views/fl_support_views.xml @@ -120,7 +120,7 @@ fl.support.calculation.tree fl.support.calculation - + @@ -129,7 +129,7 @@ - + @@ -140,14 +140,14 @@ fl.support.schedule.entry.tree fl.support.schedule.entry - + - + diff --git a/activeblue_familylaw/views/fl_timesheet_views.xml b/activeblue_familylaw/views/fl_timesheet_views.xml index dbba120..a7333d0 100644 --- a/activeblue_familylaw/views/fl_timesheet_views.xml +++ b/activeblue_familylaw/views/fl_timesheet_views.xml @@ -6,7 +6,7 @@ fl.timesheet.tree fl.timesheet - @@ -18,7 +18,7 @@ - +