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