From 7efccacb87562a860fe9fd502ed3237a07d6c8f8 Mon Sep 17 00:00:00 2001
From: Julien Ortet <julien@le-filament.com>
Date: Thu, 6 Feb 2025 08:37:28 +0100
Subject: [PATCH 1/5] [ADD] add CGU link in footer

---
 templates/portal_layout.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/templates/portal_layout.xml b/templates/portal_layout.xml
index 247c337..a836a3e 100644
--- a/templates/portal_layout.xml
+++ b/templates/portal_layout.xml
@@ -66,7 +66,7 @@
                         title="Enercoop Midi Pyrénées"
                     >Enercoop Midi-Pyrénées</a> afin de faciliter l’autoconsommation collective d’électricité renouvelable | <a
                         href="/mentions-legales"
-                    >Mentions légales</a>
+                    >Mentions légales</a> | <a href="/web/cgu">CGU</a>
                 </p>
             </div>
         </xpath>
-- 
GitLab


From f88b9e01f072f351d17dad39ac6b4ae6b7ccf921 Mon Sep 17 00:00:00 2001
From: Julien Ortet <julien@le-filament.com>
Date: Mon, 17 Feb 2025 13:53:47 +0100
Subject: [PATCH 2/5] [UPD] check on each routes

---
 controllers/__init__.py |  1 +
 controllers/main.py     | 39 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/controllers/__init__.py b/controllers/__init__.py
index 12a7e52..24d4d42 100644
--- a/controllers/__init__.py
+++ b/controllers/__init__.py
@@ -1 +1,2 @@
 from . import main
+from odoo.http import request
diff --git a/controllers/main.py b/controllers/main.py
index daed2f0..554a3a0 100644
--- a/controllers/main.py
+++ b/controllers/main.py
@@ -9,12 +9,25 @@ from odoo.addons.portal.controllers.portal import CustomerPortal as CustomerPort
 from odoo.addons.portal.controllers.web import Home as Home
 from odoo.addons.web.controllers.utils import is_user_internal
 
+def cgu_check():
+    ret = False
+    s = request.session
+    user = request.env["res.users"].sudo().browse(s.uid)
+    if user and not user.cgu_accepted_date:
+        ret = request.redirect("/web/cgu")
+    return ret
 
 class Home(Home):
     @http.route()
     def index(self, *args, **kw):
+
         if request.session.uid and not is_user_internal(request.session.uid):
             return request.redirect_query("/operations", query=request.params)
+
+        cgu_not_accepted = cgu_check()
+        if cgu_not_accepted:
+            return cgu_not_accepted
+
         return super().index(*args, **kw)
 
     def _login_redirect(self, uid, redirect=None):
@@ -99,6 +112,11 @@ class CustomerPortal(CustomerPortal):
 
     @http.route(["/infos"], type="http", auth="user", website=True, sitemap=True)
     def infos(self, page=1, **kwargs):
+
+        cgu_not_accepted = cgu_check()
+        if cgu_not_accepted:
+            return cgu_not_accepted
+
         values = {
             "page_name": "infos",
             "page_breadcrumbs": "Informations",
@@ -109,18 +127,33 @@ class CustomerPortal(CustomerPortal):
         ["/mentions-legales"], type="http", auth="user", website=True, sitemap=True
     )
     def legal(self, page=1, **kwargs):
+
+        cgu_not_accepted = cgu_check()
+        if cgu_not_accepted:
+            return cgu_not_accepted
+
         values = {
             "page_name": "legal",
             "page_breadcrumbs": "Mentions légales",
         }
         return request.render("oacc_portal.legal", values)
 
+
     @http.route(["/operations"], type="http", auth="user", website=True, sitemap=True)
     def view_all_operations_page(self, page=1, **kwargs):
         """
         Retourne la liste de toutes les opérations dans lesquelles l'utilisateur
         ou sa société sont engagés
         """
+        # s = request.session
+        # user = request.env["res.users"].sudo().browse(s.uid)
+        # if user and not user.cgu_accepted_date:
+        #     return request.redirect("/web/cgu")
+
+        cgu_not_accepted = cgu_check()
+        if cgu_not_accepted:
+            return cgu_not_accepted
+
         values = self._prepare_portal_layout_values()
         values.update(self._get_role())
 
@@ -212,6 +245,9 @@ class CustomerPortal(CustomerPortal):
         website=True,
     )
     def operation(self, operation, **kw):
+        cgu_not_accepted = cgu_check()
+        if cgu_not_accepted:
+            return cgu_not_accepted
         render_values = self._get_operation_values(operation)
         return request.render("oacc_portal.operation_main", render_values)
 
@@ -222,6 +258,9 @@ class CustomerPortal(CustomerPortal):
         website=True,
     )
     def contact(self, operation, **kw):
+        cgu_not_accepted = cgu_check()
+        if cgu_not_accepted:
+            return cgu_not_accepted
         render_values = {}
         render_values.update(self._get_role(operation))
         render_values.update({"page_name": "contact", "page_breadcrumbs": "Contact"})
-- 
GitLab


From 7791a5cc8379f936ef1aa802103e38271465a701 Mon Sep 17 00:00:00 2001
From: Julien Ortet <julien@le-filament.com>
Date: Mon, 17 Feb 2025 15:52:57 +0100
Subject: [PATCH 3/5] [UPD] use dispatch

---
 controllers/main.py | 34 ----------------------------------
 1 file changed, 34 deletions(-)

