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
    • Estate 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 10
Download for v 18.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Employees (hr)
• Discuss (mail)
Lines of code 180
Technical Name viewed_records
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.
Please choose a rating from 1 to 5 for this module.
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