From 9c3822e88ee2fc93059b6e2e1522055f7274fe0c Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Mon, 8 Jan 2024 18:46:26 +0100
Subject: [PATCH] [UPD] mail activity rules and functions for Activity view

---
 models/mail_activity.py     | 53 ++++++++++++++++++++++++-------------
 security/security_rules.xml |  6 ++---
 views/scop_period_views.xml |  1 -
 3 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/models/mail_activity.py b/models/mail_activity.py
index b716c58..28ae10e 100644
--- a/models/mail_activity.py
+++ b/models/mail_activity.py
@@ -1,28 +1,45 @@
 # © 2019 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
-from odoo import api, models
+from odoo import api, fields, models
 
 
 class MailActivity(models.Model):
     _inherit = "mail.activity"
 
-    # ------------------------------------------------------
-    # Onchange functions
-    # ------------------------------------------------------
-    @api.onchange("activity_type_id")
-    def _onchange_activity_type_id(self):
+    activity_type_id = fields.Many2one(
+        domain="""[
+            '|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id),
+            '|', ('ur_id','=',False), ('ur_id','=',context.get('current_ur_id', False))
+        ]
+        """,
+    )
+
+    @api.model
+    def get_activity_data(self, res_model, domain):
         """
-        Renvoie un domaine lié aux activités de l'UR de l'utilisateur
+        Surcharge la fonction parente pour n'afficher que les activités liées à l'UR
+        dans la vue Activité
         """
-        domain = {
-            "domain": {
-                "activity_type_id": [
-                    ("ur_id", "=", self.env.company.ur_id.id),
-                    "|",
-                    ("res_model_id", "=", False),
-                    ("res_model_id", "=", self.res_model_id),
-                ]
-            }
-        }
-        return domain
+        result = super(MailActivity, self).get_activity_data(res_model, domain)
+        activity_type_infos = []
+        activity_type_ids = self.env["mail.activity.type"].search(
+            [
+                "|",
+                ("res_model_id.model", "=", res_model),
+                ("res_model_id", "=", False),
+                "|",
+                ("ur_id", "=", False),
+                ("ur_id", "=", self.env.context.get("current_ur_id", False)),
+            ]
+        )
+        for elem in sorted(activity_type_ids, key=lambda item: item.sequence):
+            mail_template_info = []
+            for mail_template_id in elem.mail_template_ids:
+                mail_template_info.append(
+                    {"id": mail_template_id.id, "name": mail_template_id.name}
+                )
+            activity_type_infos.append([elem.id, elem.name, mail_template_info])
+
+        result["activity_types"] = activity_type_infos
+        return result
diff --git a/security/security_rules.xml b/security/security_rules.xml
index 06c3a3c..5988d6b 100644
--- a/security/security_rules.xml
+++ b/security/security_rules.xml
@@ -226,13 +226,13 @@
         </record>
 
 
-        <record id="mail_activity_type_rule_admin" model="ir.rule">
-            <field name="name">mail activity type rule administrator</field>
+        <record id="mail_activity_type_rule" model="ir.rule">
+            <field name="name">mail activity type rule</field>
             <field name="model_id" ref="mail.model_mail_activity_type" />
             <field
                 name="domain_force"
             >['|', ('ur_id','=',False), ('ur_id','=',user.current_ur_id.id)]</field>
-            <field name="perm_read" eval="True" />
+            <field name="perm_read" eval="False" />
             <field name="perm_write" eval="True" />
             <field name="perm_create" eval="True" />
             <field name="perm_unlink" eval="True" />
diff --git a/views/scop_period_views.xml b/views/scop_period_views.xml
index 1e806ae..f6a42a8 100644
--- a/views/scop_period_views.xml
+++ b/views/scop_period_views.xml
@@ -104,7 +104,6 @@
                         options="{'no_open': True, 'no_create': True}"
                     />
                     <field name="number" />
-                    <field name="start" />
                     <field name="end" />
                     <field
                         name="end_reason_id"
-- 
GitLab