Files
gzth/app_user_admin/models/res_users_role_line.py
2024-12-23 11:01:59 +08:00

56 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
import datetime
import logging
from odoo import SUPERUSER_ID, api, fields, models
_logger = logging.getLogger(__name__)
class ResUsersRoleLine(models.Model):
_name = "res.users.role.line"
_description = "Users associated to a role"
active = fields.Boolean(related="user_id.active")
role_id = fields.Many2one(
comodel_name="res.users.role", required=True, string="Role", ondelete="cascade"
)
user_id = fields.Many2one(
comodel_name="res.users",
required=True,
string="User",
domain=[("id", "!=", SUPERUSER_ID)],
ondelete="cascade",
)
date_from = fields.Date("From")
date_to = fields.Date("To")
is_enabled = fields.Boolean("Enabled", compute="_compute_is_enabled")
_sql_constraints = [
(
"user_role_uniq",
"unique (user_id,role_id)",
"Roles can be assigned to a user only once at a time",
)
]
@api.depends("date_from", "date_to")
def _compute_is_enabled(self):
today = datetime.date.today()
for role_line in self:
role_line.is_enabled = True
if role_line.date_from:
date_from = role_line.date_from
if date_from > today:
role_line.is_enabled = False
if role_line.date_to:
date_to = role_line.date_to
if today > date_to:
role_line.is_enabled = False
def unlink(self):
users = self.mapped("user_id")
res = super(ResUsersRoleLine, self).unlink()
users.set_groups_from_roles(force=True)
return res