Public release from ruodoo-project: 19.0 - 2026-05-31 21:19:12 UTC
This commit is contained in:
55
base_tier_validation/models/res_users.py
Normal file
55
base_tier_validation/models/res_users.py
Normal file
@ -0,0 +1,55 @@
|
||||
# Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com)
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models, modules
|
||||
|
||||
|
||||
class Users(models.Model):
|
||||
_inherit = "res.users"
|
||||
|
||||
review_ids = fields.Many2many(string="Reviews", comodel_name="tier.review")
|
||||
|
||||
@api.model
|
||||
def review_user_count(self):
|
||||
user_reviews = {}
|
||||
user = self.env.user
|
||||
domain = [
|
||||
("status", "=", "pending"),
|
||||
("can_review", "=", True),
|
||||
("id", "in", user.review_ids.ids),
|
||||
]
|
||||
review_groups = self.env["tier.review"]._read_group(
|
||||
domain=domain,
|
||||
groupby=["model"],
|
||||
aggregates=["id:recordset"],
|
||||
)
|
||||
for model, tier_review in review_groups:
|
||||
Model = self.env[model]
|
||||
# Skip Models not having Tier Validation enabled (example: was unistalled)
|
||||
if tier_review and hasattr(Model, "can_review"):
|
||||
records_domain = [
|
||||
("id", "in", tier_review.mapped("res_id")),
|
||||
("validation_status", "!=", "rejected"),
|
||||
("can_review", "=", True),
|
||||
]
|
||||
records = (
|
||||
Model.with_user(user)
|
||||
.with_context(active_test=False)
|
||||
.search(records_domain)
|
||||
)
|
||||
# Excludes any cancelled records depending on the structure of the model
|
||||
if Model._state_field in Model._fields:
|
||||
records = records.filtered(
|
||||
lambda x: x[x._state_field] != x._cancel_state
|
||||
)
|
||||
if records:
|
||||
user_reviews[model] = {
|
||||
"id": records[0].id,
|
||||
"name": Model._description,
|
||||
"model": model,
|
||||
"active_field": "active" in Model._fields,
|
||||
"icon": modules.module.get_module_icon(Model._original_module),
|
||||
"type": "tier_review",
|
||||
"pending_count": len(records),
|
||||
}
|
||||
return list(user_reviews.values())
|
||||
Reference in New Issue
Block a user