Compare commits

..

12 Commits

Author SHA1 Message Date
gsinghpal
1691ee1ab6 feat(fusion_accounting_bank_rec): inherit account.bank.statement.line + account.reconcile.model
Task 17 — Add Phase 1 widget compute fields and AI hooks:
- account.bank.statement.line: fusion_top_suggestion_id (m2o, unstored),
  fusion_confidence_band (selection, unstored), bank_statement_attachment_ids
  (one2many compute, mirrors Enterprise's surface field for the OWL widget).
- account.reconcile.model: fusion_ai_confidence_threshold (float).
- Bumps manifest 19.0.1.0.3 → 19.0.1.0.4.

V19 note: dropped @api.depends('id') on _compute_top_suggestion (NotImplementedError
in V19); compute is on-demand for unstored field anyway.

Made-with: Cursor
2026-04-19 10:25:31 -04:00
gsinghpal
45710ea890 feat(fusion_accounting_bank_rec): transient model for widget round-trip data
Made-with: Cursor
2026-04-19 10:22:39 -04:00
gsinghpal
267c8ee165 feat(fusion_accounting_bank_rec): persisted AI suggestion model with state lifecycle
Made-with: Cursor
2026-04-19 10:20:10 -04:00
gsinghpal
14ebcb2996 feat(fusion_accounting_bank_rec): pattern + precedent models for behavioural learning
Adds the foundation for AI confidence scoring:
- fusion.reconcile.pattern: per-(company, partner) aggregate profile
  (volume, cadence, preferred matching strategy, memo signature,
  write-off habits) — recomputed nightly from precedents.
- fusion.reconcile.precedent: per-historical-decision memory holding
  full feature vector + outcome, used by precedent_lookup for KNN
  scoring of new bank lines.

Includes ACL rows for fusion accounting user (read) and admin (CRUD)
groups. Manifest bumped to 19.0.1.0.1.

Note: switched the pattern uniqueness rule from the deprecated
_sql_constraints attribute to models.Constraint (Odoo 19 native API)
so the unique(company_id, partner_id) is actually enforced at the
PG level — _sql_constraints is silently ignored in 19.

Made-with: Cursor
2026-04-19 10:17:29 -04:00
gsinghpal
1df230029d feat(fusion_accounting_bank_rec): matching strategies (AmountExact, FIFO, MultiInvoice)
Made-with: Cursor
2026-04-19 10:13:00 -04:00
gsinghpal
f4d6a4f577 feat(fusion_accounting_bank_rec): exchange_diff helper for FX gain/loss pre-check
Made-with: Cursor
2026-04-19 10:10:40 -04:00
gsinghpal
560838e66c feat(fusion_accounting_bank_rec): memo_tokenizer for Canadian bank memo formats
Made-with: Cursor
2026-04-19 10:08:24 -04:00
gsinghpal
469a9d0732 feat(plating): close 6 compliance gaps from required-fields audit
Following the workforce-E2E + required-fields audit, ship the first 6
high-priority gates so critical workflow + compliance fields can no
longer be left empty by accident.

**1. Invoice payment terms (account.move)**
- create() now auto-inherits `invoice_payment_term_id` from
  partner.property_payment_term_id when missing
- action_post() raises UserError if still missing — accountant must
  pick one before posting (prevents silent "immediate" due-date)

**2. MO facility (mrp.production)**
- action_confirm() auto-derives `x_fc_facility_id` if unset, in order:
  SO override → res.company.x_fc_default_facility_id → first active
  facility — then HARD GATES: raises UserError if still empty.
  Without facility every downstream record (WO, batch, bath log,
  cert) is missing the "where" half of the audit trail.

**3. WO facility (mrp.workorder)**
- Switched `x_fc_facility_id` from related (workcenter only) to a
  proper compute that falls back to production_id.x_fc_facility_id.
  Stub workcenters auto-created from process node names usually have
  no facility — the MO always does (from #2 above).

**4. Thickness reading calibration_std (fp.thickness.reading)**
- `calibration_std_ref` is now `required=True` with sensible default
  ("NiP/Al STD SET SN 100174568"). Nadcap mandates which calibration
  standard the gauge was checked against — without it the cert
  data has no chain back to a metrology record.

**5. Delivery POD gate (fusion.plating.delivery)**
- action_mark_delivered() raises UserError if no `pod_id`. Driver
  must capture POD on the iPad (recipient signature + photos +
  notes) BEFORE marking delivered. Without POD there's no signed
  receipt to back the invoice or defend a delivery dispute.

**6. Certificate spec_reference gate (fp.certificate)**
- action_issue() raises UserError if no `spec_reference`. The cert
  ATTESTS to a spec — leaving it blank produces a piece of paper
  that AS9100 / Nadcap auditors will (rightfully) reject.

**Simulator updated**: scripts/fp_e2e_workforce.py
- Sets net-30 on the test customer + ensures a default facility
- New PHASE 4c: 5 negative tests (one per new gate), each wrapped
  in a SAVEPOINT so SQL constraint violations don't abort the txn
- Driver now creates POD on iPad BEFORE marking delivered

**Final E2E**: 48 PASS / 2 WARN / 0 FAIL out of 50 checks.
The 2 remaining WARNs (bake-window auto-create, first-piece gate)
are expected behaviour — both are coating-driven and the test
coating intentionally doesn't trigger them.

All 7 negative tests now pass:
  ✓ Test 1: WO start without operator → blocked
  ✓ Test 2: WO start on wet WO without bath/tank → blocked
  ✓ Test 3: MO confirm without facility → blocked
  ✓ Test 4: Cert issue without spec_reference → blocked
  ✓ Test 5: Delivery delivered without POD → blocked
  ✓ Test 6: Invoice post without payment terms → blocked
  ✓ Test 7: Thickness reading without cal std → blocked (DB NOT NULL)

Audit script (scripts/fp_required_fields_audit.py) committed too —
it's the diagnostic that surfaced these gaps and can be re-run to
catch new ones.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 10:06:52 -04:00
gsinghpal
60bf2adfa8 feat(fusion_accounting_ai): add LLMProvider contract + configurable openai base_url
Phase 1 prerequisite for local LLM support. Adapters now declare
capability flags (supports_tool_calling, max_context_tokens, etc.) so
the engine can reason about what backend is available.

OpenAI adapter accepts fusion_accounting.openai_base_url config -- point
it at LM Studio (http://host.docker.internal:1234/v1) or Ollama
(http://host.docker.internal:11434/v1) and the existing OpenAI adapter
works unchanged.

Implementation note: existing Odoo AbstractModel adapters
(fusion.accounting.adapter.openai/claude) are preserved untouched to
avoid breaking the chat panel; the new plain-Python OpenAIAdapter and
ClaudeAdapter classes (LLMProvider subclasses) are added alongside them.

Made-with: Cursor
2026-04-19 10:05:54 -04:00
gsinghpal
78a481f3f4 feat(fusion_accounting_core): add computed coexistence group + recompute hooks
group_fusion_show_when_enterprise_absent has membership = all internal
users iff no Enterprise accounting module is installed. Membership is
recomputed on module install/uninstall via overrides on ir.module.module.
Used by Phase 1 fusion_bank_rec menus to auto-hide when Enterprise is
active and auto-appear after Enterprise uninstall.

Made-with: Cursor
2026-04-19 10:02:19 -04:00
gsinghpal
3f4fdeffce feat(fusion_accounting_core): shared-field-ownership for cron_last_check
Declare account.bank.statement.line.cron_last_check on
fusion_accounting_core so the column survives Enterprise
account_accountant uninstall. Mirrors the existing pattern used
for account.move and account.reconcile.model shared fields.

- Add models/account_bank_statement_line.py declaring cron_last_check
  as fields.Datetime(copy=False)
- Wire model into models/__init__.py
- Add post_install regression test verifying field presence and type
- Bump manifest 19.0.1.0.0 -> 19.0.1.0.1

Made-with: Cursor
2026-04-19 09:58:41 -04:00
gsinghpal
a9e27828d1 feat(fusion_accounting_bank_rec): add empty sub-module skeleton
Scaffold the fusion_accounting_bank_rec sub-module with directory
tree, manifest, empty package __init__ files, empty ACL CSV, icon,
and Enterprise reference snapshots. No models, controllers, or
business logic yet — installs cleanly on V19 westin-v19 dev DB.

Made-with: Cursor
2026-04-19 09:56:06 -04:00
8005 changed files with 12039 additions and 1831400 deletions

BIN
.DS_Store vendored

Binary file not shown.

18
.gitignore vendored
View File

@@ -1,18 +0,0 @@
# Python bytecode
__pycache__/
*.py[cod]
*$py.class
# Editor / OS noise
.DS_Store
*.swp
*.swo
.vscode/
.idea/
# Odoo runtime
*.pyc-tmp
# Local-only diagnostic logs from test runs
_test_*.log
.superpowers/

View File

@@ -1,133 +0,0 @@
<h2>Recommended Hybrid: A + B's escape hatch</h2>
<p class="subtitle">Layout A's inline badge as default. Power users click "Show alternatives" on any line to reveal B's ranked panel for that line only.</p>
<div class="mockup">
<div class="mockup-header">Bank Reconciliation — Account: RBC Operating · 487 unreconciled</div>
<div class="mockup-body" style="padding:14px;font-family:-apple-system,sans-serif;font-size:13px;background:#f3f4f6">
<div style="background:#fff;border:1px solid #d8dadd;border-radius:8px;margin-bottom:10px;overflow:hidden">
<div style="display:flex;justify-content:space-between;align-items:center;padding:12px 14px">
<div>
<div style="font-weight:600">Apr 12 — RBC e-transfer</div>
<div style="color:#666;font-size:12px;margin-top:2px">Cheque 4827 · Westin Plating Co · <strong>$1,847.50 CAD</strong></div>
</div>
<div style="display:flex;gap:8px;align-items:center">
<div style="background:#22c55e;color:#fff;padding:4px 10px;border-radius:14px;font-size:11px;font-weight:700;letter-spacing:0.3px">92% MATCH</div>
</div>
</div>
<div style="padding:10px 14px;background:#f0fdf4;border-top:1px solid #d1fae5;display:flex;justify-content:space-between;align-items:center">
<div style="font-size:12px;color:#166534">
💡 <strong>INV/2026/00123</strong> — Westin Plating Co — $1,847.50
</div>
<div style="display:flex;gap:6px">
<button style="background:#22c55e;color:#fff;border:none;padding:5px 12px;border-radius:5px;font-size:11px;font-weight:600;cursor:pointer">Accept</button>
<button style="background:#fff;color:#666;border:1px solid #d8dadd;padding:5px 10px;border-radius:5px;font-size:11px;cursor:pointer">Reject</button>
<button style="background:transparent;color:#666;border:none;padding:5px 8px;font-size:11px;cursor:pointer;text-decoration:underline">Show 2 alternatives</button>
</div>
</div>
</div>
<div style="background:#fff;border:1px solid #fde68a;border-radius:8px;margin-bottom:10px;overflow:hidden">
<div style="display:flex;justify-content:space-between;align-items:center;padding:12px 14px">
<div>
<div style="font-weight:600">Apr 12 — RBC payment</div>
<div style="color:#666;font-size:12px;margin-top:2px">Cheque 4828 · partner unknown · <strong>$1,800.00 CAD</strong></div>
</div>
<div style="background:#f59e0b;color:#fff;padding:4px 10px;border-radius:14px;font-size:11px;font-weight:700">68% MATCH</div>
</div>
<div style="padding:10px 14px;background:#fffbeb;border-top:1px solid #fde68a;display:flex;justify-content:space-between;align-items:center">
<div style="font-size:12px;color:#92400e">
💡 <strong>INV/2026/00098</strong> — Westin Plating Co — $1,800.00 · <em style="color:#a16207">amount matches but partner unconfirmed</em>
</div>
<div style="display:flex;gap:6px">
<button style="background:#f59e0b;color:#fff;border:none;padding:5px 12px;border-radius:5px;font-size:11px;font-weight:600;cursor:pointer">Accept</button>
<button style="background:#fff;color:#666;border:1px solid #d8dadd;padding:5px 10px;border-radius:5px;font-size:11px;cursor:pointer">Reject</button>
<button style="background:transparent;color:#666;border:none;padding:5px 8px;font-size:11px;cursor:pointer;text-decoration:underline">Show 4 alternatives</button>
</div>
</div>
</div>
<div style="background:#fff;border:1px solid #d8dadd;border-radius:8px;margin-bottom:10px;overflow:hidden">
<div style="display:flex;justify-content:space-between;align-items:center;padding:12px 14px">
<div>
<div style="font-weight:600">Apr 11 — Visa adjustment</div>
<div style="color:#666;font-size:12px;margin-top:2px">Ref VSA-201 · Royal Bank fees · <strong>$89.99 CAD</strong></div>
</div>
<div style="background:#94a3b8;color:#fff;padding:4px 10px;border-radius:14px;font-size:11px;font-weight:700">NO MATCH</div>
</div>
<div style="padding:8px 14px;background:#f8fafc;border-top:1px solid #e2e8f0;display:flex;gap:6px;justify-content:flex-end">
<button style="background:#fff;color:#666;border:1px solid #d8dadd;padding:5px 10px;border-radius:5px;font-size:11px;cursor:pointer">Reconcile manually</button>
<button style="background:#fff;color:#666;border:1px solid #d8dadd;padding:5px 10px;border-radius:5px;font-size:11px;cursor:pointer">Apply rule</button>
<button style="background:#fff;color:#666;border:1px solid #d8dadd;padding:5px 10px;border-radius:5px;font-size:11px;cursor:pointer">Write off</button>
</div>
</div>
<div style="background:#fff;border:2px solid #22c55e;border-radius:8px;margin-bottom:10px;overflow:hidden">
<div style="display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:#f0fdf4">
<div>
<div style="font-weight:600">Apr 11 — RBC bulk deposit</div>
<div style="color:#666;font-size:12px;margin-top:2px">Ref 9921-D · Westin Plating Co · <strong>$3,200.00 CAD</strong></div>
</div>
<div style="background:#22c55e;color:#fff;padding:4px 10px;border-radius:14px;font-size:11px;font-weight:700">98% MATCH (alternatives expanded)</div>
</div>
<div style="background:#f8fafc;padding:10px 14px;border-top:1px solid #d1fae5">
<div style="font-size:11px;color:#666;margin-bottom:8px;text-transform:uppercase;letter-spacing:0.4px;font-weight:600">AI suggestions, ranked</div>
<div style="background:#fff;border:1px solid #22c55e;border-radius:6px;padding:8px 10px;margin-bottom:5px;display:flex;justify-content:space-between;align-items:center">
<div>
<div style="font-size:12px;font-weight:600;color:#166534">98% — INV/2026/00145 — $3,200.00 · Westin Plating Co</div>
<div style="font-size:11px;color:#666;margin-top:2px">Exact amount + same partner + invoice date Apr 8 · 4 prior reconciles match this pattern</div>
</div>
<button style="background:#22c55e;color:#fff;border:none;padding:5px 14px;border-radius:5px;font-size:11px;font-weight:600;cursor:pointer">Accept</button>
</div>
<div style="background:#fff;border:1px solid #fde68a;border-radius:6px;padding:8px 10px;margin-bottom:5px;display:flex;justify-content:space-between;align-items:center">
<div>
<div style="font-size:12px;font-weight:600;color:#92400e">71% — INV/2026/00141 — $3,200.00 · Bramalea Lift Co</div>
<div style="font-size:11px;color:#666;margin-top:2px">Amount matches, partner is a different client</div>
</div>
<button style="background:#fff;color:#666;border:1px solid #d8dadd;padding:5px 12px;border-radius:5px;font-size:11px;cursor:pointer">Use this</button>
</div>
<div style="background:#fff;border:1px solid #d8dadd;border-radius:6px;padding:8px 10px;display:flex;justify-content:space-between;align-items:center">
<div>
<div style="font-size:12px;font-weight:600;color:#666">62% — INV/2026/00139 + INV/2026/00140 (combined) — Westin Plating Co</div>
<div style="font-size:11px;color:#666;margin-top:2px">Two invoices summing to $3,200.00</div>
</div>
<button style="background:#fff;color:#666;border:1px solid #d8dadd;padding:5px 12px;border-radius:5px;font-size:11px;cursor:pointer">Use this</button>
</div>
<div style="margin-top:6px"><button style="background:transparent;color:#666;border:none;padding:4px;font-size:11px;cursor:pointer;text-decoration:underline">Hide alternatives</button></div>
</div>
</div>
<div style="background:#fff;border:1px solid #d8dadd;border-radius:8px;padding:8px 14px;text-align:center">
<button style="background:#22c55e;color:#fff;border:none;padding:8px 22px;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer">Accept all 47 high-confidence (≥95%)</button>
<span style="color:#666;font-size:11px;margin-left:10px">·</span>
<span style="color:#666;font-size:11px;margin-left:8px">487 lines unreconciled · 47 ready to auto-accept · 134 need review · 306 no AI match</span>
</div>
</div>
</div>
<p class="subtitle">Each line: confidence badge top-right, single suggestion strip below (Accept / Reject / Show alternatives). High-confidence lines have a green border for instant scanning. Bottom bar offers batch-accept of all ≥95% matches at once. The 4th line shows what "Show alternatives" reveals when expanded — B's ranked panel inline.</p>
<div class="options">
<div class="option" data-choice="approve" onclick="toggleSelect(this)">
<div class="letter"></div>
<div class="content">
<h3>Looks right — proceed with this hybrid</h3>
<p>I'll capture this as the default UI design in the spec. Specific colour choices and exact pixel spacing get refined during implementation.</p>
</div>
</div>
<div class="option" data-choice="adjust" onclick="toggleSelect(this)">
<div class="letter"></div>
<div class="content">
<h3>Mostly right but I want changes</h3>
<p>Tell me in the terminal what to adjust (positions, colours, button labels, missing actions, etc.).</p>
</div>
</div>
<div class="option" data-choice="back_to_pure_a" onclick="toggleSelect(this)">
<div class="letter">A</div>
<div class="content">
<h3>Just pure A, no alternatives panel</h3>
<p>Keep it simple — single suggestion per line, no expand. If user disagrees with AI they go to the manual reconcile dialog.</p>
</div>
</div>
</div>

View File

@@ -1,101 +0,0 @@
<h2>AI Suggestion Placement</h2>
<p class="subtitle">You picked "AI assistive" — now: how does the AI suggestion appear on each unreconciled bank line? Three layouts:</p>
<div class="cards" data-multiselect>
<div class="card" data-choice="badge_inline" onclick="toggleSelect(this)">
<div class="card-image">
<div class="mockup">
<div class="mockup-header">Layout A — Inline Badge</div>
<div class="mockup-body" style="padding:12px;font-family:monospace;font-size:13px;line-height:1.7">
<div style="border:1px solid #d8dadd;padding:10px;border-radius:6px;background:#fff">
<div style="display:flex;justify-content:space-between;align-items:center">
<div>
<div style="font-weight:600">Apr 12 — RBC ETF deposit</div>
<div style="color:#666;font-size:12px">Cheque ref 4827 · $1,847.50 CAD</div>
</div>
<div style="background:#22c55e;color:#fff;padding:3px 8px;border-radius:12px;font-size:11px;font-weight:600">92% MATCH</div>
</div>
<div style="margin-top:8px;padding:6px;background:#f0fdf4;border-left:3px solid #22c55e;font-size:12px;color:#166534">
💡 Invoice <strong>INV/2026/00123</strong> — Westin Plating Co — $1,847.50 · <a href="#" style="color:#22c55e">Accept</a> · <a href="#" style="color:#666">Reject</a>
</div>
</div>
</div>
</div>
</div>
<div class="card-body">
<h3>A — Inline Badge + Suggestion Strip</h3>
<p>Confidence badge top-right of each line, suggestion strip just below. One-click Accept/Reject. Familiar Enterprise-style line layout, AI feels like a layer added on top.</p>
</div>
</div>
<div class="card" data-choice="side_panel" onclick="toggleSelect(this)">
<div class="card-image">
<div class="mockup">
<div class="mockup-header">Layout B — Side Panel</div>
<div class="mockup-body" style="padding:12px;font-family:monospace;font-size:12px">
<div style="display:flex;gap:8px;height:200px">
<div style="flex:1;border:1px solid #d8dadd;border-radius:6px;background:#fff;padding:8px">
<div style="font-weight:600;margin-bottom:6px">Bank lines</div>
<div style="background:#dbeafe;padding:6px;border-radius:4px;margin-bottom:4px;font-size:11px">Apr 12 RBC $1,847.50 ✓ selected</div>
<div style="padding:6px;font-size:11px;color:#666">Apr 12 RBC $245.00</div>
<div style="padding:6px;font-size:11px;color:#666">Apr 11 Visa $89.99</div>
<div style="padding:6px;font-size:11px;color:#666">Apr 11 RBC $3,200.00</div>
</div>
<div style="width:200px;border:1px solid #d8dadd;border-radius:6px;background:#f8fafc;padding:8px">
<div style="font-weight:600;font-size:11px;margin-bottom:6px">AI Suggestions</div>
<div style="padding:6px;background:#fff;border-radius:4px;margin-bottom:4px;font-size:10px">
<div style="color:#22c55e;font-weight:600">92% INV/2026/00123</div>
<div style="color:#666">Westin Plating $1,847.50</div>
</div>
<div style="padding:6px;background:#fff;border-radius:4px;font-size:10px">
<div style="color:#f59e0b;font-weight:600">68% INV/2026/00098</div>
<div style="color:#666">Westin Plating $1,800.00</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card-body">
<h3>B — Dedicated Side Panel</h3>
<p>Bank lines on the left, AI suggestions panel on the right, updates as you select a line. Multiple ranked suggestions visible. More screen real estate for AI; line list stays clean.</p>
</div>
</div>
<div class="card" data-choice="hover_only" onclick="toggleSelect(this)">
<div class="card-image">
<div class="mockup">
<div class="mockup-header">Layout C — Hover Reveal</div>
<div class="mockup-body" style="padding:12px;font-family:monospace;font-size:13px;line-height:1.7">
<div style="border:1px solid #d8dadd;padding:10px;border-radius:6px;background:#fff;margin-bottom:6px">
<div style="display:flex;justify-content:space-between;align-items:center">
<div>
<div style="font-weight:600">Apr 12 — RBC ETF deposit</div>
<div style="color:#666;font-size:12px">Cheque ref 4827 · $1,847.50 CAD</div>
</div>
<div style="display:flex;align-items:center;gap:6px">
<div style="width:8px;height:8px;background:#22c55e;border-radius:50%"></div>
<div style="color:#666;font-size:11px;font-style:italic">hover for AI</div>
</div>
</div>
</div>
<div style="border:1px solid #22c55e;padding:10px;border-radius:6px;background:#f0fdf4;box-shadow:0 4px 12px rgba(0,0,0,0.08)">
<div style="display:flex;justify-content:space-between;align-items:center">
<div>
<div style="font-weight:600">Apr 12 — RBC e-transfer</div>
<div style="color:#166534;font-size:12px">💡 92% match: INV/2026/00123 — $1,847.50 · <a href="#" style="color:#22c55e">Accept</a></div>
</div>
<div style="background:#22c55e;color:#fff;padding:3px 8px;border-radius:12px;font-size:11px">92%</div>
</div>
</div>
</div>
</div>
</div>
<div class="card-body">
<h3>C — Hover-to-Reveal</h3>
<p>Just a confidence dot on each line. AI details appear on hover/click. Cleanest visual, most Enterprise-like density. Slowest discovery for new users.</p>
</div>
</div>
</div>
<p class="subtitle">Click your preferred option(s). I'll read your selection on the next turn. You can also describe in the terminal what you'd like changed.</p>

View File

@@ -1,29 +0,0 @@
<h2>Phase 1 — Bank Reconciliation</h2>
<p class="subtitle">Brainstorming session for the next sub-module: <code>fusion_accounting_bank_rec</code></p>
<div class="section">
<h3>What we're designing</h3>
<p>A native bank-rec widget that replaces Odoo Enterprise's <code>account_accountant</code> bank reconciliation, using Odoo 19's frontend OWL architecture. It reads/writes the same <code>account.partial.reconcile</code> tables Community owns, so existing reconciliations are immune to Enterprise uninstall (verified empirically in Phase 0).</p>
</div>
<div class="section">
<h3>Reference material I've already scanned</h3>
<ul>
<li><strong>Roadmap design</strong> Section 4.3 — Phase 1 scope, exit criteria</li>
<li><strong>Enterprise V19 source</strong> at <code>RePackaged-Odoo/accounting/account_accountant/</code> — 17 OWL components in <code>static/src/components/bank_reconciliation/</code>, 1 service file (140 lines), 3 inherits on community models, 2 wizards</li>
<li><strong>Phase 0 BankRecAdapter</strong> — already present at <code>fusion_accounting_ai/services/data_adapters/bank_rec.py</code> with a stub <code>list_unreconciled_via_fusion()</code> waiting to be filled in</li>
</ul>
</div>
<div class="section">
<h3>How this session works</h3>
<ol>
<li>I ask clarifying questions one at a time (terminal for scope/concept, this browser for layout/visual)</li>
<li>I propose 2-3 architectural approaches with tradeoffs</li>
<li>We work through the design section by section</li>
<li>I write the spec doc and you approve it</li>
<li>Then we transition to writing the implementation plan</li>
</ol>
</div>
<p class="subtitle">Continuing in terminal for the first question...</p>

View File

@@ -1,4 +0,0 @@
<div style="display:flex;align-items:center;justify-content:center;min-height:60vh;flex-direction:column;gap:16px">
<p class="subtitle">UI layout approved ✓</p>
<p class="subtitle">Continuing in terminal — next sections are about file structure, reconcile engine algorithms, and migration. Browser will return for any further visual decisions.</p>
</div>

View File

@@ -1,4 +0,0 @@
<div style="display:flex;align-items:center;justify-content:center;min-height:60vh;flex-direction:column;gap:16px">
<p class="subtitle">Spec approved ✓ — committed as <code>2d64f7e</code></p>
<p class="subtitle">Now writing the Phase 1 implementation plan in terminal. Browser session can be closed; the visual companion isn't needed for plan-writing.</p>
</div>

View File

@@ -1 +0,0 @@
{"reason":"idle timeout","timestamp":1776605003749}

View File

@@ -1,12 +0,0 @@
{"type":"server-started","port":50540,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:50540","screen_dir":"/Users/gurpreet/Github/Odoo-Modules/.superpowers/brainstorm/84408-1776602183/content","state_dir":"/Users/gurpreet/Github/Odoo-Modules/.superpowers/brainstorm/84408-1776602183/state"}
{"type":"screen-added","file":"/Users/gurpreet/Github/Odoo-Modules/.superpowers/brainstorm/84408-1776602183/content/intro.html"}
{"type":"screen-added","file":"/Users/gurpreet/Github/Odoo-Modules/.superpowers/brainstorm/84408-1776602183/content/ai-badge-placement.html"}
{"type":"screen-added","file":"/Users/gurpreet/Github/Odoo-Modules/.superpowers/brainstorm/84408-1776602183/content/ai-badge-hybrid-v2.html"}
{"source":"user-event","type":"click","text":"✓\n \n Looks right — proceed with this hybrid\n I'll capture this as the default UI design in the spec. Specific colour choices and exact pixel spacing get refined during implementation.","choice":"approve","id":null,"timestamp":1776603091592}
{"source":"user-event","type":"click","text":"✓\n \n Looks right — proceed with this hybrid\n I'll capture this as the default UI design in the spec. Specific colour choices and exact pixel spacing get refined during implementation.","choice":"approve","id":null,"timestamp":1776603096458}
{"source":"user-event","type":"click","text":"✓\n \n Looks right — proceed with this hybrid\n I'll capture this as the default UI design in the spec. Specific colour choices and exact pixel spacing get refined during implementation.","choice":"approve","id":null,"timestamp":1776603097158}
{"source":"user-event","type":"click","text":"✓\n \n Looks right — proceed with this hybrid\n I'll capture this as the default UI design in the spec. Specific colour choices and exact pixel spacing get refined during implementation.","choice":"approve","id":null,"timestamp":1776603097583}
{"source":"user-event","type":"click","text":"✓\n \n Looks right — proceed with this hybrid\n I'll capture this as the default UI design in the spec. Specific colour choices and exact pixel spacing get refined during implementation.","choice":"approve","id":null,"timestamp":1776603097800}
{"source":"user-event","type":"click","text":"✓\n \n Looks right — proceed with this hybrid\n I'll capture this as the default UI design in the spec. Specific colour choices and exact pixel spacing get refined during implementation.","choice":"approve","id":null,"timestamp":1776603098691}
{"type":"screen-added","file":"/Users/gurpreet/Github/Odoo-Modules/.superpowers/brainstorm/84408-1776602183/content/waiting-1.html"}
{"type":"server-stopped","reason":"idle timeout"}

View File

@@ -1,95 +0,0 @@
# Odoo Modules — Codex Instructions
## Project
27 custom Odoo 19 modules for Fusion Central (Westin Healthcare + NEXA Systems).
## Critical Rules — Odoo 19
1. **NEVER code from memory** — Always read a reference file from Docker first:
```bash
docker exec odoo-dev-app cat /usr/lib/python3/dist-packages/odoo/addons/<module>/static/src/<path>
```
2. **Frontend JS**: Use `Interaction` class from `@web/public/interaction`, registered via `registry.category("public.interactions")`. NOT IIFE/DOMContentLoaded.
3. **Backend OWL**: Use standalone `rpc()` from `@web/core/network/rpc`. NOT `useService("rpc")`. `static props = []` not `{}`.
4. **HTTP routes**: `type="jsonrpc"` — NOT `type="json"` (deprecated).
5. **res.config.settings**: Only boolean/integer/float/char/selection/many2one/datetime. NO Date fields.
6. **res.groups**: NO `users` field, NO `category_id` field.
7. **Search views**: NO `group expand="0"` syntax.
8. **SCSS imports**: `@import "./partial"` is FORBIDDEN in Odoo 19 custom SCSS. It prints a warning and silently falls back to the old cached bundle. Register every SCSS file (including `_partial.scss` tokens) as a separate entry in `web.assets_backend`. Put tokens first; Odoo concatenates bundle files so SCSS variables/mixins from the first file are visible to every later file.
## Card Styling — Copy Odoo's Kanban Pattern
Don't rely on `var(--bs-border-color)` or `var(--bs-body-bg)` for card surfaces — they drift between themes/addons and often render **invisible**. Odoo's own kanban (`.o_kanban_record`) uses **explicit hex** values:
```css
background-color: white;
border: 1px solid #d8dadd;
```
For custom OWL dashboards / client actions use the same approach:
- Define a `_tokens.scss` partial with explicit hex values wrapped in a CSS custom property:
```scss
$fp-card: var(--fp-card-bg, #ffffff);
$fp-border: var(--fp-border-color, #d8dadd);
```
- Reference those tokens everywhere (never `var(--bs-border-color)` directly)
- Three-layer contrast: **page** (grayest) → **container/column** (mid) → **card** (brightest). That's what makes cards pop.
- Reference implementation: `fusion_plating_shopfloor/static/src/scss/_fp_shopfloor_tokens.scss`.
## Dark Mode — Branch on `$o-webclient-color-scheme` at SCSS Compile Time
Odoo 19 does NOT flip dark mode via a runtime DOM class. It compiles TWO asset bundles:
- `web.assets_backend` — compiled with `$o-webclient-color-scheme: bright`
- `web.assets_web_dark` — compiled with `$o-webclient-color-scheme: dark` (dark variant primary variables loaded first)
Your SCSS file is compiled into BOTH bundles. To make the dark bundle have different colors, **branch at compile time** using the SCSS variable Odoo sets:
```scss
$o-webclient-color-scheme: bright !default;
$_my-page-hex: #f3f4f6;
$_my-card-hex: #ffffff;
@if $o-webclient-color-scheme == dark {
$_my-page-hex: #1a1d21 !global;
$_my-card-hex: #22262d !global;
}
$my-page: var(--my-page-bg, $_my-page-hex);
$my-card: var(--my-card-bg, $_my-card-hex);
```
**Do NOT use** `.o_dark_mode` class selectors, `[data-bs-theme="dark"]`, or `@media (prefers-color-scheme: dark)` — none of those fire reliably in Odoo 19. The user toggles dark mode via the user profile, which sets a `color_scheme` cookie and reloads the page; Odoo then serves the dark bundle. Your SCSS `@if` handles the rest at compile time.
Verify by inspecting the attachments — you should see two files with different URLs for the two bundles:
```python
env['ir.qweb']._get_asset_bundle('web.assets_backend').css() # light
env['ir.qweb']._get_asset_bundle('web.assets_web_dark').css() # dark
```
## Asset Bundle Cache Busting
Odoo content-hashes the compiled bundle URL (`/web/assets/<hash>/...`). When CSS changes but the hash doesn't update, the browser serves the old bundle. Fixes in order of escalation:
1. Bump the module `version` in `__manifest__.py`
2. `DELETE FROM ir_attachment WHERE url LIKE '/web/assets/%';` then restart odoo
3. Call `env['ir.qweb']._get_asset_bundle('web.assets_backend').css()` in odoo-shell to force regeneration
4. Hard-refresh browser with cache clear (DevTools → right-click refresh → *Empty Cache and Hard Reload*); on mobile clear website data
## Naming
- New fields: `x_fc_*` prefix
- Legacy fields: `x_studio_*`
- Canadian English for all user-facing text
- Currency: `$` sign with Monetary fields + currency_id
## Cursor-Managed Modules
- **fusion_clock** is currently being modified in Cursor — always read files fresh before editing, don't assume you know the current state
- **fusion_repairs** — status and deferred work: [`fusion_repairs/cloud.md`](fusion_repairs/cloud.md) (bundles 111 shipped at `19.0.2.2.4`; not production-deployed)
## Workflow
- Local dev: `docker exec odoo-dev-app odoo -d fusion-dev -u <module> --stop-after-init`
- Local URL: http://localhost:8069
- Test before deploying. Edit existing files — don't create unnecessary new ones.
## Supabase Knowledge Base
Before starting unfamiliar work, check Supabase for context:
```bash
PGPASSWORD='a09e12e0995dc29446631fa458f3d4b3' psql -h 100.74.28.73 -p 5433 -U postgres -d postgres
```
- `fusionapps.decisions` — past architecture decisions
- `fusionapps.issues` — known issues and fixes
- `fusionapps.code_snippets` — reference code
- `fusionapps.quick_commands` — deployment and admin commands

204
CLAUDE.md
View File

@@ -12,30 +12,9 @@
3. **Backend OWL**: Use standalone `rpc()` from `@web/core/network/rpc`. NOT `useService("rpc")`. `static props = []` not `{}`.
4. **HTTP routes**: `type="jsonrpc"` — NOT `type="json"` (deprecated).
5. **res.config.settings**: Only boolean/integer/float/char/selection/many2one/datetime. NO Date fields.
**`config_parameter=` Boolean fields don't round-trip `False` as a string.** Odoo's `set_values()` calls `IrConfigParameter.set_param(key, value)`, and `set_param` deletes the row when `value` is falsy (False / None / empty). So writing `False` to a Boolean config field means the param no longer exists in `ir_config_parameter`; a subsequent `get_param(key)` returns the *default* (Python `False`), not `'False'`. Test like `self.assertFalse(ICP.get_param('...'))` — never `assertEqual(..., 'False')`. (Integer/Float/Char go through `repr(value)` / strip, so they DO persist as strings — `'90'`, `'0'`, etc.) Source: `odoo/addons/base/models/res_config.py::set_values` and `ir_config_parameter.py::set_param`.
6. **res.groups**: NO `users` field, NO `category_id` field. **The Odoo 19 replacement for `category_id` is `res.groups.privilege`.** To make a module's groups appear as application-access dropdowns on the user form (Settings → Users → *Application Accesses*) instead of only in developer mode: define an `ir.module.category`, a `res.groups.privilege` (with `category_id` → that category), and set each group's `privilege_id` → that privilege. Groups under one privilege that form an `implied_ids` chain render as a single role dropdown; a standalone group in its own privilege renders as a separate row under the same category header. Verified in `fusion_clock/security/security.xml`; mirrors `fusion_plating`/`fusion_tasks`.
**res.users**: field was renamed `groups_id` → `group_ids` (also `all_group_ids` for implied). The plural form is gone; using `groups_id` raises `ValueError: Invalid field 'groups_id' in 'res.users'`.
**`ir.ui.view`**: same rename — view-level visibility gating uses `group_ids`, not `groups_id`. A record like `<field name="groups_id" eval="[(4, ref('base.group_system'))]"/>` on an `ir.ui.view` raises `ValueError: Invalid field 'groups_id' in 'ir.ui.view'` at module install. (The XML *attribute* `groups="base.group_system"` on form elements like `<page>`, `<button>`, `<field>` is unrelated and still works.)
**`ir.rule` `groups` field is additive, not restrictive.** A rule with `groups=[some_group]` applies ONLY to users in that group — it does NOT restrict non-members. So `domain_force=[(1,'=',1)]` + `groups=[base.group_system]` does NOT mean "only admins see rows"; it means "admins see all rows (and the rule is silent on everyone else)". Non-admins are gated by the ACL (`ir.model.access.csv`), not the rule. To truly restrict by group at the rule layer, pair a global rule (`groups=[]`, `domain_force=[(0,'=',1)]` = block-all baseline) with a group-scoped allow rule. Default to letting the ACL do the gating; use rules for row-level filters that ACLs cannot express.
6. **res.groups**: NO `users` field, NO `category_id` field.
7. **Search views**: NO `group expand="0"` syntax.
8. **SCSS imports**: `@import "./partial"` is FORBIDDEN in Odoo 19 custom SCSS. It prints a warning and silently falls back to the old cached bundle. Register every SCSS file (including `_partial.scss` tokens) as a separate entry in `web.assets_backend`. Put tokens first; Odoo concatenates bundle files so SCSS variables/mixins from the first file are visible to every later file.
9. **SQL constraints & indexes**: Odoo 19 dropped `_sql_constraints = [(name, def, msg), ...]` and the `init()`/raw-SQL pattern. Both still parse but only emit a warning and are silently ignored. Use declarative class attributes instead:
```python
_check_qty_positive = models.Constraint('CHECK (qty > 0)', 'Quantity must be positive.')
_user_time_idx = models.Index('(user_id, event_time DESC)')
```
The attribute name after the leading underscore becomes the SQL object name suffix (`{table}_{suffix}`). `models.Index` accepts `DESC`, `WHERE` predicates, and `USING btree (...)`. Sources: `odoo/orm/model_classes.py` (warns at registry build), `odoo/orm/table_objects.py` (Constraint + Index classes).
10. **`res.users._login` is an instance method in Odoo 19**, not a classmethod as in earlier versions. Signature is `def _login(self, credential, user_agent_env)` — there is no `db` parameter. Override it like any normal instance method (`super()._login(credential, user_agent_env)`). When called via `authenticate()` on an empty recordset, `self` carries the right env. Older recipes that build a separate `api.Environment` from `odoo.modules.registry.Registry(db)` no longer apply. Source: `odoo/addons/base/models/res_users.py:760`.
11. **Inherited `ir.ui.view` records cannot have `groups`/`group_ids` on the record itself.** Odoo 19 raises `ParseError: Inherited view cannot have 'groups' defined on the record. Use 'groups' attributes inside the view definition` at install time. Move the gate to the inner XML nodes — every `<button>`, `<page>`, `<field>`, `<xpath>`, `<group>` etc. supports a `groups="base.group_system"` attribute. For an inherited form with a smart button + admin tab, put `groups=` on the button and the page individually; leave the `<record model="ir.ui.view">` clean.
12. **`mail.template` QWeb/inline_template `ctx` IS `self.env.context`** — not a nested dict you can pass. `MailRenderMixin._render_eval_context()` sets `ctx = self.env.context`, so `ctx.get('foo')` in subject/body resolves to `env.context.get('foo')`. To pass dynamic data to a template, spread keys directly into the context: `tmpl.with_context(**my_data).send_mail(res_id, ...)`. Calling `tmpl.with_context(ctx=my_data)` puts the dict at `env.context['ctx']`, and the template's `ctx.get('foo')` becomes `env.context.get('foo')` → `None` (looks like a silent rendering bug — subject ends up blank).
13. **`ir.cron` dropped `numbercall`** in Odoo 19. Old recipes set `<field name="numbercall">-1</field>` for "run forever"; that now raises `ValueError: Invalid field 'numbercall' in 'ir.cron'` at install time. Just omit the field — recurring crons keep running as long as `active=True`. Source: `odoo/addons/base/models/ir_cron.py` field list.
14. **`cr.commit()` / `cr.rollback()` raise AssertionError inside `TransactionCase`** — they are NOT silent no-ops in Odoo 19. The test cursor explicitly refuses both ("Cannot commit or rollback a cursor from inside a test, this will lead to a broken cursor when trying to rollback the test. Please rollback to a specific savepoint instead..."). For cron/worker code that needs per-row isolation so one bad row doesn't roll back the whole batch, use `with self.env.cr.savepoint(): ...` inside the loop instead of `cr.commit()`. Savepoints work in both prod (under the outer cron transaction) and tests (under the outer test transaction). The cron transaction commits the whole batch when the method returns; in tests everything rolls back cleanly. Source: `odoo/sql_db.py::TestCursor.commit` and `Cursor.savepoint()`.
15. **There is NO `sale.subscription` model in Odoo 19** (Enterprise `sale_subscription`). A subscription is a **`sale.order`** with `is_subscription=True`, `plan_id` → **`sale.subscription.plan`** (the recurrence), plus `subscription_state` / `next_invoice_date` / `recurring_monthly`. Any Many2one or relation that targets "a subscription" must point at `sale.order` (filter `domain=[('is_subscription','=',True)]`) — **not** `sale.subscription`, which does not exist and fails at install. The surviving `sale.subscription.*` records are only the plan + wizards/reports (`sale.subscription.plan`, `sale.subscription.report`, `sale.subscription.change.customer.wizard`, `sale.subscription.close.reason.wizard`). Verified on live `nexamain` (odoo-nexa, 19.0): `SELECT model FROM ir_model WHERE model LIKE 'sale.subscription%'`.
16. **Renaming a module's technical name needs a DB rename, not just a folder rename.** The technical name is baked into the database: `ir_module_module.name`, every external ID in `ir_model_data.module`, each view's `ir_ui_view.key` prefix, and the `ir_module_module_dependency.name` rows of every module that depends on it. Rename only the folder + in-code references and Odoo treats the new name as a fresh uninstalled module — installing it **duplicates** groups/templates/menus and **orphans** all existing data. On every DB that already has it installed, run an in-place SQL rename (the 4 tables above) **before** `-u <newname>`; a fresh DB needs nothing. Reference script + full rationale: [`fusion_portal/rename_module.sql`](fusion_portal/rename_module.sql) (written for the `fusion_authorizer_portal` → `fusion_portal` rename). Also update cross-module `depends`, `inherit_id="<old>.view"`, `t-call`, `env.ref('<old>.xmlid')`, asset paths (`<old>/static/...`), and `from odoo.addons.<old>... import`.
17. **`url_encode` (and werkzeug url helpers) are NOT available in the Odoo 19 `mail.template` QWeb render context.** Using `url_encode({...})` inside a template `body_html` (e.g. to build a fallback link) makes the template fail Odoo's save-time render validation **at install**, surfacing as the opaque `ParseError: ... Oops! We couldn't save your template due to an issue with this value: <the entire body html>` (the real `NameError` is hidden, and `--log-handler odoo.tools.convert:DEBUG` does NOT reveal it). Build URLs with plain string methods instead: `'https://…?q=' + (value or '').replace(' ', '+')`. Found installing `fusion_repairs` (post-visit NPS template). **That same opaque "issue with this value" error wraps ANY render failure in a mail.template body** — when you see it, suspect an undefined name / bad field reference in the template, not malformed XML.
## Card Styling — Copy Odoo's Kanban Pattern
Don't rely on `var(--bs-border-color)` or `var(--bs-body-bg)` for card surfaces — they drift between themes/addons and often render **invisible**. Odoo's own kanban (`.o_kanban_record`) uses **explicit hex** values:
@@ -96,41 +75,14 @@ Odoo content-hashes the compiled bundle URL (`/web/assets/<hash>/...`). When CSS
- Canadian English for all user-facing text
- Currency: `$` sign with Monetary fields + currency_id
## Module-Specific Notes
- **fusion_clock** — developed in **Claude Code** (no longer Cursor; no concurrent-editing conflicts). Changed a lot recently (NFC kiosk: tap-to-clock, enrollment + program-from-unknown-tap, manager page, sounds, screen lock, guided profile-photo capture, faster animations). Still read files fresh before editing rather than assuming the layout. Live on entech (`odoo-entech` / LXC 111 on `pve-worker5`).
- **fusion_repairs** — read [`fusion_repairs/cloud.md`](fusion_repairs/cloud.md) before feature work. **Version `19.0.2.3.0`** (Plan-1 maintenance foundation added 2026-06-02). **NOT Community-installable** — it transitively pulls in Enterprise `ai` + `knowledge` (`fusion_repairs → fusion_portal → fusion_claims → ai`; `fusion_portal → knowledge`), so it can NOT be installed or tested on local `odoo-modsdev` (Community) — the old `-d fusion-dev -u fusion_repairs` recipe does NOT work. **Test on Enterprise:** an isolated `westin-fr-test` DB on the `odoo-westin` host (clone of prod `westin-v19`; a fresh-DB clone install also needs a one-time orphaned-FK cleanup because prod has orphaned account/tax m2m rows). First-ever clean install surfaced + fixed 2 bugs (url_encode → rule 17; menu parent defined after its children) in commit `903ceb10`. **Not production-deployed** to Westin yet. **Test-runner gotchas on that prod-config container:** `--test-enable` SILENTLY SKIPS all tests without `--workers 0`; the conf's `log_level=warn` hides test output (add `--log-level=test`); the post_install phase also trips on a pre-existing module, so verify behaviour via `odoo shell` rather than the test runner. `mail_template_data.xml` is `noupdate=1` → template edits load on a FRESH install (the prod deploy) but NOT on `-u` of an already-installed DB. Outstanding: maintenance booking (Plan 2), visit log (Plan 3), backfill wizard (Plan 4), office follow-up crons (Plan 5), RingCentral SMS.
- **fusion_portal** (formerly `fusion_authorizer_portal`) — authorizer/sales-rep portal; **ENTERPRISE-only** (depends `knowledge` → cannot run on local Community; verify on a westin clone, see *Westin Prod* below). **Assessment-visit flow LIVE on westin, v19.0.2.10.1.** A `fusion.assessment.visit` bundles the assessments from one home visit and, on completion (`action_complete_visit`), groups them by funding workflow (`x_fc_sale_type`) into ONE draft sale order per workflow (MoD/ADP/ODSP/WSIB/private/hardship/insurance) — never one combined SO, never one-per-item-within-a-funding. ADP devices group into one order (combination guard: ≤1 seated {wheelchair/powerchair/scooter} + ≤1 walker); accessibility items group per funding. Reps enter via the "Start a Visit" dashboard tile → `/my/visit/new`; the express/accessibility forms carry `?visit_id=` and defer SO creation to the visit. Renaming the technical name needs a DB rename — see [`fusion_portal/rename_module.sql`](fusion_portal/rename_module.sql).
## Cursor-Managed Modules
- **fusion_clock** is currently being modified in Cursor — always read files fresh before editing, don't assume you know the current state
## Workflow
- Local dev: `docker exec odoo-modsdev-app odoo -d fusion-dev -u <module> --stop-after-init`
- Local URL: http://localhost:8082
- **Running module tests requires ephemeral ports.** The dev container's main Odoo process holds 8069 and 8072; a `docker exec ... odoo --test-enable` will die with `Address already in use` unless you also pass `--http-port=0 --gevent-port=0`. This is because Odoo 19 forces `http_spawn()` when `--test-enable` is set, even when `--no-http` is passed. Canonical test invocation:
```bash
docker exec odoo-modsdev-app odoo -d fusion-dev --test-enable --test-tags /<module> \
-u <module> --stop-after-init --http-port=0 --gevent-port=0 2>&1 | tail -60
```
- **`fusion_centralize_billing` tests run on odoo-trial (VM 316).** Local dev is Community and cannot install this module. Use `bash scripts/fcb_test_on_trial.sh` from the repo root. The script uses `--http-port 8070` to avoid the port 8069 conflict with the live odoo-trial-app container. Pass = `FCB_EXIT=0`. Takes ~1-2 min.
- **Python deps not bundled with `odoo:19` image:** `user_agents` (used by `fusion_login_audit`), and likely others. Install ephemerally with `docker exec -u 0 odoo-modsdev-app pip install <pkg> --break-system-packages`. The install is LOST when the container is recreated (e.g. `docker compose up -d` after a compose edit). When this happens, the symptom is `ModuleNotFoundError` deep in the auth or report code. Re-run the pip install. A persistent fix would be a custom Dockerfile or a startup hook on the compose service — not done yet.
- Local dev: `docker exec odoo-dev-app odoo -d fusion-dev -u <module> --stop-after-init`
- Local URL: http://localhost:8069
- Test before deploying. Edit existing files — don't create unnecessary new ones.
## PDF Preview — Prefer fusion_pdf_preview Over Downloads/New-Tab
When a Python action opens an attachment, route it through `fusion_pdf_preview` instead of returning `ir.actions.act_url` with `download=true` or `target=new`. The preview dialog gives operators preview + print + download in one place and writes an audit log; non-PDF attachments fall back to the legacy download path automatically.
The drop-in replacement is the new helper on `ir.attachment`:
```python
return att.action_fusion_preview(title='My Doc')
# vs. the old pattern:
# return {'type': 'ir.actions.act_url',
# 'url': '/web/content/%s?download=true' % att.id,
# 'target': 'new'}
```
The helper auto-detects mimetype: PDFs go to the dialog, everything else (ZPL, CSV, XML, images) stays on download. So a callsite that today serves CSV today and a PDF tomorrow doesn't need a code change — same call, different routing.
If you need to invoke the client action directly (rare — only when you don't have a recordset handy), the tag is `fusion_pdf_preview.open_attachment` and the params are `{attachment_id, title, model_name, record_ids, report_name}`. See `fusion_pdf_preview/static/src/js/open_attachment_action.js`.
Existing reports (`ir.actions.report` of type `qweb-pdf`) are intercepted automatically by `fusion_pdf_preview/static/src/js/pdf_preview.js`; the helper above is for the *other* pattern — attachments opened by custom buttons.
## Supabase Knowledge Base
Before starting unfamiliar work, check Supabase for context:
```bash
@@ -140,149 +92,3 @@ PGPASSWORD='a09e12e0995dc29446631fa458f3d4b3' psql -h 100.74.28.73 -p 5433 -U po
- `fusionapps.issues` — known issues and fixes
- `fusionapps.code_snippets` — reference code
- `fusionapps.quick_commands` — deployment and admin commands
## Westin Prod — Deploy & Clone-Verify (fusion_portal et al.)
Westin prod: host `odoo-westin`, app container `odoo-dev-app`, db container `odoo-dev-db`, DB `westin-v19` (user `odoo`, pw `DevSecure2025!`), addons `/opt/odoo/custom-addons` → `/mnt/extra-addons`, Enterprise `/mnt/enterprise-addons`, conf `/etc/odoo/odoo.conf`. ENTERPRISE env — modules depending on `knowledge` (fusion_portal → fusion_claims) cannot run on local Community, so verify on a clone before prod.
**Clone-verify a change (prod-safe, isolated — prod files + live DB untouched):**
1. Clone online: `docker exec -e PGPASSWORD='DevSecure2025!' odoo-dev-db sh -c 'dropdb -U odoo --if-exists westin-v19-visittest; createdb -U odoo -O odoo westin-v19-visittest && pg_dump -U odoo westin-v19 | psql -U odoo -q -d westin-v19-visittest'` (~2 min, ~152M -Fc).
2. Stage the branch module into an isolated dir INSIDE the addons path: `/opt/odoo/custom-addons/_test/<module>`, then `-u <module> --stop-after-init --no-http --db_host db --db_port 5432 --db_user odoo --db_password 'DevSecure2025!' --addons-path=/usr/lib/python3/dist-packages/odoo/addons,/usr/lib/python3/dist-packages/addons,/mnt/extra-addons/_test,/mnt/enterprise-addons,/mnt/extra-addons`. The `/mnt/extra-addons/_test` prefix SHADOWS prod's copy (first matching path wins); deps load from the real `/mnt/extra-addons`.
3. Smoke-test via `odoo shell -d westin-v19-visittest` (same addons-path); `env.cr.rollback()` at the end. To exercise email paths WITHOUT sending: `UPDATE ir_mail_server SET active=false;` AND in the shell `env['ir.mail_server'].__class__.send_email = lambda self, message, *a, **k: 'noop'` (`odoo shell` rejects `--smtp-server`).
**THE ORPHANED-TAX-FK TRAP** (cost real diagnosis time): westin-v19 has ~3300 orphaned rows in `product_taxes_rel` + ~3300 in `product_supplier_taxes_rel` (`tax_id` → deleted `account_tax`), under FKs that are `convalidated=true` (taxes deleted via an FK-bypassing path; PG never re-checks a validated constraint). A plain `pg_dump | psql` clone can't recreate a *validating* FK over orphaned data → the FK is lost on the clone → Odoo `check_foreign_keys` tries to add it → `ForeignKeyViolation: Key (tax_id)=(N) is not present in account_tax` → "Failed to load registry". **Fix ON THE CLONE only:** `DELETE FROM <t> WHERE tax_id NOT IN (SELECT id FROM account_tax)` across every `%_rel` table with a tax column. **Prod `-u` is SAFE without touching the orphans** — prod's FK already exists, so Odoo skips it (it never re-validates a present FK); proven empirically by replicating FK-present+orphan on a clone and running `-u` (exit 0, orphan untouched). Owner is auditing the orphans — do NOT delete them on prod without sign-off.
**Deploy:** backup (`docker exec ... pg_dump -Fc -U odoo westin-v19 > /opt/odoo/backups/<name>.dump` + `cp -r` the module dir to `/opt/odoo/backups/` — OUTSIDE the addons path, never a `*.bak` dir inside it) → `scp` branch to `/opt/odoo/staging/<module>` → swap into `/opt/odoo/custom-addons/<module>` → `-u <module>` → `DELETE FROM ir_attachment WHERE url LIKE '/web/assets/%'` → `docker restart odoo-dev-app`. **Gate the restart on `-u` exit 0**; on failure restore the dir backup and do NOT restart. When a feature branch predates main's other merges, merge to `main` **surgically** (temp worktree off `origin/main` + `git checkout <branch> -- <module>` → commit → fast-forward push) so you don't revert parallel sessions' work.
## Fusion Helpdesk — Customer Follow-up + Embedded Inbox (deployment + handoff)
Two modules: **`fusion_helpdesk`** (client — runs on each client deployment, e.g. entech)
and **`fusion_helpdesk_central`** (runs on the central Odoo = nexa). The client forwards
tickets to central over **XML-RPC**; central find-or-creates the customer partner +
follower; the client shows a server-side-scoped "My Tickets" inbox + systray unread badge.
### Where each runs / how to deploy
- **Central = nexa** (`erp.nexasystems.ca`, VM 315 on pve-worker1, Docker, DB `nexamain`).
Source on host: `/opt/odoo/custom-addons/fusion_helpdesk_central`. Upgrade (brief downtime):
```bash
ssh pve-worker1 "qm guest exec 315 --timeout 590 -- bash -c 'docker stop odoo-nexa-app; docker run --rm --network odoo_odoo-network -v odoo_odoo-data:/var/lib/odoo -v /opt/odoo/custom-addons:/mnt/extra-addons -v /opt/odoo/enterprise-addons:/mnt/enterprise-addons -v /opt/odoo/odoo.conf:/etc/odoo/odoo.conf odoo-nexa:19 odoo -d nexamain -u fusion_helpdesk_central --stop-after-init --http-port=0 --gevent-port=0 > /tmp/up.log 2>&1; docker start odoo-nexa-app'"
```
Use `;` (not `&&`) before `docker start` so the app ALWAYS restarts even if the upgrade
fails. nexa `odoo.conf` has `log_level=warn`, so test/INFO lines are suppressed — verify
the result via DB query, not the upgrade log.
- **Client = entech** (LXC 111 on pve-worker5, **native systemd `odoo.service`**, DB `admin`,
config `/etc/odoo/odoo.conf`, source `/mnt/extra-addons/custom/fusion_helpdesk`). No host
bind mount — get files in with `scp` to pve-worker5 then `pct push 111 <file> <dest>`.
Upgrade as the `odoo` user (NOT root):
```bash
pct exec 111 -- bash -lc "systemctl stop odoo; runuser -u odoo -- /usr/bin/odoo --config /etc/odoo/odoo.conf -d admin -u fusion_helpdesk --stop-after-init --http-port=0 --gevent-port=0 --logfile=/tmp/up.log; systemctl start odoo"
```
**Backup dir MUST live OUTSIDE the addons path** (e.g. `/root/`). A dir named `*.bak.*`
*inside* `/mnt/extra-addons/custom` makes Odoo try to load it as a module →
`FileNotFoundError: Invalid module name: fusion_helpdesk.bak.predeploy` → whole registry
load fails. (Learned the hard way; auto-rollback restored it.) Current rollback copy:
`/root/fh_bak_predeploy`.
### REQUIRED prerequisite on the central service account (easy to miss)
The keystone passes `partner_email`, so central find-or-creates the partner. The XML-RPC
service account (**`support@nexasystems.ca`, uid 33** on nexa) MUST have the **Contact
Creation** group (`base.group_partner_manager`). Without it, `helpdesk.ticket.create`
faults with *"not allowed to create 'Contact' (res.partner)"* for any reporter who isn't
already a contact. Granted on nexa 2026-05-27. **Every new client deployment needs this
grant on the central account.**
### Testing lesson
Client logic (scope domain, seen model, vals, `_norm_email`) is unit-tested in
`fusion_helpdesk/tests/` and runs on local Community (`-d modsdev`). **Smoke tests must
call the controller endpoints, not re-implement their logic** — the Phase 6 smoke test
replicated `build_scope_domain` directly and so missed a `NameError` (`_norm_email`
referenced but never imported) that broke every inbox endpoint. Run
`docker exec odoo-modsdev-app python3 -m pyflakes <file>` after editing controllers — it
catches undefined names instantly.
### Two non-obvious gotchas the first ship hit (fixed 2026-05-27 afternoon)
1. **`group_reporter_admin` had zero members on install** — `res.groups` doesn't auto-grant
to the deployment admin, so the "All (deployment)" toggle never appeared and admins were
stuck with the per-user `partner_email` filter. Fix lives in
`fusion_helpdesk/security/fusion_helpdesk_groups.xml`: extend `base.group_system.implied_ids`
with `(4, ref('fusion_helpdesk.group_reporter_admin'))`. The (4, id) tuple is additive — it
never replaces base's existing implied groups. Verified live: all six entech
`base.group_system` members now return True for
`has_group('fusion_helpdesk.group_reporter_admin')` after the upgrade.
2. **Historical tickets had NULL `x_fc_client_label` + NULL `partner_email`** — anything
created before the customer-followup ship was invisible in "My Tickets" because the scope
filter requires both fields. The reporter identity was preserved only in the description
HTML (the diag block's "User" row). Backfill recipe (50 ENTECH + 1 WESTIN, all in one
transaction):
```sql
UPDATE helpdesk_ticket
SET x_fc_client_label = substring(name from '^\[([A-Z]+)\]'),
partner_email = lower(substring(
substring(description from 'User</td><td[^>]*><code>([^<]+)</code>')
from ', ([^)]+)\)')),
partner_name = regexp_replace(
substring(description from 'User</td><td[^>]*><code>([^<]+)</code>'),
' \(#\d+, [^)]+\)$', '')
WHERE name ~ '^\[[A-Z]+\]'
AND description ~ 'User</td>'
AND x_fc_client_label IS NULL;
```
Safe: SQL UPDATE bypasses the central `helpdesk.ticket.create` override, so no duplicate
ack emails. Per-deployment label inferred from the `[XXX]` name prefix the old code was
already adding. Note: users whose `login != email` (e.g. uid=2 on entech has login
`gsinghpal@outlook.com` and email `gs@nexasystems.ca`) get tagged with their *login* in
backfill — they won't see their old tickets in "Mine", only in "All". New tickets are
tagged with the profile email (`user.email` first, `user.login` fallback).
### STATUS (handoff 2026-05-27 afternoon)
- **Merged to `main`** as squash commit `6c15a7b1` (initial ship). Today's followup is the
group/backfill fix described above — committed separately.
- **Deployed live**: nexa `fusion_helpdesk_central` **19.0.1.1.0**; entech `fusion_helpdesk`
**19.0.1.5.0** (bumped from 19.0.1.4.1 for the implied_ids fix). Both services healthy.
- **Historical entech tickets backfilled** on nexa (51 rows: 50 ENTECH + 1 WESTIN).
- **Smoke-tested live end-to-end** (entech→nexa): partner resolved + follower + `ENTECH`
label, branded ack email queued, support reply visible in thread, inbox scope finds own
ticket, no cross-deployment leak. The "Mine" view for non-admins and the "All" view for
the entech owner both populate as expected.
- **Browser confirmation**: hard-refresh entech (DevTools → Empty Cache and Hard Reload),
open the systray helpdesk dialog. The Mine/All toggle appears for the owner; "All" shows
all 50 ENTECH tickets, "Mine" shows the count matching the owner's profile email.
Tracebacks live in `/var/log/odoo/odoo-server.log` on entech (LXC 111 / pve-worker5).
## Fusion Centralized Billing (`fusion_centralize_billing`) — engine + test harness
Odoo (`odoo-nexa`, live DB `nexamain`) is being made the single billing brain for every
NexaSystems app (NexaCloud, NexaDesk/Fusion-Chat, NexaMaps), **superseding Lago**. The
module adds only the metering + integration layer (service registry, identity links,
metric/charge catalog, aggregate-push usage engine, inbound Lago-shaped REST API at
`/api/billing/v1/*`, outbound HMAC webhooks, dual-run reconciliation); all financial
behaviour is native Odoo **Enterprise** (`sale_subscription` + `payment_stripe` +
`account_accountant`). Design + rollout live in `docs/superpowers/specs/`
(`2026-05-27-nexa-billing-centralized-design.md` = architecture;
`2026-06-02-nexacloud-odoo-billing-cutover-design.md` = NexaCloud pilot: build → import →
dual-run → gated flip) and `docs/superpowers/plans/`.
**Testing it — NOT on local `odoo-modsdev` (community) and NEVER `-u` against live `nexamain`.**
It needs Enterprise deps, so tests run on `odoo-nexa` in an **isolated throwaway container**
against a **fresh** DB with the Canadian localization:
```
ssh odoo-nexa
# fresh DB (inside odoo-nexa-db): dropdb --if-exists fcb_test; createdb fcb_test
cp -a /opt/odoo/custom-addons /opt/odoo/custom-addons-staging # edit/sync HERE, never the live module dir
docker run --rm --network odoo_odoo-network \
-v /opt/odoo/custom-addons-staging:/mnt/extra-addons:ro -v /opt/odoo/enterprise-addons:/mnt/enterprise-addons:ro \
-v /opt/odoo/odoo.conf:/etc/odoo/odoo.conf:ro -v /opt/odoo/staging-data:/var/lib/odoo \
odoo-nexa:19 -c /etc/odoo/odoo.conf -d fcb_test --db_host=db --db_user=odoo \
--addons-path=/usr/lib/python3/dist-packages/odoo/addons,/mnt/extra-addons,/mnt/enterprise-addons \
--without-demo=all --test-enable --test-tags /fusion_centralize_billing \
-i l10n_ca,fusion_centralize_billing --stop-after-init --no-http
```
Iterate with `-u fusion_centralize_billing` (reuse fcb_test). Gotchas that cost hours:
- **`l10n_ca` is required** — the ledger tests need a Canadian CoA + active CAD + 13% HST.
- A **prod clone is the wrong base** — its existing rows collide with fixed-code test fixtures
(`nexacloud` service / `cpu_seconds` metric) across 5 test files.
- odoo.conf sets `log_level=warn`, so **passing tests log nothing** — exit 0 alone does NOT
prove tests ran (a tag matching zero tests is also exit 0). Confirm execution with
`--log-handler=odoo.addons.fusion_centralize_billing.tests:INFO` (look for `Starting
<Class>.<method>`). The **exit code is authoritative** (1 on any failure).
- Do **NOT** pass `--workers=0` (blanks captured stdout) or `--logfile=/dev/stdout` (errors out).

View File

@@ -1,355 +0,0 @@
# Graph Report - /Users/gurpreet/Github/Odoo-Modules/Entech Plating (2026-04-22)
## Corpus Check
- 13 files · ~19,911 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 312 nodes · 494 edges · 45 communities detected
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 20 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Community Hubs (Navigation)
- [[_COMMUNITY_Community 0|Community 0]]
- [[_COMMUNITY_Community 1|Community 1]]
- [[_COMMUNITY_Community 2|Community 2]]
- [[_COMMUNITY_Community 3|Community 3]]
- [[_COMMUNITY_Community 4|Community 4]]
- [[_COMMUNITY_Community 5|Community 5]]
- [[_COMMUNITY_Community 6|Community 6]]
- [[_COMMUNITY_Community 7|Community 7]]
- [[_COMMUNITY_Community 8|Community 8]]
- [[_COMMUNITY_Community 9|Community 9]]
- [[_COMMUNITY_Community 10|Community 10]]
- [[_COMMUNITY_Community 11|Community 11]]
- [[_COMMUNITY_Community 12|Community 12]]
- [[_COMMUNITY_Community 13|Community 13]]
- [[_COMMUNITY_Community 14|Community 14]]
- [[_COMMUNITY_Community 15|Community 15]]
- [[_COMMUNITY_Community 16|Community 16]]
- [[_COMMUNITY_Community 17|Community 17]]
- [[_COMMUNITY_Community 18|Community 18]]
- [[_COMMUNITY_Community 19|Community 19]]
- [[_COMMUNITY_Community 20|Community 20]]
- [[_COMMUNITY_Community 21|Community 21]]
- [[_COMMUNITY_Community 22|Community 22]]
- [[_COMMUNITY_Community 23|Community 23]]
- [[_COMMUNITY_Community 24|Community 24]]
- [[_COMMUNITY_Community 25|Community 25]]
- [[_COMMUNITY_Community 26|Community 26]]
- [[_COMMUNITY_Community 27|Community 27]]
- [[_COMMUNITY_Community 28|Community 28]]
- [[_COMMUNITY_Community 29|Community 29]]
- [[_COMMUNITY_Community 30|Community 30]]
- [[_COMMUNITY_Community 31|Community 31]]
- [[_COMMUNITY_Community 32|Community 32]]
- [[_COMMUNITY_Community 33|Community 33]]
- [[_COMMUNITY_Community 34|Community 34]]
- [[_COMMUNITY_Community 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
- [[_COMMUNITY_Community 38|Community 38]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
## God Nodes (most connected - your core abstractions)
1. `FusionTechnicianTask` - 65 edges
2. `FusionTaskMapController` - 38 edges
3. `FusionTaskSyncConfig` - 14 edges
4. `create()` - 10 edges
5. `_float_to_time_str()` - 10 edges
6. `FusionEmailBuilderMixin` - 9 edges
7. `create()` - 7 edges
8. `_check_no_overlap()` - 6 edges
9. `_get_tech_start_locations()` - 6 edges
10. `_cron_check_late_arrivals()` - 6 edges
## Surprising Connections (you probably didn't know these)
- `log_location()` --calls--> `create()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/technician_location.py → /Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_partner.py
- `create()` --calls--> `_push_tasks()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/technician_task.py → /Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/task_sync.py
- `get_map_data()` --calls--> `get_latest_locations()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/technician_task.py → /Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/technician_location.py
- `register_subscription()` --calls--> `create()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py → /Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_partner.py
## Communities
### Community 0 - "Community 0"
Cohesion: 0.05
Nodes (28): FusionTechnicianTask, _onchange_is_in_store(), Populate address fields from a partner record., Create or update a linked calendar.event for external calendar sync. On, Hook: post task creation notice to linked order chatter. Override in fus, Hook: mark linked sale orders as ready for delivery. Override in fusion_, Mark task as Completed., Hook: check additional requirements before task completion. Override in (+20 more)
### Community 1 - "Community 1"
Cohesion: 0.07
Nodes (12): classifyDate(), classifyTask(), extractTechnicians(), floatToTime12(), FusionMapArchParser, FusionTaskMapController, groupTasks(), initialsOf() (+4 more)
### Community 2 - "Community 2"
Cohesion: 0.09
Nodes (22): FusionPushSubscription, register_subscription(), create(), ResPartner, _cron_pull_remote_tasks(), FusionTaskSyncConfig, _push_shadow_status(), _push_tasks() (+14 more)
### Community 3 - "Community 3"
Cohesion: 0.09
Nodes (18): _check_no_overlap(), _compute_datetimes(), _compute_prev_task_summary(), _compute_schedule_info(), _compute_time_displays(), default_get(), _float_to_time_str(), _onchange_compute_end_time() (+10 more)
### Community 4 - "Community 4"
Cohesion: 0.11
Nodes (16): _cron_calculate_travel_times(), _cron_send_push_notifications(), _get_clock_in_locations(), _get_tech_start_locations(), Get the start address for a technician. Priority: 1. Technici, Geocode an address string and return (lat, lng) or (0.0, 0.0)., Recalculate travel for a set of (tech_id, date) combinations. Start-poi, Get the technician's most recent GPS location. Priority: 1. L (+8 more)
### Community 5 - "Community 5"
Cohesion: 0.11
Nodes (12): _cron_check_late_arrivals(), Recalculate travel time for THIS task from the tech's current GPS. Call, Check that all earlier tasks for the same technician+date are completed., Write GPS coordinates from context onto the task record., Mark task as En Route., Mark task as In Progress., Cancel the task. Sends cancellation email and runs cancel hooks., Hook: additional side-effects after task cancellation. Override in fusio (+4 more)
### Community 6 - "Community 6"
Cohesion: 0.14
Nodes (9): FusionEmailBuilderMixin, Build a labeled details table section. Args: heading: Secti, Build a left-border accent note block., Build a centered CTA button., Build a dashed-border attachment callout. Args: description, Return an inline status badge/pill HTML snippet., Return company name, phone, email for email templates., Check if email notifications are enabled in settings. (+1 more)
### Community 7 - "Community 7"
Cohesion: 0.12
Nodes (10): FusionTechnicianLocation, get_latest_locations(), log_location(), create(), _fill_address_vals(), get_map_data(), Hook: fill address from linked records during create. Base implementati, Hook: post-create side-effects for linked records. Override in fusion_c (+2 more)
### Community 8 - "Community 8"
Cohesion: 1.0
Nodes (2): _fusion_tasks_post_init(), Post-install hook for fusion_tasks. 1. Sets default ICP values (upsert - sa
### Community 9 - "Community 9"
Cohesion: 1.0
Nodes (1): ResCompany
### Community 10 - "Community 10"
Cohesion: 1.0
Nodes (1): ResUsers
### Community 11 - "Community 11"
Cohesion: 1.0
Nodes (1): ResConfigSettings
### Community 12 - "Community 12"
Cohesion: 1.0
Nodes (0):
### Community 13 - "Community 13"
Cohesion: 1.0
Nodes (0):
### Community 14 - "Community 14"
Cohesion: 1.0
Nodes (1): Log the current user's location. Called from portal JS.
### Community 15 - "Community 15"
Cohesion: 1.0
Nodes (1): Get the most recent location for each technician (for map view). Includ
### Community 16 - "Community 16"
Cohesion: 1.0
Nodes (1): Remove location logs based on configurable retention setting. Setting (
### Community 17 - "Community 17"
Cohesion: 1.0
Nodes (1): Register or update a push subscription.
### Community 18 - "Community 18"
Cohesion: 1.0
Nodes (1): Generate 12-hour time slots every 15 minutes, store hours only (9 AM - 6 PM).
### Community 19 - "Community 19"
Cohesion: 1.0
Nodes (1): Sync the 12h selection fields from the raw float values.
### Community 20 - "Community 20"
Cohesion: 1.0
Nodes (1): Convert float hours to readable time strings.
### Community 21 - "Community 21"
Cohesion: 1.0
Nodes (1): Set default duration based on task type.
### Community 22 - "Community 22"
Cohesion: 1.0
Nodes (1): Auto-compute end time from start + duration. Also run overlap check.
### Community 23 - "Community 23"
Cohesion: 1.0
Nodes (1): Combine date + float time into proper Datetime fields for calendar. time
### Community 24 - "Community 24"
Cohesion: 1.0
Nodes (1): Show booked + available time slots for the technician on the selected date.
### Community 25 - "Community 25"
Cohesion: 1.0
Nodes (1): Show previous task info + travel time warning with color coding.
### Community 26 - "Community 26"
Cohesion: 1.0
Nodes (1): Auto-fill company address when task is marked as in-store.
### Community 27 - "Community 27"
Cohesion: 1.0
Nodes (1): Auto-fill address fields from the selected client's address.
### Community 28 - "Community 28"
Cohesion: 1.0
Nodes (1): Non-in-store tasks must have a geocoded address.
### Community 29 - "Community 29"
Cohesion: 1.0
Nodes (1): Prevent overlapping bookings for the same technician on the same date.
### Community 30 - "Community 30"
Cohesion: 1.0
Nodes (1): Auto-set start/end time to the first available slot when tech+date change.
### Community 31 - "Community 31"
Cohesion: 1.0
Nodes (1): Handle calendar time range selection: pre-fill date + times from context.
### Community 32 - "Community 32"
Cohesion: 1.0
Nodes (1): Helper to fill address vals dict from a partner record.
### Community 33 - "Community 33"
Cohesion: 1.0
Nodes (1): Return task data, technician locations, and Google Maps API key. Args:
### Community 34 - "Community 34"
Cohesion: 1.0
Nodes (1): Build a dict of technician start locations for route origins. Priority
### Community 35 - "Community 35"
Cohesion: 1.0
Nodes (1): Get today's clock-in lat/lng from fusion_clock if installed. Uses the t
### Community 36 - "Community 36"
Cohesion: 1.0
Nodes (1): Cron job: Calculate travel times for today and tomorrow. Runs every 15
### Community 37 - "Community 37"
Cohesion: 1.0
Nodes (1): Cron: detect tasks where the technician hasn't started and the scheduled
### Community 38 - "Community 38"
Cohesion: 1.0
Nodes (1): Cron: Send push notifications for upcoming tasks.
### Community 39 - "Community 39"
Cohesion: 1.0
Nodes (1): Convert float hours to time string like '9:30 AM'.
### Community 40 - "Community 40"
Cohesion: 1.0
Nodes (1): Push local task changes to all active remote instances. Called from tech
### Community 41 - "Community 41"
Cohesion: 1.0
Nodes (1): Push local status changes on shadow tasks back to their source instance.
### Community 42 - "Community 42"
Cohesion: 1.0
Nodes (1): Push a technician's location update to all remote instances. Called whe
### Community 43 - "Community 43"
Cohesion: 1.0
Nodes (1): Cron job: pull tasks and technician locations from all active remote instances.
### Community 44 - "Community 44"
Cohesion: 1.0
Nodes (1): Remove shadow tasks older than 30 days (completed/cancelled).
## Knowledge Gaps
- **119 isolated node(s):** `Post-install hook for fusion_tasks. 1. Sets default ICP values (upsert - sa`, `FusionTechnicianLocation`, `Log the current user's location. Called from portal JS.`, `Get the most recent location for each technician (for map view). Includ`, `Remove location logs based on configurable retention setting. Setting (` (+114 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **Thin community `Community 9`** (2 nodes): `ResCompany`, `res_company.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 10`** (2 nodes): `ResUsers`, `res_users.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 11`** (2 nodes): `ResConfigSettings`, `res_config_settings.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 12`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 13`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 14`** (1 nodes): `Log the current user's location. Called from portal JS.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 15`** (1 nodes): `Get the most recent location for each technician (for map view). Includ`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 16`** (1 nodes): `Remove location logs based on configurable retention setting. Setting (`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 17`** (1 nodes): `Register or update a push subscription.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 18`** (1 nodes): `Generate 12-hour time slots every 15 minutes, store hours only (9 AM - 6 PM).`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 19`** (1 nodes): `Sync the 12h selection fields from the raw float values.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 20`** (1 nodes): `Convert float hours to readable time strings.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 21`** (1 nodes): `Set default duration based on task type.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 22`** (1 nodes): `Auto-compute end time from start + duration. Also run overlap check.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 23`** (1 nodes): `Combine date + float time into proper Datetime fields for calendar. time`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 24`** (1 nodes): `Show booked + available time slots for the technician on the selected date.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 25`** (1 nodes): `Show previous task info + travel time warning with color coding.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 26`** (1 nodes): `Auto-fill company address when task is marked as in-store.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 27`** (1 nodes): `Auto-fill address fields from the selected client's address.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 28`** (1 nodes): `Non-in-store tasks must have a geocoded address.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 29`** (1 nodes): `Prevent overlapping bookings for the same technician on the same date.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 30`** (1 nodes): `Auto-set start/end time to the first available slot when tech+date change.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 31`** (1 nodes): `Handle calendar time range selection: pre-fill date + times from context.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 32`** (1 nodes): `Helper to fill address vals dict from a partner record.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 33`** (1 nodes): `Return task data, technician locations, and Google Maps API key. Args:`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 34`** (1 nodes): `Build a dict of technician start locations for route origins. Priority`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 35`** (1 nodes): `Get today's clock-in lat/lng from fusion_clock if installed. Uses the t`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 36`** (1 nodes): `Cron job: Calculate travel times for today and tomorrow. Runs every 15`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 37`** (1 nodes): `Cron: detect tasks where the technician hasn't started and the scheduled`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 38`** (1 nodes): `Cron: Send push notifications for upcoming tasks.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 39`** (1 nodes): `Convert float hours to time string like '9:30 AM'.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 40`** (1 nodes): `Push local task changes to all active remote instances. Called from tech`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 41`** (1 nodes): `Push local status changes on shadow tasks back to their source instance.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 42`** (1 nodes): `Push a technician's location update to all remote instances. Called whe`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 43`** (1 nodes): `Cron job: pull tasks and technician locations from all active remote instances.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 44`** (1 nodes): `Remove shadow tasks older than 30 days (completed/cancelled).`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `FusionTechnicianTask` connect `Community 0` to `Community 3`, `Community 4`, `Community 5`, `Community 7`?**
_High betweenness centrality (0.331) - this node is a cross-community bridge._
- **Why does `_push_shadow_status()` connect `Community 2` to `Community 5`?**
_High betweenness centrality (0.031) - this node is a cross-community bridge._
- **Why does `_push_tasks()` connect `Community 2` to `Community 5`, `Community 7`?**
_High betweenness centrality (0.027) - this node is a cross-community bridge._
- **What connects `Post-install hook for fusion_tasks. 1. Sets default ICP values (upsert - sa`, `FusionTechnicianLocation`, `Log the current user's location. Called from portal JS.` to the rest of the system?**
_119 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.05 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.07 - nodes in this community are weakly interconnected._
- **Should `Community 2` be split into smaller, more focused modules?**
_Cohesion score 0.09 - nodes in this community are weakly interconnected._

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L7", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L8", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L9", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L10", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L11", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L12", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/__init__.py", "source_location": "L13", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_res_company_py", "label": "res_company.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_company.py", "source_location": "L1"}, {"id": "res_company_rescompany", "label": "ResCompany", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_company.py", "source_location": "L8"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_res_company_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_company.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_res_company_py", "target": "res_company_rescompany", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_company.py", "source_location": "L8", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_res_config_settings_py", "label": "res_config_settings.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_config_settings.py", "source_location": "L1"}, {"id": "res_config_settings_resconfigsettings", "label": "ResConfigSettings", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_config_settings.py", "source_location": "L8"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_res_config_settings_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_config_settings.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_res_config_settings_py", "target": "res_config_settings_resconfigsettings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_config_settings.py", "source_location": "L8", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_res_users_py", "label": "res_users.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_users.py", "source_location": "L1"}, {"id": "res_users_resusers", "label": "ResUsers", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_users.py", "source_location": "L8"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_res_users_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_users.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_res_users_py", "target": "res_users_resusers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/res_users.py", "source_location": "L8", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L1"}, {"id": "init_fusion_tasks_post_init", "label": "_fusion_tasks_post_init()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L8"}, {"id": "init_rationale_9", "label": "Post-install hook for fusion_tasks. 1. Sets default ICP values (upsert - sa", "file_type": "rationale", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L9"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_init_py", "target": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_init_py", "target": "init_fusion_tasks_post_init", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L8", "weight": 1.0}, {"source": "init_rationale_9", "target": "init_fusion_tasks_post_init", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L9", "weight": 1.0}], "raw_calls": [{"caller_nid": "init_fusion_tasks_post_init", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L15"}, {"caller_nid": "init_fusion_tasks_post_init", "callee": "items", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L25"}, {"caller_nid": "init_fusion_tasks_post_init", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L26"}, {"caller_nid": "init_fusion_tasks_post_init", "callee": "set_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L27"}, {"caller_nid": "init_fusion_tasks_post_init", "callee": "ref", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L30"}, {"caller_nid": "init_fusion_tasks_post_init", "callee": "search", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L32"}, {"caller_nid": "init_fusion_tasks_post_init", "callee": "write", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/__init__.py", "source_location": "L36"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_push_subscription_py", "label": "push_subscription.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L1"}, {"id": "push_subscription_fusionpushsubscription", "label": "FusionPushSubscription", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L15"}, {"id": "push_subscription_register_subscription", "label": "register_subscription()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L55"}, {"id": "push_subscription_rationale_56", "label": "Register or update a push subscription.", "file_type": "rationale", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L56"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_push_subscription_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L9", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_push_subscription_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L10", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_push_subscription_py", "target": "push_subscription_fusionpushsubscription", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L15", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_entech_plating_fusion_tasks_models_push_subscription_py", "target": "push_subscription_register_subscription", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L55", "weight": 1.0}, {"source": "push_subscription_rationale_56", "target": "push_subscription_fusionpushsubscription_register_subscription", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L56", "weight": 1.0}], "raw_calls": [{"caller_nid": "push_subscription_register_subscription", "callee": "search", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L57"}, {"caller_nid": "push_subscription_register_subscription", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L57"}, {"caller_nid": "push_subscription_register_subscription", "callee": "write", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L59"}, {"caller_nid": "push_subscription_register_subscription", "callee": "create", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L67"}, {"caller_nid": "push_subscription_register_subscription", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Entech Plating/fusion_tasks/models/push_subscription.py", "source_location": "L67"}]}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,829 +0,0 @@
# Graph Report - /Users/gurpreet/Github/Odoo-Modules/Obsolete Files (2026-04-22)
## Corpus Check
- 173 files · ~1,651,049 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 682 nodes · 1218 edges · 121 communities detected
- Extraction: 93% EXTRACTED · 7% INFERRED · 0% AMBIGUOUS · INFERRED: 83 edges (avg confidence: 0.79)
- Token cost: 0 input · 0 output
## Community Hubs (Navigation)
- [[_COMMUNITY_Community 0|Community 0]]
- [[_COMMUNITY_Community 1|Community 1]]
- [[_COMMUNITY_Community 2|Community 2]]
- [[_COMMUNITY_Community 3|Community 3]]
- [[_COMMUNITY_Community 4|Community 4]]
- [[_COMMUNITY_Community 5|Community 5]]
- [[_COMMUNITY_Community 6|Community 6]]
- [[_COMMUNITY_Community 7|Community 7]]
- [[_COMMUNITY_Community 8|Community 8]]
- [[_COMMUNITY_Community 9|Community 9]]
- [[_COMMUNITY_Community 10|Community 10]]
- [[_COMMUNITY_Community 11|Community 11]]
- [[_COMMUNITY_Community 12|Community 12]]
- [[_COMMUNITY_Community 13|Community 13]]
- [[_COMMUNITY_Community 14|Community 14]]
- [[_COMMUNITY_Community 15|Community 15]]
- [[_COMMUNITY_Community 16|Community 16]]
- [[_COMMUNITY_Community 17|Community 17]]
- [[_COMMUNITY_Community 18|Community 18]]
- [[_COMMUNITY_Community 19|Community 19]]
- [[_COMMUNITY_Community 20|Community 20]]
- [[_COMMUNITY_Community 21|Community 21]]
- [[_COMMUNITY_Community 22|Community 22]]
- [[_COMMUNITY_Community 23|Community 23]]
- [[_COMMUNITY_Community 24|Community 24]]
- [[_COMMUNITY_Community 25|Community 25]]
- [[_COMMUNITY_Community 26|Community 26]]
- [[_COMMUNITY_Community 27|Community 27]]
- [[_COMMUNITY_Community 28|Community 28]]
- [[_COMMUNITY_Community 29|Community 29]]
- [[_COMMUNITY_Community 30|Community 30]]
- [[_COMMUNITY_Community 31|Community 31]]
- [[_COMMUNITY_Community 32|Community 32]]
- [[_COMMUNITY_Community 33|Community 33]]
- [[_COMMUNITY_Community 34|Community 34]]
- [[_COMMUNITY_Community 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
- [[_COMMUNITY_Community 38|Community 38]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
- [[_COMMUNITY_Community 45|Community 45]]
- [[_COMMUNITY_Community 46|Community 46]]
- [[_COMMUNITY_Community 47|Community 47]]
- [[_COMMUNITY_Community 48|Community 48]]
- [[_COMMUNITY_Community 49|Community 49]]
- [[_COMMUNITY_Community 50|Community 50]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
- [[_COMMUNITY_Community 53|Community 53]]
- [[_COMMUNITY_Community 54|Community 54]]
- [[_COMMUNITY_Community 55|Community 55]]
- [[_COMMUNITY_Community 56|Community 56]]
- [[_COMMUNITY_Community 57|Community 57]]
- [[_COMMUNITY_Community 58|Community 58]]
- [[_COMMUNITY_Community 59|Community 59]]
- [[_COMMUNITY_Community 60|Community 60]]
- [[_COMMUNITY_Community 61|Community 61]]
- [[_COMMUNITY_Community 62|Community 62]]
- [[_COMMUNITY_Community 63|Community 63]]
- [[_COMMUNITY_Community 64|Community 64]]
- [[_COMMUNITY_Community 65|Community 65]]
- [[_COMMUNITY_Community 66|Community 66]]
- [[_COMMUNITY_Community 67|Community 67]]
- [[_COMMUNITY_Community 68|Community 68]]
- [[_COMMUNITY_Community 69|Community 69]]
- [[_COMMUNITY_Community 70|Community 70]]
- [[_COMMUNITY_Community 71|Community 71]]
- [[_COMMUNITY_Community 72|Community 72]]
- [[_COMMUNITY_Community 73|Community 73]]
- [[_COMMUNITY_Community 74|Community 74]]
- [[_COMMUNITY_Community 75|Community 75]]
- [[_COMMUNITY_Community 76|Community 76]]
- [[_COMMUNITY_Community 77|Community 77]]
- [[_COMMUNITY_Community 78|Community 78]]
- [[_COMMUNITY_Community 79|Community 79]]
- [[_COMMUNITY_Community 80|Community 80]]
- [[_COMMUNITY_Community 81|Community 81]]
- [[_COMMUNITY_Community 82|Community 82]]
- [[_COMMUNITY_Community 83|Community 83]]
- [[_COMMUNITY_Community 84|Community 84]]
- [[_COMMUNITY_Community 85|Community 85]]
- [[_COMMUNITY_Community 86|Community 86]]
- [[_COMMUNITY_Community 87|Community 87]]
- [[_COMMUNITY_Community 88|Community 88]]
- [[_COMMUNITY_Community 89|Community 89]]
- [[_COMMUNITY_Community 90|Community 90]]
- [[_COMMUNITY_Community 91|Community 91]]
- [[_COMMUNITY_Community 92|Community 92]]
- [[_COMMUNITY_Community 93|Community 93]]
- [[_COMMUNITY_Community 94|Community 94]]
- [[_COMMUNITY_Community 95|Community 95]]
- [[_COMMUNITY_Community 96|Community 96]]
- [[_COMMUNITY_Community 97|Community 97]]
- [[_COMMUNITY_Community 98|Community 98]]
- [[_COMMUNITY_Community 99|Community 99]]
- [[_COMMUNITY_Community 100|Community 100]]
- [[_COMMUNITY_Community 101|Community 101]]
- [[_COMMUNITY_Community 102|Community 102]]
- [[_COMMUNITY_Community 103|Community 103]]
- [[_COMMUNITY_Community 104|Community 104]]
- [[_COMMUNITY_Community 105|Community 105]]
- [[_COMMUNITY_Community 106|Community 106]]
- [[_COMMUNITY_Community 107|Community 107]]
- [[_COMMUNITY_Community 108|Community 108]]
- [[_COMMUNITY_Community 109|Community 109]]
- [[_COMMUNITY_Community 110|Community 110]]
- [[_COMMUNITY_Community 111|Community 111]]
- [[_COMMUNITY_Community 112|Community 112]]
- [[_COMMUNITY_Community 113|Community 113]]
- [[_COMMUNITY_Community 114|Community 114]]
- [[_COMMUNITY_Community 115|Community 115]]
- [[_COMMUNITY_Community 116|Community 116]]
- [[_COMMUNITY_Community 117|Community 117]]
- [[_COMMUNITY_Community 118|Community 118]]
- [[_COMMUNITY_Community 119|Community 119]]
- [[_COMMUNITY_Community 120|Community 120]]
## God Nodes (most connected - your core abstractions)
1. `_classCallCheck()` - 37 edges
2. `ResConfigSettings` - 27 edges
3. `get()` - 21 edges
4. `PrintProductLabel` - 20 edges
5. `PrintProductLabelSection` - 16 edges
6. `add()` - 14 edges
7. `getCharacterType()` - 12 edges
8. `get_quick_report_action()` - 10 edges
9. `ResUsers` - 10 edges
10. `PrintProductLabelTemplate` - 10 edges
## Surprising Connections (you probably didn't know these)
- `Test internal user's access rights` --uses--> `TestProductLabel` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/test_access_rights.py → /Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py
- `default_get()` --calls--> `_get_user_allowed_templates()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/product_label_layout.py → /Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/print_product_label_template.py
- `_compute_garazd_allowed_template_ids()` --calls--> `_get_user_allowed_templates()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/product_label_layout.py → /Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/print_product_label_template.py
- `_compute_allowed_template_ids()` --calls--> `set()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label.py → /Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/lib/pdfjs/web/viewer.js
- `_get_color_info_from_url()` --calls--> `compile()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_colors/models/color_assets_editor.py → /Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/views/form/form_compiler.js
## Communities
### Community 0 - "Community 0"
Cohesion: 0.04
Nodes (102): active(), apiPageModeToSidebarView(), appendTextToDiv(), approximateFraction(), asyncGeneratorStep(), AsyncIterator(), _asyncToGenerator(), backtrackBeforeAllVisibleElements() (+94 more)
### Community 1 - "Community 1"
Cohesion: 0.04
Nodes (34): Http, get_report_name(), print_label_pdf(), PrintPDF, PrintPreviewController, _complete_label_fields(), _compute_allowed_template_ids(), _compute_is_template_report() (+26 more)
### Community 2 - "Community 2"
Cohesion: 0.07
Nodes (9): ColorAssetsEditor, _get_color_info_from_url(), _get_colors_asset(), _get_colors_attachment(), _get_colors_from_url(), _get_custom_colors_url(), _save_color_asset(), _uninstall_cleanup() (+1 more)
### Community 3 - "Community 3"
Cohesion: 0.1
Nodes (26): binary_field_types(), _check_height(), _check_widget_image(), _compute_display_name(), _compute_field_ids(), _compute_nested_relation_model_id(), _compute_relation_model_id(), _compute_template_preview_html() (+18 more)
### Community 4 - "Community 4"
Cohesion: 0.1
Nodes (29): active(), add(), c(), cboxOnClick(), cleanup(), clear(), enable(), getStatIndex() (+21 more)
### Community 5 - "Community 5"
Cohesion: 0.07
Nodes (15): _setup_module(), MatchSaleOrderWizard, Link the selected Sale Order to the Purchase Order, Set a specific number of labels for all lines., Reset the skip empty places count value., If the Dymo label width or height were changed, we should change it to t, PurchaseOrder, Batch match multiple POs to Sale Orders based on x_marked_for field. Cal (+7 more)
### Community 6 - "Community 6"
Cohesion: 0.08
Nodes (29): AnnotationLayerBuilder(), AppOptions(), _classCallCheck(), Context(), DefaultAnnotationLayerFactory(), DefaultTextLayerFactory(), DownloadManager(), EventBus() (+21 more)
### Community 7 - "Community 7"
Cohesion: 0.14
Nodes (8): BaseUsersCommon, setUpClass(), TestProductLabel, Test internal user's access rights, TestAccessRights, TestPrintProductLabel, TestProductLabel, TransactionCase
### Community 8 - "Community 8"
Cohesion: 0.21
Nodes (3): ResUsers, SELF_READABLE_FIELDS(), SELF_WRITEABLE_FIELDS()
### Community 9 - "Community 9"
Cohesion: 0.16
Nodes (14): _assertThisInitialized(), BasePreferences(), GenericPreferences(), getDefaultPreferences(), _getPrototypeOf(), isValidExplicitDestination(), PDFSinglePageViewer(), PDFViewer() (+6 more)
### Community 10 - "Community 10"
Cohesion: 0.27
Nodes (7): default_get(), _onchange_batch_vendor_id(), _onchange_vendor_id(), PurchaseOrderWizard, PurchaseProductWiz, Returns the values to create the purchase order line., Generate purchase orders grouped by vendor
### Community 11 - "Community 11"
Cohesion: 0.18
Nodes (11): getCharacterType(), isAlphabeticalScript(), isAscii(), isAsciiAlpha(), isAsciiDigit(), isAsciiSpace(), isHalfwidthKatakana(), isHan() (+3 more)
### Community 12 - "Community 12"
Cohesion: 0.18
Nodes (6): CollapseAll, ExpandAll, scrollModeChanged(), spreadModeChanged(), webViewerInitialized(), webViewerNamedAction()
### Community 13 - "Community 13"
Cohesion: 0.27
Nodes (4): _compute_barcode(), _compute_company_id(), _compute_product_price(), PrintProductLabelLine
### Community 14 - "Community 14"
Cohesion: 0.27
Nodes (7): _compute_garazd_allowed_template_ids(), default_get(), ProductLabelLayout, set(), webViewerScrollModeChanged(), webViewerSidebarViewChanged(), webViewerSpreadModeChanged()
### Community 15 - "Community 15"
Cohesion: 0.36
Nodes (5): getAutoLoadStorageKey(), getAutoLoadStorageValue(), removeAutoLoadStorageValue(), setAutoLoadStorageValue(), toggleAutoLoad()
### Community 16 - "Community 16"
Cohesion: 0.22
Nodes (9): abort(), clear(), dispatchEvent(), fireL10nReadyEvent(), getL10nDictionary(), getL10nResourceLinks(), getViewerConfiguration(), loadLocale() (+1 more)
### Community 17 - "Community 17"
Cohesion: 0.5
Nodes (2): _check_page_layout(), PrintProductLabelTemplateAdd
### Community 18 - "Community 18"
Cohesion: 0.25
Nodes (8): close(), open(), parseResource(), PDFFindBar(), webViewerClick(), webViewerDocumentProperties(), webViewerKeyDown(), xhrLoadText()
### Community 19 - "Community 19"
Cohesion: 0.25
Nodes (8): getChildElementCount(), getL10nAttributes(), getL10nData(), getTranslatableChildren(), substArguments(), substIndexes(), translateElement(), translateFragment()
### Community 20 - "Community 20"
Cohesion: 0.29
Nodes (2): ProductProduct, If a user has direct print option and a label template, return the direct print
### Community 21 - "Community 21"
Cohesion: 0.29
Nodes (1): IrHttp
### Community 22 - "Community 22"
Cohesion: 0.4
Nodes (1): ResCompany
### Community 23 - "Community 23"
Cohesion: 0.4
Nodes (5): _arrayWithHoles(), getPageSizeInches(), _iterableToArrayLimit(), _nonIterableRest(), _slicedToArray()
### Community 24 - "Community 24"
Cohesion: 0.5
Nodes (5): doneResult(), makeInvokeMethod(), maybeInvokeDelegate(), tryCatch(), wrap()
### Community 25 - "Community 25"
Cohesion: 0.4
Nodes (5): ensureOverlay(), getLanguage(), PasswordPrompt(), PDFDocumentProperties(), register()
### Community 26 - "Community 26"
Cohesion: 0.5
Nodes (1): AppsMenu
### Community 27 - "Community 27"
Cohesion: 0.5
Nodes (0):
### Community 28 - "Community 28"
Cohesion: 0.5
Nodes (1): AppsBar
### Community 29 - "Community 29"
Cohesion: 0.5
Nodes (1): Http
### Community 30 - "Community 30"
Cohesion: 0.67
Nodes (1): PrintLabelTypePy
### Community 31 - "Community 31"
Cohesion: 0.67
Nodes (1): PrintProductLabelPreview
### Community 32 - "Community 32"
Cohesion: 0.67
Nodes (0):
### Community 33 - "Community 33"
Cohesion: 0.67
Nodes (0):
### Community 34 - "Community 34"
Cohesion: 0.67
Nodes (2): Category, Product
### Community 35 - "Community 35"
Cohesion: 0.67
Nodes (0):
### Community 36 - "Community 36"
Cohesion: 0.67
Nodes (3): setZoomDisabledTimeout(), webViewerVisibilityChange(), webViewerWheel()
### Community 37 - "Community 37"
Cohesion: 0.67
Nodes (3): isValidScrollMode(), isValidSpreadMode(), values()
### Community 38 - "Community 38"
Cohesion: 0.67
Nodes (1): reportPreviewConfigItem()
### Community 39 - "Community 39"
Cohesion: 1.0
Nodes (0):
### Community 40 - "Community 40"
Cohesion: 1.0
Nodes (1): Product
### Community 41 - "Community 41"
Cohesion: 1.0
Nodes (0):
### Community 42 - "Community 42"
Cohesion: 1.0
Nodes (0):
### Community 43 - "Community 43"
Cohesion: 1.0
Nodes (1): ResUsersSettings
### Community 44 - "Community 44"
Cohesion: 1.0
Nodes (0):
### Community 45 - "Community 45"
Cohesion: 1.0
Nodes (0):
### Community 46 - "Community 46"
Cohesion: 1.0
Nodes (0):
### Community 47 - "Community 47"
Cohesion: 1.0
Nodes (0):
### Community 48 - "Community 48"
Cohesion: 1.0
Nodes (0):
### Community 49 - "Community 49"
Cohesion: 1.0
Nodes (0):
### Community 50 - "Community 50"
Cohesion: 1.0
Nodes (0):
### Community 51 - "Community 51"
Cohesion: 1.0
Nodes (0):
### Community 52 - "Community 52"
Cohesion: 1.0
Nodes (0):
### Community 53 - "Community 53"
Cohesion: 1.0
Nodes (0):
### Community 54 - "Community 54"
Cohesion: 1.0
Nodes (0):
### Community 55 - "Community 55"
Cohesion: 1.0
Nodes (0):
### Community 56 - "Community 56"
Cohesion: 1.0
Nodes (0):
### Community 57 - "Community 57"
Cohesion: 1.0
Nodes (0):
### Community 58 - "Community 58"
Cohesion: 1.0
Nodes (0):
### Community 59 - "Community 59"
Cohesion: 1.0
Nodes (0):
### Community 60 - "Community 60"
Cohesion: 1.0
Nodes (0):
### Community 61 - "Community 61"
Cohesion: 1.0
Nodes (0):
### Community 62 - "Community 62"
Cohesion: 1.0
Nodes (0):
### Community 63 - "Community 63"
Cohesion: 1.0
Nodes (0):
### Community 64 - "Community 64"
Cohesion: 1.0
Nodes (0):
### Community 65 - "Community 65"
Cohesion: 1.0
Nodes (0):
### Community 66 - "Community 66"
Cohesion: 1.0
Nodes (0):
### Community 67 - "Community 67"
Cohesion: 1.0
Nodes (0):
### Community 68 - "Community 68"
Cohesion: 1.0
Nodes (0):
### Community 69 - "Community 69"
Cohesion: 1.0
Nodes (0):
### Community 70 - "Community 70"
Cohesion: 1.0
Nodes (0):
### Community 71 - "Community 71"
Cohesion: 1.0
Nodes (0):
### Community 72 - "Community 72"
Cohesion: 1.0
Nodes (0):
### Community 73 - "Community 73"
Cohesion: 1.0
Nodes (0):
### Community 74 - "Community 74"
Cohesion: 1.0
Nodes (0):
### Community 75 - "Community 75"
Cohesion: 1.0
Nodes (0):
### Community 76 - "Community 76"
Cohesion: 1.0
Nodes (0):
### Community 77 - "Community 77"
Cohesion: 1.0
Nodes (0):
### Community 78 - "Community 78"
Cohesion: 1.0
Nodes (0):
### Community 79 - "Community 79"
Cohesion: 1.0
Nodes (0):
### Community 80 - "Community 80"
Cohesion: 1.0
Nodes (0):
### Community 81 - "Community 81"
Cohesion: 1.0
Nodes (0):
### Community 82 - "Community 82"
Cohesion: 1.0
Nodes (0):
### Community 83 - "Community 83"
Cohesion: 1.0
Nodes (0):
### Community 84 - "Community 84"
Cohesion: 1.0
Nodes (0):
### Community 85 - "Community 85"
Cohesion: 1.0
Nodes (0):
### Community 86 - "Community 86"
Cohesion: 1.0
Nodes (0):
### Community 87 - "Community 87"
Cohesion: 1.0
Nodes (0):
### Community 88 - "Community 88"
Cohesion: 1.0
Nodes (0):
### Community 89 - "Community 89"
Cohesion: 1.0
Nodes (0):
### Community 90 - "Community 90"
Cohesion: 1.0
Nodes (0):
### Community 91 - "Community 91"
Cohesion: 1.0
Nodes (0):
### Community 92 - "Community 92"
Cohesion: 1.0
Nodes (0):
### Community 93 - "Community 93"
Cohesion: 1.0
Nodes (1): Set additional fields for product labels. Method to override.
### Community 94 - "Community 94"
Cohesion: 1.0
Nodes (1): Allow to get a report action for custom labels. Method to override.
### Community 95 - "Community 95"
Cohesion: 1.0
Nodes (0):
### Community 96 - "Community 96"
Cohesion: 1.0
Nodes (0):
### Community 97 - "Community 97"
Cohesion: 1.0
Nodes (1): Overwritten completely to use with custom label templates.
### Community 98 - "Community 98"
Cohesion: 1.0
Nodes (1): Post-processing of the price value before converting to the string. Meth
### Community 99 - "Community 99"
Cohesion: 1.0
Nodes (1): Collect all pricelist rules that affect the current product.
### Community 100 - "Community 100"
Cohesion: 1.0
Nodes (1): System administrators are not restricted anyway. Other users are restric
### Community 101 - "Community 101"
Cohesion: 1.0
Nodes (0):
### Community 102 - "Community 102"
Cohesion: 1.0
Nodes (0):
### Community 103 - "Community 103"
Cohesion: 1.0
Nodes (0):
### Community 104 - "Community 104"
Cohesion: 1.0
Nodes (0):
### Community 105 - "Community 105"
Cohesion: 1.0
Nodes (0):
### Community 106 - "Community 106"
Cohesion: 1.0
Nodes (0):
### Community 107 - "Community 107"
Cohesion: 1.0
Nodes (0):
### Community 108 - "Community 108"
Cohesion: 1.0
Nodes (0):
### Community 109 - "Community 109"
Cohesion: 1.0
Nodes (0):
### Community 110 - "Community 110"
Cohesion: 1.0
Nodes (0):
### Community 111 - "Community 111"
Cohesion: 1.0
Nodes (0):
### Community 112 - "Community 112"
Cohesion: 1.0
Nodes (0):
### Community 113 - "Community 113"
Cohesion: 1.0
Nodes (0):
### Community 114 - "Community 114"
Cohesion: 1.0
Nodes (1): When user selects a batch vendor, apply it to selected lines only
### Community 115 - "Community 115"
Cohesion: 1.0
Nodes (1): Load SO lines into wizard
### Community 116 - "Community 116"
Cohesion: 1.0
Nodes (1): Update price based on vendor's price list if available
### Community 117 - "Community 117"
Cohesion: 1.0
Nodes (0):
### Community 118 - "Community 118"
Cohesion: 1.0
Nodes (0):
### Community 119 - "Community 119"
Cohesion: 1.0
Nodes (0):
### Community 120 - "Community 120"
Cohesion: 1.0
Nodes (0):
## Knowledge Gaps
- **33 isolated node(s):** `Set additional fields for product labels. Method to override.`, `Return two params for a report action: record "ids" and "data".`, `Set a specific number of labels for all lines.`, `Restore the initial number of labels for all lines.`, `Allow to get a report action for custom labels. Method to override.` (+28 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **Thin community `Community 39`** (2 nodes): `setup()`, `navbar.js`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 40`** (2 nodes): `Product`, `refresh.test.js`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 41`** (2 nodes): `onClickDialogSizeToggle()`, `select_create_dialog.js`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 42`** (2 nodes): `displayMessages()`, `thread.js`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 43`** (2 nodes): `ResUsersSettings`, `res_users_settings.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 44`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 45`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 46`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 47`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 48`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 49`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 50`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 51`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 52`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 53`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 54`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 55`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 56`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 57`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 58`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 59`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 60`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 61`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 62`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 63`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 64`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 65`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 66`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 67`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 68`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 69`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 70`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 71`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 72`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 73`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 74`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 75`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 76`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 77`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 78`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 79`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 80`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 81`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 82`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 83`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 84`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 85`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 86`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 87`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 88`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 89`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 90`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 91`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 92`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 93`** (1 nodes): `Set additional fields for product labels. Method to override.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 94`** (1 nodes): `Allow to get a report action for custom labels. Method to override.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 95`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 96`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 97`** (1 nodes): `Overwritten completely to use with custom label templates.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 98`** (1 nodes): `Post-processing of the price value before converting to the string. Meth`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 99`** (1 nodes): `Collect all pricelist rules that affect the current product.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 100`** (1 nodes): `System administrators are not restricted anyway. Other users are restric`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 101`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 102`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 103`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 104`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 105`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 106`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 107`** (1 nodes): `webclient.js`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 108`** (1 nodes): `app_menu_service.js`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 109`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 110`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 111`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 112`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 113`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 114`** (1 nodes): `When user selects a batch vendor, apply it to selected lines only`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 115`** (1 nodes): `Load SO lines into wizard`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 116`** (1 nodes): `Update price based on vendor's price list if available`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 117`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 118`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 119`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 120`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `get()` connect `Community 1` to `Community 0`, `Community 3`, `Community 4`, `Community 5`, `Community 9`, `Community 10`, `Community 12`?**
_High betweenness centrality (0.293) - this node is a cross-community bridge._
- **Why does `add()` connect `Community 4` to `Community 12`, `Community 6`?**
_High betweenness centrality (0.053) - this node is a cross-community bridge._
- **Why does `_save_color_asset()` connect `Community 2` to `Community 5`?**
_High betweenness centrality (0.045) - this node is a cross-community bridge._
- **Are the 13 inferred relationships involving `get()` (e.g. with `_get_product_label_ids()` and `default_get()`) actually correct?**
_`get()` has 13 INFERRED edges - model-reasoned connections that need verification._
- **What connects `Set additional fields for product labels. Method to override.`, `Return two params for a report action: record "ids" and "data".`, `Set a specific number of labels for all lines.` to the rest of the system?**
_33 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.04 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.04 - nodes in this community are weakly interconnected._

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_company_py", "label": "res_company.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_company.py", "source_location": "L1"}, {"id": "res_company_rescompany", "label": "ResCompany", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_company.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_company_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_company.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_company_py", "target": "res_company_rescompany", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_company.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_static_src_js_user_menu_js", "label": "user_menu.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L1"}, {"id": "user_menu_reportpreviewconfigitem", "label": "reportPreviewConfigItem()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L9"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_static_src_js_user_menu_js", "target": "registry", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_static_src_js_user_menu_js", "target": "translation", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L4", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_static_src_js_user_menu_js", "target": "rpc", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_static_src_js_user_menu_js", "target": "user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_static_src_js_user_menu_js", "target": "user_menu_reportpreviewconfigitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L9", "weight": 1.0}], "raw_calls": [{"caller_nid": "user_menu_reportpreviewconfigitem", "callee": "_t", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L13"}, {"caller_nid": "user_menu_reportpreviewconfigitem", "callee": "rpc", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L15"}, {"caller_nid": "user_menu_reportpreviewconfigitem", "callee": "doAction", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L19"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_tests_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/tests/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_tests_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_tests_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/tests/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_wizard_match_sale_order_wiz_py", "label": "match_sale_order_wiz.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L1"}, {"id": "match_sale_order_wiz_matchsaleorderwizard", "label": "MatchSaleOrderWizard", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L7"}, {"id": "match_sale_order_wiz_matchsaleorderwizard_action_confirm", "label": ".action_confirm()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L29"}, {"id": "match_sale_order_wiz_rationale_30", "label": "Link the selected Sale Order to the Purchase Order", "file_type": "rationale", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L30"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_wizard_match_sale_order_wiz_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_wizard_match_sale_order_wiz_py", "target": "odoo_exceptions", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L4", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_wizard_match_sale_order_wiz_py", "target": "match_sale_order_wiz_matchsaleorderwizard", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L7", "weight": 1.0}, {"source": "match_sale_order_wiz_matchsaleorderwizard", "target": "match_sale_order_wiz_matchsaleorderwizard_action_confirm", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L29", "weight": 1.0}, {"source": "match_sale_order_wiz_rationale_30", "target": "match_sale_order_wiz_matchsaleorderwizard_action_confirm", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L30", "weight": 1.0}], "raw_calls": [{"caller_nid": "match_sale_order_wiz_matchsaleorderwizard_action_confirm", "callee": "ensure_one", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L31"}, {"caller_nid": "match_sale_order_wiz_matchsaleorderwizard_action_confirm", "callee": "UserError", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L34"}, {"caller_nid": "match_sale_order_wiz_matchsaleorderwizard_action_confirm", "callee": "_", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L34"}, {"caller_nid": "match_sale_order_wiz_matchsaleorderwizard_action_confirm", "callee": "write", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L40"}, {"caller_nid": "match_sale_order_wiz_matchsaleorderwizard_action_confirm", "callee": "_", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L49"}, {"caller_nid": "match_sale_order_wiz_matchsaleorderwizard_action_confirm", "callee": "_", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/wizard/match_sale_order_wiz.py", "source_location": "L50"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_models_res_users_py", "label": "res_users.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_users.py", "source_location": "L1"}, {"id": "res_users_resusers", "label": "ResUsers", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_users.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_models_res_users_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_users.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_models_res_users_py", "target": "res_users_resusers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_users.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_controllers_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_controllers_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_controllers_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_users_py", "label": "res_users.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L1"}, {"id": "res_users_resusers", "label": "ResUsers", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L4"}, {"id": "res_users_self_readable_fields", "label": "SELF_READABLE_FIELDS()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L13"}, {"id": "res_users_self_writeable_fields", "label": "SELF_WRITEABLE_FIELDS()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L19"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_users_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_users_py", "target": "res_users_resusers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L4", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_users_py", "target": "res_users_self_readable_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L13", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_users_py", "target": "res_users_self_writeable_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L19", "weight": 1.0}], "raw_calls": [{"caller_nid": "res_users_self_readable_fields", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L14"}, {"caller_nid": "res_users_self_writeable_fields", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_users.py", "source_location": "L20"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_product_template_py", "label": "product_template.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L1"}, {"id": "product_template_producttemplate", "label": "ProductTemplate", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L4"}, {"id": "product_template_producttemplate_action_open_label_layout", "label": ".action_open_label_layout()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L7"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_product_template_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_product_template_py", "target": "product_template_producttemplate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L4", "weight": 1.0}, {"source": "product_template_producttemplate", "target": "product_template_producttemplate_action_open_label_layout", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L7", "weight": 1.0}], "raw_calls": [{"caller_nid": "product_template_producttemplate_action_open_label_layout", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L9"}, {"caller_nid": "product_template_producttemplate_action_open_label_layout", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L9"}, {"caller_nid": "product_template_producttemplate_action_open_label_layout", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L10"}, {"caller_nid": "product_template_producttemplate_action_open_label_layout", "callee": "_for_xml_id", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_template.py", "source_location": "L11"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_res_users_py", "label": "res_users.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_users.py", "source_location": "L1"}, {"id": "res_users_resusers", "label": "ResUsers", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_users.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_res_users_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_users.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_res_users_py", "target": "res_users_resusers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_users.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_wizard_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/sale_order_to_purchase_order_app/wizard/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_wizard_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_wizard_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/sale_order_to_purchase_order_app/wizard/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_wizard_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_wizard_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/sale_order_to_purchase_order_app/wizard/__init__.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_src_search_collapse_all_collapse_all_js", "label": "collapse_all.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L1"}, {"id": "collapse_all_collapseall", "label": "CollapseAll", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L7"}, {"id": "collapse_all_collapseall_oncollapsebuttonclicked", "label": ".onCollapseButtonClicked()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L13"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_src_search_collapse_all_collapse_all_js", "target": "owl", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_src_search_collapse_all_collapse_all_js", "target": "registry", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L2", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_src_search_collapse_all_collapse_all_js", "target": "dropdown_item", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_src_search_collapse_all_collapse_all_js", "target": "collapse_all_collapseall", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L7", "weight": 1.0}, {"source": "collapse_all_collapseall", "target": "collapse_all_collapseall_oncollapsebuttonclicked", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L13", "weight": 1.0}], "raw_calls": [{"caller_nid": "collapse_all_collapseall_oncollapsebuttonclicked", "callee": "filter", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L16"}, {"caller_nid": "collapse_all_collapseall_oncollapsebuttonclicked", "callee": "toggle", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L21"}, {"caller_nid": "collapse_all_collapseall_oncollapsebuttonclicked", "callee": "map", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L24"}, {"caller_nid": "collapse_all_collapseall_oncollapsebuttonclicked", "callee": "reduce", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L27"}, {"caller_nid": "collapse_all_collapseall_oncollapsebuttonclicked", "callee": "load", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L31"}, {"caller_nid": "collapse_all_collapseall_oncollapsebuttonclicked", "callee": "notify", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/src/search/collapse_all/collapse_all.js", "source_location": "L32"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_theme/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_theme/models/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_theme/models/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_theme/models/__init__.py", "source_location": "L3", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_models_res_company_py", "label": "res_company.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_company.py", "source_location": "L1"}, {"id": "res_company_rescompany", "label": "ResCompany", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_company.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_models_res_company_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_company.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_models_res_company_py", "target": "res_company_rescompany", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_company.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/__init__.py", "source_location": "L5", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_models_res_users_py", "label": "res_users.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L1"}, {"id": "res_users_resusers", "label": "ResUsers", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L6"}, {"id": "res_users_resusers_preview_reload", "label": ".preview_reload()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L18"}, {"id": "res_users_resusers_preview_print_save", "label": ".preview_print_save()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L24"}, {"id": "res_users_self_readable_fields", "label": "SELF_READABLE_FIELDS()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L31"}, {"id": "res_users_self_writeable_fields", "label": "SELF_WRITEABLE_FIELDS()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L35"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_models_res_users_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_models_res_users_py", "target": "res_users_resusers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L6", "weight": 1.0}, {"source": "res_users_resusers", "target": "res_users_resusers_preview_reload", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L18", "weight": 1.0}, {"source": "res_users_resusers", "target": "res_users_resusers_preview_print_save", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L24", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_models_res_users_py", "target": "res_users_self_readable_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L31", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_models_res_users_py", "target": "res_users_self_writeable_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L35", "weight": 1.0}], "raw_calls": [{"caller_nid": "res_users_self_readable_fields", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L32"}, {"caller_nid": "res_users_self_writeable_fields", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/res_users.py", "source_location": "L36"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_print_label_type_py", "label": "print_label_type.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/print_label_type.py", "source_location": "L1"}, {"id": "print_label_type_printlabeltypepy", "label": "PrintLabelTypePy", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/print_label_type.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_print_label_type_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/print_label_type.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_print_label_type_py", "target": "print_label_type_printlabeltypepy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/print_label_type.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/sale_order_to_purchase_order_app/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/sale_order_to_purchase_order_app/models/__init__.py", "source_location": "L3", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/__init__.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/__init__.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_static_src_voip_service_patch_js", "label": "voip_service_patch.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/static/src/voip_service_patch.js", "source_location": "L1"}, {"id": "voip_service_patch_arecredentialsset", "label": "areCredentialsSet()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/static/src/voip_service_patch.js", "source_location": "L8"}, {"id": "voip_service_patch_authorizationusername", "label": "authorizationUsername()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/static/src/voip_service_patch.js", "source_location": "L11"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_static_src_voip_service_patch_js", "target": "voip_service", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/static/src/voip_service_patch.js", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_static_src_voip_service_patch_js", "target": "patch", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/static/src/voip_service_patch.js", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_static_src_voip_service_patch_js", "target": "voip_service_patch_arecredentialsset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/static/src/voip_service_patch.js", "source_location": "L8", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_static_src_voip_service_patch_js", "target": "voip_service_patch_authorizationusername", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/static/src/voip_service_patch.js", "source_location": "L11", "weight": 1.0}], "raw_calls": [{"caller_nid": "voip_service_patch_arecredentialsset", "callee": "Boolean", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/static/src/voip_service_patch.js", "source_location": "L9"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_models_res_users_py", "label": "res_users.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L1"}, {"id": "res_users_resusers", "label": "ResUsers", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L4"}, {"id": "res_users_self_readable_fields", "label": "SELF_READABLE_FIELDS()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L13"}, {"id": "res_users_self_writeable_fields", "label": "SELF_WRITEABLE_FIELDS()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L19"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_models_res_users_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_models_res_users_py", "target": "res_users_resusers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L4", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_models_res_users_py", "target": "res_users_self_readable_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L13", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_models_res_users_py", "target": "res_users_self_writeable_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L19", "weight": 1.0}], "raw_calls": [{"caller_nid": "res_users_self_readable_fields", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L14"}, {"caller_nid": "res_users_self_writeable_fields", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/res_users.py", "source_location": "L20"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_res_config_settings_py", "label": "res_config_settings.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_config_settings.py", "source_location": "L1"}, {"id": "res_config_settings_resconfigsettings", "label": "ResConfigSettings", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_config_settings.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_res_config_settings_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_config_settings.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_res_config_settings_py", "target": "res_config_settings_resconfigsettings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_config_settings.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_static_src_views_view_dialogs_select_create_dialog_js", "label": "select_create_dialog.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/static/src/views/view_dialogs/select_create_dialog.js", "source_location": "L1"}, {"id": "select_create_dialog_onclickdialogsizetoggle", "label": "onClickDialogSizeToggle()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/static/src/views/view_dialogs/select_create_dialog.js", "source_location": "L6"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_static_src_views_view_dialogs_select_create_dialog_js", "target": "patch", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/static/src/views/view_dialogs/select_create_dialog.js", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_static_src_views_view_dialogs_select_create_dialog_js", "target": "select_create_dialog", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/static/src/views/view_dialogs/select_create_dialog.js", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_static_src_views_view_dialogs_select_create_dialog_js", "target": "select_create_dialog_onclickdialogsizetoggle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/static/src/views/view_dialogs/select_create_dialog.js", "source_location": "L6", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/__init__.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_models_ir_http_py", "label": "ir_http.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/ir_http.py", "source_location": "L1"}, {"id": "ir_http_irhttp", "label": "IrHttp", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/ir_http.py", "source_location": "L4"}, {"id": "ir_http_irhttp_session_info", "label": ".session_info()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/ir_http.py", "source_location": "L12"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_models_ir_http_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/ir_http.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_models_ir_http_py", "target": "ir_http_irhttp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/ir_http.py", "source_location": "L4", "weight": 1.0}, {"source": "ir_http_irhttp", "target": "ir_http_irhttp_session_info", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/ir_http.py", "source_location": "L12", "weight": 1.0}], "raw_calls": [{"caller_nid": "ir_http_irhttp_session_info", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/ir_http.py", "source_location": "L13"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_models_ir_http_py", "label": "ir_http.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L1"}, {"id": "ir_http_irhttp", "label": "IrHttp", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L4"}, {"id": "ir_http_irhttp_session_info", "label": ".session_info()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L12"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_models_ir_http_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_models_ir_http_py", "target": "ir_http_irhttp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L4", "weight": 1.0}, {"source": "ir_http_irhttp", "target": "ir_http_irhttp_session_info", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L12", "weight": 1.0}], "raw_calls": [{"caller_nid": "ir_http_irhttp_session_info", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L13"}, {"caller_nid": "ir_http_irhttp_session_info", "callee": "int", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L14"}, {"caller_nid": "ir_http_irhttp_session_info", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L15"}, {"caller_nid": "ir_http_irhttp_session_info", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/models/ir_http.py", "source_location": "L15"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_models_ir_http_py", "label": "ir_http.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/ir_http.py", "source_location": "L1"}, {"id": "ir_http_irhttp", "label": "IrHttp", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/ir_http.py", "source_location": "L4"}, {"id": "ir_http_irhttp_session_info", "label": ".session_info()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/ir_http.py", "source_location": "L12"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_models_ir_http_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/ir_http.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_models_ir_http_py", "target": "ir_http_irhttp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/ir_http.py", "source_location": "L4", "weight": 1.0}, {"source": "ir_http_irhttp", "target": "ir_http_irhttp_session_info", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/ir_http.py", "source_location": "L12", "weight": 1.0}], "raw_calls": [{"caller_nid": "ir_http_irhttp_session_info", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/models/ir_http.py", "source_location": "L13"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_print_product_label_line_py", "label": "print_product_label_line.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_line.py", "source_location": "L1"}, {"id": "print_product_label_line_printproductlabelline", "label": "PrintProductLabelLine", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_line.py", "source_location": "L9"}, {"id": "print_product_label_line_compute_product_price", "label": "_compute_product_price()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_line.py", "source_location": "L18"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_print_product_label_line_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_line.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_print_product_label_line_py", "target": "print_product_label_line_printproductlabelline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_line.py", "source_location": "L9", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_print_product_label_line_py", "target": "print_product_label_line_compute_product_price", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_line.py", "source_location": "L18", "weight": 1.0}], "raw_calls": [{"caller_nid": "print_product_label_line_compute_product_price", "callee": "filtered", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_line.py", "source_location": "L21"}, {"caller_nid": "print_product_label_line_compute_product_price", "callee": "_get_product_price", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_line.py", "source_location": "L25"}, {"caller_nid": "print_product_label_line_compute_product_price", "callee": "_get_product_price", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_line.py", "source_location": "L28"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_models_ir_http_py", "label": "ir_http.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/ir_http.py", "source_location": "L1"}, {"id": "ir_http_http", "label": "Http", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/ir_http.py", "source_location": "L5"}, {"id": "ir_http_http_session_info", "label": ".session_info()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/ir_http.py", "source_location": "L8"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_models_ir_http_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/ir_http.py", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_models_ir_http_py", "target": "ir_http_http", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/ir_http.py", "source_location": "L5", "weight": 1.0}, {"source": "ir_http_http", "target": "ir_http_http_session_info", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/ir_http.py", "source_location": "L8", "weight": 1.0}], "raw_calls": [{"caller_nid": "ir_http_http_session_info", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/ir_http.py", "source_location": "L9"}, {"caller_nid": "ir_http_http_session_info", "callee": "update", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/ir_http.py", "source_location": "L13"}, {"caller_nid": "ir_http_http_session_info", "callee": "bool", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/models/ir_http.py", "source_location": "L16"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_controllers_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/controllers/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_controllers_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_controllers_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/controllers/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/models/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/models/__init__.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_models_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_voip_ringcentral_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/voip_ringcentral/models/__init__.py", "source_location": "L7", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_report_product_label_report_py", "label": "product_label_report.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/report/product_label_report.py", "source_location": "L1"}, {"id": "product_label_report_reportgarazdproductlabelfromtemplate", "label": "ReportGarazdProductLabelFromTemplate", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/report/product_label_report.py", "source_location": "L4"}, {"id": "product_label_report_reportgarazdproductlabelfromtemplate_get_report_values", "label": "._get_report_values()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/report/product_label_report.py", "source_location": "L8"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_report_product_label_report_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/report/product_label_report.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_report_product_label_report_py", "target": "product_label_report_reportgarazdproductlabelfromtemplate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/report/product_label_report.py", "source_location": "L4", "weight": 1.0}, {"source": "product_label_report_reportgarazdproductlabelfromtemplate", "target": "product_label_report_reportgarazdproductlabelfromtemplate_get_report_values", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/report/product_label_report.py", "source_location": "L8", "weight": 1.0}], "raw_calls": [{"caller_nid": "product_label_report_reportgarazdproductlabelfromtemplate_get_report_values", "callee": "browse", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/report/product_label_report.py", "source_location": "L9"}, {"caller_nid": "product_label_report_reportgarazdproductlabelfromtemplate_get_report_values", "callee": "get", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/report/product_label_report.py", "source_location": "L9"}, {"caller_nid": "product_label_report_reportgarazdproductlabelfromtemplate_get_report_values", "callee": "get", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/report/product_label_report.py", "source_location": "L14"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_config_settings_py", "label": "res_config_settings.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_config_settings.py", "source_location": "L1"}, {"id": "res_config_settings_resconfigsettings", "label": "ResConfigSettings", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_config_settings.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_config_settings_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_config_settings.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_models_res_config_settings_py", "target": "res_config_settings_resconfigsettings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/models/res_config_settings.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_tests_group_test_js", "label": "group.test.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/tests/group.test.js", "source_location": "L1"}, {"id": "group_test_category", "label": "Category", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/tests/group.test.js", "source_location": "L11"}, {"id": "group_test_product", "label": "Product", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/tests/group.test.js", "source_location": "L19"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_tests_group_test_js", "target": "hoot", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/tests/group.test.js", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_tests_group_test_js", "target": "web_test_helpers", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/tests/group.test.js", "source_location": "L2", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_tests_group_test_js", "target": "group_test_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/tests/group.test.js", "source_location": "L11", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_group_static_tests_group_test_js", "target": "group_test_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_group/static/tests/group.test.js", "source_location": "L19", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_appsbar_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_appsbar/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_res_config_settings_py", "label": "res_config_settings.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/res_config_settings.py", "source_location": "L1"}, {"id": "res_config_settings_resconfigsettings", "label": "ResConfigSettings", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/res_config_settings.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_res_config_settings_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/res_config_settings.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_res_config_settings_py", "target": "res_config_settings_resconfigsettings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/res_config_settings.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_models_res_users_py", "label": "res_users.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L1"}, {"id": "res_users_resusers", "label": "ResUsers", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L4"}, {"id": "res_users_self_readable_fields", "label": "SELF_READABLE_FIELDS()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L13"}, {"id": "res_users_self_writeable_fields", "label": "SELF_WRITEABLE_FIELDS()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L19"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_models_res_users_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_models_res_users_py", "target": "res_users_resusers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L4", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_models_res_users_py", "target": "res_users_self_readable_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L13", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_models_res_users_py", "target": "res_users_self_writeable_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L19", "weight": 1.0}], "raw_calls": [{"caller_nid": "res_users_self_readable_fields", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L14"}, {"caller_nid": "res_users_self_writeable_fields", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/models/res_users.py", "source_location": "L20"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_product_product_py", "label": "product_product.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L1"}, {"id": "product_product_productproduct", "label": "ProductProduct", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L4"}, {"id": "product_product_productproduct_action_open_label_layout", "label": ".action_open_label_layout()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L7"}, {"id": "product_product_rationale_8", "label": "If a user has direct print option and a label template, return the direct print", "file_type": "rationale", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L8"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_product_product_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_product_product_py", "target": "product_product_productproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L4", "weight": 1.0}, {"source": "product_product_productproduct", "target": "product_product_productproduct_action_open_label_layout", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L7", "weight": 1.0}, {"source": "product_product_rationale_8", "target": "product_product_productproduct_action_open_label_layout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L8", "weight": 1.0}], "raw_calls": [{"caller_nid": "product_product_productproduct_action_open_label_layout", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L12"}, {"caller_nid": "product_product_productproduct_action_open_label_layout", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L13"}, {"caller_nid": "product_product_productproduct_action_open_label_layout", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L13"}, {"caller_nid": "product_product_productproduct_action_open_label_layout", "callee": "get_quick_report_action", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/product_product.py", "source_location": "L15"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_pdf_print_preview_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/pdf_print_preview/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/__init__.py", "source_location": "L2", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_dialog_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_dialog/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_res_company_py", "label": "res_company.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_company.py", "source_location": "L1"}, {"id": "res_company_rescompany", "label": "ResCompany", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_company.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_res_company_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_company.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_garazd_product_label_pro_models_res_company_py", "target": "res_company_rescompany", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/garazd_product_label_pro/models/res_company.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_static_src_js_user_menu_js", "label": "user_menu.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L1"}, {"id": "user_menu_reportpreviewconfigitem", "label": "reportPreviewConfigItem()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L9"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_static_src_js_user_menu_js", "target": "registry", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_static_src_js_user_menu_js", "target": "translation", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L4", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_static_src_js_user_menu_js", "target": "rpc", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_static_src_js_user_menu_js", "target": "user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_pdf_print_preview_static_src_js_user_menu_js", "target": "user_menu_reportpreviewconfigitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L9", "weight": 1.0}], "raw_calls": [{"caller_nid": "user_menu_reportpreviewconfigitem", "callee": "_t", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L13"}, {"caller_nid": "user_menu_reportpreviewconfigitem", "callee": "rpc", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L15"}, {"caller_nid": "user_menu_reportpreviewconfigitem", "callee": "doAction", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/pdf_print_preview/static/src/js/user_menu.js", "source_location": "L19"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_product_product_py", "label": "product_product.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L1"}, {"id": "product_product_productproduct", "label": "ProductProduct", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L4"}, {"id": "product_product_productproduct_action_open_label_layout", "label": ".action_open_label_layout()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L7"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_product_product_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_garazd_product_label_models_product_product_py", "target": "product_product_productproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L4", "weight": 1.0}, {"source": "product_product_productproduct", "target": "product_product_productproduct_action_open_label_layout", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L7", "weight": 1.0}], "raw_calls": [{"caller_nid": "product_product_productproduct_action_open_label_layout", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L9"}, {"caller_nid": "product_product_productproduct_action_open_label_layout", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L9"}, {"caller_nid": "product_product_productproduct_action_open_label_layout", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L10"}, {"caller_nid": "product_product_productproduct_action_open_label_layout", "callee": "_for_xml_id", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label/garazd_product_label/models/product_product.py", "source_location": "L11"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_res_company_py", "label": "res_company.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_theme/models/res_company.py", "source_location": "L1"}, {"id": "res_company_rescompany", "label": "ResCompany", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_theme/models/res_company.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_res_company_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_theme/models/res_company.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_theme_models_res_company_py", "target": "res_company_rescompany", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_theme/models/res_company.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_controllers_main_py", "label": "main.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L1"}, {"id": "main_printpdf", "label": "PrintPDF", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L12"}, {"id": "main_print_label_pdf", "label": "print_label_pdf()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L20"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_controllers_main_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_controllers_main_py", "target": "odoo_http", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L7", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_controllers_main_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_wizard_print_product_label_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L9", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_controllers_main_py", "target": "main_printpdf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L12", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_garazd_product_label_print_controllers_main_py", "target": "main_print_label_pdf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L20", "weight": 1.0}], "raw_calls": [{"caller_nid": "main_print_label_pdf", "callee": "not_found", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L22"}, {"caller_nid": "main_print_label_pdf", "callee": "int", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L25"}, {"caller_nid": "main_print_label_pdf", "callee": "not_found", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L27"}, {"caller_nid": "main_print_label_pdf", "callee": "search", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L29"}, {"caller_nid": "main_print_label_pdf", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L29"}, {"caller_nid": "main_print_label_pdf", "callee": "not_found", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L36"}, {"caller_nid": "main_print_label_pdf", "callee": "render", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/garazd_product_label_print/controllers/main.py", "source_location": "L39"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_tests_common_py", "label": "common.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L1"}, {"id": "common_testproductlabel", "label": "TestProductLabel", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L11"}, {"id": "transactioncase", "label": "TransactionCase", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "common_setupclass", "label": "setUpClass()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L14"}, {"id": "common_testproductlabel_setup", "label": ".setUp()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L39"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_tests_common_py", "target": "odoo_tests_common", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_tests_common_py", "target": "odoo_tests", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L7", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_tests_common_py", "target": "common_testproductlabel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L11", "weight": 1.0}, {"source": "common_testproductlabel", "target": "transactioncase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L11", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_tests_common_py", "target": "common_setupclass", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L14", "weight": 1.0}, {"source": "common_testproductlabel", "target": "common_testproductlabel_setup", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L39", "weight": 1.0}], "raw_calls": [{"caller_nid": "common_setupclass", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L15"}, {"caller_nid": "common_setupclass", "callee": "create", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L17"}, {"caller_nid": "common_setupclass", "callee": "ref", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L19"}, {"caller_nid": "common_setupclass", "callee": "create", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L26"}, {"caller_nid": "common_setupclass", "callee": "create", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L32"}, {"caller_nid": "common_testproductlabel_setup", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L40"}, {"caller_nid": "common_testproductlabel_setup", "callee": "create", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L42"}, {"caller_nid": "common_testproductlabel_setup", "callee": "with_context", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/tests/common.py", "source_location": "L42"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_static_tests_refresh_test_js", "label": "refresh.test.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/static/tests/refresh.test.js", "source_location": "L1"}, {"id": "refresh_test_product", "label": "Product", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/static/tests/refresh.test.js", "source_location": "L11"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_static_tests_refresh_test_js", "target": "hoot", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/static/tests/refresh.test.js", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_static_tests_refresh_test_js", "target": "web_test_helpers", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/static/tests/refresh.test.js", "source_location": "L2", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_static_tests_refresh_test_js", "target": "refresh_test_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/static/tests/refresh.test.js", "source_location": "L11", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_models_res_config_settings_py", "label": "res_config_settings.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_config_settings.py", "source_location": "L1"}, {"id": "res_config_settings_resconfigsettings", "label": "ResConfigSettings", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_config_settings.py", "source_location": "L4"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_models_res_config_settings_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_config_settings.py", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_models_res_config_settings_py", "target": "res_config_settings_resconfigsettings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/models/res_config_settings.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/sale_order_to_purchase_order_app/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/sale_order_to_purchase_order_app/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_init_py", "target": "users_gurpreet_github_odoo_modules_obsolete_files_sale_order_to_purchase_order_app_sale_order_to_purchase_order_app_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/sale_order_to_purchase_order_app/sale_order_to_purchase_order_app/__init__.py", "source_location": "L4", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_refresh_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_refresh/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_print_product_label_preview_py", "label": "print_product_label_preview.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_preview.py", "source_location": "L1"}, {"id": "print_product_label_preview_printproductlabelpreview", "label": "PrintProductLabelPreview", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_preview.py", "source_location": "L9"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_print_product_label_preview_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_preview.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_pro_wizard_print_product_label_preview_py", "target": "print_product_label_preview_printproductlabelpreview", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_pro/wizard/print_product_label_preview.py", "source_location": "L9", "weight": 1.0}], "raw_calls": []}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_static_src_chatter_chatter_js", "label": "chatter.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L1"}, {"id": "chatter_setup", "label": "setup()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L7"}, {"id": "chatter_onclicknotificationstoggle", "label": "onClickNotificationsToggle()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L17"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_static_src_chatter_chatter_js", "target": "patch", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L1", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_static_src_chatter_chatter_js", "target": "browser", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L2", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_static_src_chatter_chatter_js", "target": "chatter", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L4", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_static_src_chatter_chatter_js", "target": "chatter_setup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L7", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_obsolete_files_muk_web_theme_19_0_1_4_1_muk_web_chatter_static_src_chatter_chatter_js", "target": "chatter_onclicknotificationstoggle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L17", "weight": 1.0}], "raw_calls": [{"caller_nid": "chatter_setup", "callee": "getItem", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L9"}, {"caller_nid": "chatter_setup", "callee": "parse", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L14"}, {"caller_nid": "chatter_onclicknotificationstoggle", "callee": "setItem", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/muk_web_theme-19.0.1.4.1/muk_web_chatter/static/src/chatter/chatter.js", "source_location": "L19"}]}

View File

@@ -1 +0,0 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_obsolete_files_garazd_product_label_print_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/Obsolete Files/garazd_product_label_print/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

Some files were not shown because too many files have changed in this diff Show More