Clean downloads, zero disruption to your workflow

A drop-in client action for Odoo 17–19 that streams files straight to the browser — no new tab, no page reload, no lost form state — with batch downloads, live progress, descriptive errors, and a full audit trail built in.

The problem

Odoo's native download paths open a new browser tab or force a full page reload, breaking session continuity and discarding unsaved form state. Developers are left hand-rolling client-side download logic on every project — with no batch support, no progress feedback, no descriptive errors, and no record of who downloaded what.

The solution

A single service builds a client action that fetches files via an XHR blob request and saves them in-session, with zero navigation. Call it from a server action, any backend method, or a button. Batch multiple files into one action, show live progress, surface plain-language errors, and log every download to a searchable audit trail.

Capabilities

A complete download toolkit, drop in

Every capability below is implemented in the module.

01

Trigger from server actions

Bind the download builder to any server action and it appears right in a record's Actions cog menu, ready to run against one or many selected records.

02

Trigger from backend methods

Call a helper from any Python method to turn a binary field, an attachment, or a generated document into a clean, in-session download.

03

Button-initiated downloads

Wire any object button on a form or list view to return a download action, so a single click delivers the file without any extra scaffolding.

04

No new tab, no reload

Files are fetched via an XHR blob and saved by the browser's own downloader — the page never navigates, and unsaved form state survives.

05

Batch downloads

Pass a list of files to download several attachments or generated documents in a single action, tracked together in the audit trail under a shared batch.

06

Live progress feedback

A sticky notification tracks the percent complete for each file, so large downloads never look stalled or unresponsive.

07

Descriptive error handling

Failed downloads surface a plain-language notification naming the file and the reason — never a silent failure or a raw traceback.

08

Download history & audit trail

Every download is logged with user, filename, size, mimetype, source, and timestamp — viewable in list, form, and graph views.

09

Configurable retention

Toggle audit logging and set a log retention period in Settings; a daily scheduled job clears logs past the configured age automatically.

Workflow

How it works

1

Build the action

Call the download builder from a server action, a backend method, or a button, passing the file URL(s) to send.

2

User clicks

The client action runs in the background: the browser fetches each file over XHR — no new tab, no reload.

3

Progress & delivery

A live progress notification tracks each file; on completion the browser saves it exactly like a native download.

4

Review the trail

Every download, success or failure, appears in the History list and graph — filterable by user, source, and status.

Questions

Frequently asked

No sales fog. If your question isn't here, email us and we'll answer it the same way.

No. Every download is fetched via an XHR blob request and saved by the browser's native downloader, so the current page — and any unsaved form data — never changes.

Get the app

Buy it on the Odoo App Store

Purchase, download and install directly from the official Odoo Apps Store — you'll always get the latest supported build.

Clean In-Session File Downloads (Client Action)

In-session file downloads from server actions, backend methods or a button — batched, progress-reported, plainly errored and logged, with no new tab and no page reload.

Buy on Odoo App Store
Related apps

More Odoo extra tools apps

Copy Access Of Other User

Clone security groups from a user or a reusable role template onto many targets at once, in add or mirror mode, with selective copy, a live preview, conflict warnings and a full audit log.

Extra ToolsView app

Delete Confirmation Dialog for Inline x2many Rows

A confirmation dialog on every inline One2many and Many2many row delete, driven by context-aware rules with hard blocks, dependent-record counts and a full audit trail — and fail-open safety.

Extra ToolsView app

Disable Developer Mode — Restrict & Audit Debug Access

Restrict developer mode to an authorized group, close the ?debug=1 URL bypass that other apps leave open, and log every attempt with who, when and whether it worked.

Extra ToolsView app

Dynamic Buttons Show/Hide

Hide or disable any workflow button per user, with dry-run preview, conflict detection, preset templates and an audit trail — without touching access rights or Developer Mode.

Extra ToolsView app

Dynamic Hide/Show Duplicate & Action Menu

Per-model, per-user and per-group rules that hide Duplicate, Delete, Export and Archive in both list and form views — with nested group support, time-boxed rules, a bulk wizard and an audit trail of blocked attempts, no view editing.

Extra ToolsView app

Field Binary Drag — Drag & Drop Uploads with Preview

Drag and drop onto any binary or image field, with drop-zone highlighting, thumbnail preview before commit, upload progress, batch drops and type and size validation.

Extra ToolsView app