Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Technical
  3. Viewed Records History v 18.0
  4. Sales Conditions FAQ

Viewed Records History

by Saken Serdaly
Odoo
v 18.0 Third Party 18
Download for v 18.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Employees (hr)
• Discuss (mail)
Lines of code 180
Technical Name viewed_records

Viewed Records — Odoo 17 Module

Viewed Records Banner

Description

Viewed Records is a module for tracking which records have been opened by users across all Odoo models. It automatically saves the history of viewed form records, allows checking whether the user has seen a record, and shows the "viewed" status directly on the form.

How It Works

To enable tracking, the model must inherit the mixin viewed.records.mixin, and the form must use the widget js_class="viewed_records". When a user opens a form view, the module automatically creates a record in viewed.record.history and updates the field is_viewed.

Models

viewed.record.history

  • res_model — model name
  • record_id — record ID
  • user_id — user
  • record_name — record display name
  • record_url — direct form URL

viewed.records.mixin

Provides automatic tracking of viewed records.

  • is_viewed — Boolean, computed field

JavaScript Widget

The widget is enabled by adding js_class="viewed_records" and calls the method mark_as_viewed() upon form load.

Example of using js_class="viewed_records" inside a form:

<record id="view_task_form" model="ir.ui.view">
    <field name="name">project.task.form</field>
    <field name="model">project.task</field>
    <field name="arch" type="xml">
        <form js_class="viewed_records">
            <field name="name"/>
        </form>
    </field>
</record>

Python Mixin

The mixin adds the computed field is_viewed and helper methods for tracking.

class ViewedRecordsMixin(models.AbstractModel):
    _name = 'viewed.records.mixin'

    is_viewed = fields.Boolean(string='Is Opened', compute='_compute_is_viewed')

    @api.depends()
    def _compute_is_viewed(self):
        ViewedRecordsHistory = self.env['viewed.records.history']
        for rec in self:
            viewed = ViewedRecordsHistory.search([
                ('res_model', '=', self._name),
                ('record_id', '=', rec.id),
                ('user_id', '=', self.env.user.id),
            ], limit=1)
            rec.is_viewed = bool(viewed)

Using the Mixin in Your Model

To enable this functionality on any model, simply add:

class ProjectTask(models.Model):
    _name = 'project.task'
    _inherit = ['project.task', 'viewed.records.mixin']

After that, the model receives:

  • the field is_viewed
  • automatic history tracking when opening the form
  • list view highlighting for unread records

List View Decoration — Highlight Unread Records

The module supports visual highlighting of records that the user has not opened yet.

Example highlighting unread records in a list:

<record id="view_task_list" model="ir.ui.view">
    <field name="name">project.task.list</field>
    <field name="model">project.task</field>
    <field name="arch" type="xml">
        <list decoration-info="not is_viewed">
            <field name="name"/>
            <field name="is_viewed" column_invisible="1"/>
        </list>
    </field>
</record>

• Rows where is_viewed = False will be highlighted using the "info" decoration. • This is useful for visually identifying unread tasks, tickets, leads, documents, etc.

Installation

Place the module into the addons/ directory and install it from the Apps menu.

Contact

Author: Saken Serdaly
Email: sakenever137@gmail.com
GitHub: github.com/sakenever137

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with