Duplicate File Guard
Blocks re-uploading the exact same file - checked by content, not filename
The video below shows Duplicate File Guard running on a real Odoo 19 database. Want it driven against your own data, or a question answered first? Ask and we will set up a session.
ir.attachment already stores a SHA1 checksum on every file, but nothing checks it before you upload the same invoice PDF twice. Odoo's own attachment list just grows with silent duplicates.
This app blocks it outright: if a file with byte-identical content is already attached to the same record, the upload is rejected with a clear message naming the existing file - no new model, one small override of ir.attachment.
Deliberately a hard block, not a soft "keep both / replace" dialog - a warning that's easy to click through without reading doesn't actually stop the duplicate.
What it does
Checked by content, not filename
"invoice.pdf" and "invoice_final.pdf" with identical bytes are caught just the same - the check is a checksum comparison, not a name match.
Scoped to the same record
The same file attached to two different records is completely fine - the guard only fires within one record's own attachments.
Screenshots

Requirements
- Odoo 19.0, Community or Enterprise.
- Odoo.sh or On-Premise only. Third-party apps cannot be installed on Odoo Online (SaaS) databases — check your hosting before buying.
- Module
mh_duplicate_attachment_guard, version 19.0.1.0.8, licensed OPL-1.
Related apps
Per-field anonymization, a legal hold override, and an append-only purge log - not a Data Recycle clone
Real WCAG violations, found in your rendered pages - not another overlay widget
The Article 33 72-hour clock starts the moment you log the incident