- fl.signature.request: token-protected request linking an fl.document to a signer (res.partner). State machine: draft → prepared → sent → signed | declined | expired. Per-report _SIGNATURE_COORDS map plus DOC_TYPE_TO_REPORT for resolving the QWeb report template and the signature block rectangle - action_prepare renders the QWeb PDF and stores it; action_send_to_signer emails a one-time link /familylaw/sign/<token> (256-bit token, 14-day expiry, hourly cron sweeps stale links) - apply_signature decodes the canvas-pad PNG, embeds it at the page-relative rectangle via PyMuPDF, attaches the signed PDF to the fl.document, marks the document signed, and audits the signer IP + timestamp - Public portal controller (/familylaw/sign/<token>): GET shows the unsigned PDF in an iframe + inline HTML5 canvas pad (no external JS, mouse + touch); POST submits the PNG; separate decline endpoint. Token+state checks gate every transition - action_validate_pdfa on the signed request reuses the e-filing pikepdf check (markers + OutputIntents) so e-filing-bound docs can be re-validated - Wiring: models/__init__, controllers/__init__, manifest entry, ACL for the request, Signature Requests menu under Cases, signature_request_ids on fl.case with a Filings-tab list, "Request Signature" header button, and a cron for expiry - Note: Odoo Sign / DocuSign / HelloSign deliberately NOT used per CLAUDE.md spec (HIPAA + FL court e-signature compliance) - Verified: throwaway-DB install passes cleanly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
83 lines
8.2 KiB
CSV
83 lines
8.2 KiB
CSV
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
access_fl_signature_request_admin,fl.signature.request admin,model_fl_signature_request,group_admin,1,1,1,1
|
|
access_fl_signature_request_paralegal,fl.signature.request paralegal,model_fl_signature_request,group_paralegal,1,1,1,0
|
|
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
|
|
access_fl_analysis_wizard_admin,fl.analysis.wizard admin,model_fl_analysis_wizard,group_admin,1,1,1,1
|
|
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
|
|
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
|
|
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
|