Dynamic Progress Bar

Progress bar for Odoo waiting screen, possibility to cancel an ongoing operation and a system tray menu for all operations in progress.

web_progress is compatible with Odoo 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0 (CE and EE).

Author: Grzegorz Marczyński

License: LGPL-3.

Copyright © 2025 Grzegorz Marczyński

What's New in Version 3.0

Key Features

For Developers

Adding progress tracking to your operations is incredibly simple:

# Before: Standard loop
def action_operation(self):
    for rec in self:
        rec.do_something()

# After: Progress-enabled loop
def action_operation(self):
    for rec in self.with_progress(msg="Processing records"):
        rec.do_something()

Advanced Usage

# For generators (when len() cannot be called)
for item in self.web_progress_iter(data_generator, total=10000):
    process_item(item)

# With proper cancellation handling
try:
    for rec in self.with_progress(msg="Critical operation"):
        rec.perform_task()
except UserError as e:
    if "cancelled" in str(e):
        self.cleanup_after_cancel()

Parameters available: msg, total, cancellable, log_level

User Experience

Technical Highlights

Installation & Compatibility

Simply install the module and start using with_progress() or web_progress_iter() in your code. No additional configuration required!

Requirements: Longpolling should be operational for real-time updates (falls back to periodic polling if unavailable).