The `private_email`, `last_check_in` and `last_check_in`
fields were added by e9d9898 to the
profile view but not in `SELF_READABLE_FIELDS`.
A simple user was therefore not able to read the field and
access his profile.
To avoid any similar oversight in the future, a test is added
to ensure a simple user is able to read all fields in
the profile view.
31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import models, fields
|
|
|
|
|
|
class User(models.Model):
|
|
_inherit = ['res.users']
|
|
|
|
hours_last_month = fields.Float(related='employee_id.hours_last_month')
|
|
hours_last_month_display = fields.Char(related='employee_id.hours_last_month_display')
|
|
attendance_state = fields.Selection(related='employee_id.attendance_state')
|
|
last_check_in = fields.Datetime(related='employee_id.last_attendance_id.check_in')
|
|
last_check_out = fields.Datetime(related='employee_id.last_attendance_id.check_out')
|
|
|
|
def __init__(self, pool, cr):
|
|
""" Override of __init__ to add access rights.
|
|
Access rights are disabled by default, but allowed
|
|
on some specific fields defined in self.SELF_{READ/WRITE}ABLE_FIELDS.
|
|
"""
|
|
attendance_readable_fields = [
|
|
'hours_last_month',
|
|
'hours_last_month_display',
|
|
'attendance_state',
|
|
'last_check_in',
|
|
'last_check_out'
|
|
]
|
|
super(User, self).__init__(pool, cr)
|
|
# duplicate list to avoid modifying the original reference
|
|
type(self).SELF_READABLE_FIELDS = type(self).SELF_READABLE_FIELDS + attendance_readable_fields
|