server-ux/filter_multi_user/models/ir_filters.py
2021-03-23 20:15:27 +01:00

53 lines
1.6 KiB
Python

# Copyright 2020 ForgeFlow S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from flectra import api, fields, models
class IrFilters(models.Model):
_inherit = "ir.filters"
user_ids = fields.Many2many(
comodel_name="res.users",
string="Users",
compute="_compute_user_ids",
store=True,
)
manual_user_ids = fields.Many2many(
comodel_name="res.users",
string="Available for Users",
relation="ir_filters_res_users_manual_rel",
)
group_ids = fields.Many2many(
comodel_name="res.groups",
string="Available for Groups",
)
@api.constrains("manual_user_ids", "group_ids")
def _compute_user_ids(self):
for rec in self:
rec.user_ids = rec.manual_user_ids + rec.group_ids.users
@api.model
def get_filters(self, model, action_id=None):
# WARNING: this function overrides the standard one.
# The only change done is in the domain used to search the filters.
action_domain = self._get_action_domain(action_id)
filters = self.search(
action_domain
+ [
("model_id", "=", model),
"|",
"|",
("user_id", "=", self._uid),
("user_ids", "in", self._uid),
"&",
("user_id", "=", False),
("user_ids", "=", False),
]
)
user_context = self.env["res.users"].context_get()
return filters.with_context(user_context).read(
["name", "is_default", "domain", "context", "user_id", "sort"]
)