Phase 1: core models, security, seed data, and backend views

Implements full Phase 1 of the activeblue_familylaw Odoo 18 module:
- 17 Python models (fl.case, fl.party, fl.child, fl.support.calculation,
  fl.fee.waiver, fl.income.withholding, fl.deadline, fl.hearing,
  fl.deposition, fl.discovery, fl.document, fl.caselaw, fl.analysis,
  fl.ai.engine, fl.argument, fl.statute, fl.issue.tag) + hr.expense extension
- 3 wizard stubs (intake, analysis, generate-packet)
- Security: 4 groups (admin/paralegal/portal-petitioner/portal-respondent)
  + record rules scoping portal users to their own cases
- Seed data: issue tags, FL statutes, FL DCF support schedule, ir.sequence
- 13 backend view XML files with FL 61.30 worksheet, fee waiver
  eligibility banner, DV safety resources, emancipation alerts
- Static CSS/JS stubs for Phase 6 portal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Carlos Garcia
2026-05-04 18:52:04 -04:00
commit 1d52d85a78
46 changed files with 5626 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
# ── 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.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
1 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2 # ── fl.case ──────────────────────────────────────────────────────────────────
3 access_fl_case_admin,fl.case admin,model_fl_case,group_admin,1,1,1,1
4 access_fl_case_paralegal,fl.case paralegal,model_fl_case,group_paralegal,1,1,1,0
5 access_fl_case_petitioner,fl.case petitioner portal,model_fl_case,group_portal_petitioner,1,1,0,0
6 access_fl_case_respondent,fl.case respondent portal,model_fl_case,group_portal_respondent,1,0,0,0
7 # ── fl.party ─────────────────────────────────────────────────────────────────
8 access_fl_party_admin,fl.party admin,model_fl_party,group_admin,1,1,1,1
9 access_fl_party_paralegal,fl.party paralegal,model_fl_party,group_paralegal,1,1,1,0
10 access_fl_party_petitioner,fl.party petitioner portal,model_fl_party,group_portal_petitioner,1,1,0,0
11 access_fl_party_respondent,fl.party respondent portal,model_fl_party,group_portal_respondent,1,1,0,0
12 # ── fl.income.source ─────────────────────────────────────────────────────────
13 access_fl_income_source_admin,fl.income.source admin,model_fl_income_source,group_admin,1,1,1,1
14 access_fl_income_source_paralegal,fl.income.source paralegal,model_fl_income_source,group_paralegal,1,1,1,0
15 access_fl_income_source_petitioner,fl.income.source petitioner,model_fl_income_source,group_portal_petitioner,1,1,0,0
16 # ── fl.child ─────────────────────────────────────────────────────────────────
17 access_fl_child_admin,fl.child admin,model_fl_child,group_admin,1,1,1,1
18 access_fl_child_paralegal,fl.child paralegal,model_fl_child,group_paralegal,1,1,1,0
19 access_fl_child_petitioner,fl.child petitioner portal,model_fl_child,group_portal_petitioner,1,1,0,0
20 access_fl_child_respondent,fl.child respondent portal,model_fl_child,group_portal_respondent,1,0,0,0
21 # ── fl.support.calculation ───────────────────────────────────────────────────
22 access_fl_support_calc_admin,fl.support.calculation admin,model_fl_support_calculation,group_admin,1,1,1,1
23 access_fl_support_calc_paralegal,fl.support.calculation paralegal,model_fl_support_calculation,group_paralegal,1,1,1,0
24 access_fl_support_calc_petitioner,fl.support.calculation petitioner,model_fl_support_calculation,group_portal_petitioner,1,1,1,0
25 access_fl_support_calc_respondent,fl.support.calculation respondent,model_fl_support_calculation,group_portal_respondent,1,0,0,0
26 # ── fl.support.schedule.entry ────────────────────────────────────────────────
27 access_fl_support_schedule_admin,fl.support.schedule.entry admin,model_fl_support_schedule_entry,group_admin,1,1,1,1
28 access_fl_support_schedule_paralegal,fl.support.schedule.entry paralegal,model_fl_support_schedule_entry,group_paralegal,1,0,0,0
29 access_fl_support_schedule_petitioner,fl.support.schedule.entry petitioner,model_fl_support_schedule_entry,group_portal_petitioner,1,0,0,0
30 # ── fl.statute ───────────────────────────────────────────────────────────────
31 access_fl_statute_admin,fl.statute admin,model_fl_statute,group_admin,1,1,1,1
32 access_fl_statute_paralegal,fl.statute paralegal,model_fl_statute,group_paralegal,1,0,0,0
33 access_fl_statute_petitioner,fl.statute petitioner,model_fl_statute,group_portal_petitioner,1,0,0,0
34 # ── fl.issue.tag ─────────────────────────────────────────────────────────────
35 access_fl_issue_tag_admin,fl.issue.tag admin,model_fl_issue_tag,group_admin,1,1,1,1
36 access_fl_issue_tag_paralegal,fl.issue.tag paralegal,model_fl_issue_tag,group_paralegal,1,0,0,0
37 access_fl_issue_tag_petitioner,fl.issue.tag petitioner,model_fl_issue_tag,group_portal_petitioner,1,0,0,0
38 # ── fl.deadline ──────────────────────────────────────────────────────────────
39 access_fl_deadline_admin,fl.deadline admin,model_fl_deadline,group_admin,1,1,1,1
40 access_fl_deadline_paralegal,fl.deadline paralegal,model_fl_deadline,group_paralegal,1,1,1,0
41 access_fl_deadline_petitioner,fl.deadline petitioner,model_fl_deadline,group_portal_petitioner,1,0,0,0
42 # ── fl.hearing ───────────────────────────────────────────────────────────────
43 access_fl_hearing_admin,fl.hearing admin,model_fl_hearing,group_admin,1,1,1,1
44 access_fl_hearing_paralegal,fl.hearing paralegal,model_fl_hearing,group_paralegal,1,1,1,0
45 access_fl_hearing_petitioner,fl.hearing petitioner,model_fl_hearing,group_portal_petitioner,1,0,0,0
46 # ── fl.deposition ────────────────────────────────────────────────────────────
47 access_fl_deposition_admin,fl.deposition admin,model_fl_deposition,group_admin,1,1,1,1
48 access_fl_deposition_paralegal,fl.deposition paralegal,model_fl_deposition,group_paralegal,1,1,1,0
49 access_fl_deposition_petitioner,fl.deposition petitioner,model_fl_deposition,group_portal_petitioner,1,0,0,0
50 # ── fl.discovery ─────────────────────────────────────────────────────────────
51 access_fl_discovery_admin,fl.discovery admin,model_fl_discovery,group_admin,1,1,1,1
52 access_fl_discovery_paralegal,fl.discovery paralegal,model_fl_discovery,group_paralegal,1,1,1,0
53 access_fl_discovery_petitioner,fl.discovery petitioner,model_fl_discovery,group_portal_petitioner,1,0,0,0
54 # ── fl.document ──────────────────────────────────────────────────────────────
55 access_fl_document_admin,fl.document admin,model_fl_document,group_admin,1,1,1,1
56 access_fl_document_paralegal,fl.document paralegal,model_fl_document,group_paralegal,1,1,1,0
57 access_fl_document_petitioner,fl.document petitioner,model_fl_document,group_portal_petitioner,1,0,0,0
58 # ── fl.caselaw ───────────────────────────────────────────────────────────────
59 access_fl_caselaw_admin,fl.caselaw admin,model_fl_caselaw,group_admin,1,1,1,1
60 access_fl_caselaw_paralegal,fl.caselaw paralegal,model_fl_caselaw,group_paralegal,1,1,0,0
61 access_fl_caselaw_petitioner,fl.caselaw petitioner,model_fl_caselaw,group_portal_petitioner,1,0,0,0
62 # ── fl.analysis ──────────────────────────────────────────────────────────────
63 access_fl_analysis_admin,fl.analysis admin,model_fl_analysis,group_admin,1,1,1,1
64 access_fl_analysis_paralegal,fl.analysis paralegal,model_fl_analysis,group_paralegal,1,0,0,0
65 access_fl_analysis_petitioner,fl.analysis petitioner,model_fl_analysis,group_portal_petitioner,1,0,0,0
66 # ── fl.argument ──────────────────────────────────────────────────────────────
67 access_fl_argument_admin,fl.argument admin,model_fl_argument,group_admin,1,1,1,1
68 access_fl_argument_paralegal,fl.argument paralegal,model_fl_argument,group_paralegal,1,1,0,0
69 # ── fl.fee.waiver ────────────────────────────────────────────────────────────
70 access_fl_fee_waiver_admin,fl.fee.waiver admin,model_fl_fee_waiver,group_admin,1,1,1,1
71 access_fl_fee_waiver_paralegal,fl.fee.waiver paralegal,model_fl_fee_waiver,group_paralegal,1,1,1,0
72 access_fl_fee_waiver_petitioner,fl.fee.waiver petitioner,model_fl_fee_waiver,group_portal_petitioner,1,1,1,0
73 # ── fl.income.withholding ─────────────────────────────────────────────────────
74 access_fl_income_withholding_admin,fl.income.withholding admin,model_fl_income_withholding,group_admin,1,1,1,1
75 access_fl_income_withholding_paralegal,fl.income.withholding paralegal,model_fl_income_withholding,group_paralegal,1,1,1,0
76 access_fl_income_withholding_petitioner,fl.income.withholding petitioner,model_fl_income_withholding,group_portal_petitioner,1,0,0,0
77 # ── fl.intake.wizard ─────────────────────────────────────────────────────────
78 access_fl_intake_wizard_admin,fl.intake.wizard admin,model_fl_intake_wizard,group_admin,1,1,1,1
79 access_fl_intake_wizard_paralegal,fl.intake.wizard paralegal,model_fl_intake_wizard,group_paralegal,1,1,1,1
80 # ── fl.analysis.wizard ───────────────────────────────────────────────────────
81 access_fl_analysis_wizard_admin,fl.analysis.wizard admin,model_fl_analysis_wizard,group_admin,1,1,1,1
82 # ── fl.generate.packet.wizard ────────────────────────────────────────────────
83 access_fl_generate_packet_wizard_admin,fl.generate.packet.wizard admin,model_fl_generate_packet_wizard,group_admin,1,1,1,1
84 access_fl_generate_packet_wizard_paralegal,fl.generate.packet.wizard paralegal,model_fl_generate_packet_wizard,group_paralegal,1,1,1,1