diff --git a/controllers/main.py b/controllers/main.py
index 554a3a0..75e228e 100644
--- a/controllers/main.py
+++ b/controllers/main.py
@@ -9,14 +9,6 @@ from odoo.addons.portal.controllers.portal import CustomerPortal as CustomerPort
 from odoo.addons.portal.controllers.web import Home as Home
 from odoo.addons.web.controllers.utils import is_user_internal
 
-def cgu_check():
-    ret = False
-    s = request.session
-    user = request.env["res.users"].sudo().browse(s.uid)
-    if user and not user.cgu_accepted_date:
-        ret = request.redirect("/web/cgu")
-    return ret
-
 class Home(Home):
     @http.route()
     def index(self, *args, **kw):
@@ -24,10 +16,6 @@ class Home(Home):
         if request.session.uid and not is_user_internal(request.session.uid):
             return request.redirect_query("/operations", query=request.params)
 
-        cgu_not_accepted = cgu_check()
-        if cgu_not_accepted:
-            return cgu_not_accepted
-
         return super().index(*args, **kw)
 
     def _login_redirect(self, uid, redirect=None):
@@ -113,10 +101,6 @@ class CustomerPortal(CustomerPortal):
     @http.route(["/infos"], type="http", auth="user", website=True, sitemap=True)
     def infos(self, page=1, **kwargs):
 
-        cgu_not_accepted = cgu_check()
-        if cgu_not_accepted:
-            return cgu_not_accepted
-
         values = {
             "page_name": "infos",
             "page_breadcrumbs": "Informations",
@@ -128,10 +112,6 @@ class CustomerPortal(CustomerPortal):
     )
     def legal(self, page=1, **kwargs):
 
-        cgu_not_accepted = cgu_check()
-        if cgu_not_accepted:
-            return cgu_not_accepted
-
         values = {
             "page_name": "legal",
             "page_breadcrumbs": "Mentions légales",
@@ -145,14 +125,6 @@ class CustomerPortal(CustomerPortal):
         Retourne la liste de toutes les opérations dans lesquelles l'utilisateur
         ou sa société sont engagés
         """
-        # s = request.session
-        # user = request.env["res.users"].sudo().browse(s.uid)
-        # if user and not user.cgu_accepted_date:
-        #     return request.redirect("/web/cgu")
-
-        cgu_not_accepted = cgu_check()
-        if cgu_not_accepted:
-            return cgu_not_accepted
 
         values = self._prepare_portal_layout_values()
         values.update(self._get_role())
@@ -245,9 +217,6 @@ class CustomerPortal(CustomerPortal):
         website=True,
     )
     def operation(self, operation, **kw):
-        cgu_not_accepted = cgu_check()
-        if cgu_not_accepted:
-            return cgu_not_accepted
         render_values = self._get_operation_values(operation)
         return request.render("oacc_portal.operation_main", render_values)
 
@@ -258,9 +227,6 @@ class CustomerPortal(CustomerPortal):
         website=True,
     )
     def contact(self, operation, **kw):
-        cgu_not_accepted = cgu_check()
-        if cgu_not_accepted:
-            return cgu_not_accepted
         render_values = {}
         render_values.update(self._get_role(operation))
         render_values.update({"page_name": "contact", "page_breadcrumbs": "Contact"})
-- 
GitLab


From 5a7af36fb68517017e849a42916bba0b736abe6e Mon Sep 17 00:00:00 2001
From: Julien Ortet <julien@le-filament.com>
Date: Mon, 17 Feb 2025 15:58:43 +0100
Subject: [PATCH 4/5] [UPD] pre commit

---
 controllers/main.py | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/controllers/main.py b/controllers/main.py
index 75e228e..0b559e1 100644
--- a/controllers/main.py
+++ b/controllers/main.py
@@ -9,10 +9,10 @@ from odoo.addons.portal.controllers.portal import CustomerPortal as CustomerPort
 from odoo.addons.portal.controllers.web import Home as Home
 from odoo.addons.web.controllers.utils import is_user_internal
 
+
 class Home(Home):
     @http.route()
     def index(self, *args, **kw):
-
         if request.session.uid and not is_user_internal(request.session.uid):
             return request.redirect_query("/operations", query=request.params)
 
@@ -100,7 +100,6 @@ class CustomerPortal(CustomerPortal):
 
     @http.route(["/infos"], type="http", auth="user", website=True, sitemap=True)
     def infos(self, page=1, **kwargs):
-
         values = {
             "page_name": "infos",
             "page_breadcrumbs": "Informations",
@@ -111,14 +110,12 @@ class CustomerPortal(CustomerPortal):
         ["/mentions-legales"], type="http", auth="user", website=True, sitemap=True
     )
     def legal(self, page=1, **kwargs):
-
         values = {
             "page_name": "legal",
             "page_breadcrumbs": "Mentions légales",
         }
         return request.render("oacc_portal.legal", values)
 
-
     @http.route(["/operations"], type="http", auth="user", website=True, sitemap=True)
     def view_all_operations_page(self, page=1, **kwargs):
         """
-- 
GitLab


From 73516b3cf8508b8776376703cb90f4a28934496f Mon Sep 17 00:00:00 2001
From: Julien Ortet <julien@le-filament.com>
Date: Mon, 17 Feb 2025 15:59:54 +0100
Subject: [PATCH 5/5] [UPD] pre commit

---
 controllers/__init__.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/controllers/__init__.py b/controllers/__init__.py
index 24d4d42..12a7e52 100644
--- a/controllers/__init__.py
+++ b/controllers/__init__.py
@@ -1,2 +1 @@
 from . import main
-from odoo.http import request
-- 
GitLab