From 0efb4cd0a9a2ac39827bd58fa5ef05dab52a6b6f Mon Sep 17 00:00:00 2001 From: Daniele Andreotti Date: Mon, 28 Jul 2025 16:35:36 +0200 Subject: [PATCH 1/3] Handle redirects for @@download, @@images and @@display-file requests --- CHANGES.rst | 2 + src/redturtle/volto/browser/configure.zcml | 9 +++ src/redturtle/volto/browser/exceptions.py | 12 +++ .../browser/templates/basic_error_message.pt | 38 +++++++++ .../volto/browser/templates/error_message.pt | 79 +++++++++++++++++++ 5 files changed, 140 insertions(+) create mode 100644 src/redturtle/volto/browser/exceptions.py create mode 100644 src/redturtle/volto/browser/templates/basic_error_message.pt create mode 100644 src/redturtle/volto/browser/templates/error_message.pt diff --git a/CHANGES.rst b/CHANGES.rst index bc1f894..2c6a42c 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -10,6 +10,8 @@ Changelog [cekk] - fix file:/// as external link in summary [mamico] +- Updated error message template. Handle redirects for @@download, @@images and @@display-file requests. + [daniele] 5.9.0 (2025-06-26) ------------------ diff --git a/src/redturtle/volto/browser/configure.zcml b/src/redturtle/volto/browser/configure.zcml index acbbdb0..91963eb 100644 --- a/src/redturtle/volto/browser/configure.zcml +++ b/src/redturtle/volto/browser/configure.zcml @@ -98,4 +98,13 @@ layer="redturtle.volto.interfaces.IRedturtleVoltoLayer" condition="have plone-60" /> + + diff --git a/src/redturtle/volto/browser/exceptions.py b/src/redturtle/volto/browser/exceptions.py new file mode 100644 index 0000000..1dd8ea0 --- /dev/null +++ b/src/redturtle/volto/browser/exceptions.py @@ -0,0 +1,12 @@ +from Products.CMFPlone.browser.exceptions import ExceptionView + + +class RTExceptionView(ExceptionView): + + def __call__(self): + matches = ["@@download", "@@images", "@@display-file"] + + if any(x in self.request.environ.get("REQUEST_URI") for x in matches): + return self.request.response.redirect(self.request.URL) + + return super(RTExceptionView, self).__call__() diff --git a/src/redturtle/volto/browser/templates/basic_error_message.pt b/src/redturtle/volto/browser/templates/basic_error_message.pt new file mode 100644 index 0000000..934b5be --- /dev/null +++ b/src/redturtle/volto/browser/templates/basic_error_message.pt @@ -0,0 +1,38 @@ + + + + + + Error + ${options/error_type} + + + + +

+ We’re sorry, but there seems to be an error… +

+ +

${options/error_type}

+ +
+
+  
+      

+ If you are certain you have the correct web address but are encountering an error, please + contact the site administration. +

+
+ + + + +(rer.new) daniele@ \ No newline at end of file diff --git a/src/redturtle/volto/browser/templates/error_message.pt b/src/redturtle/volto/browser/templates/error_message.pt new file mode 100644 index 0000000..f0a8ea0 --- /dev/null +++ b/src/redturtle/volto/browser/templates/error_message.pt @@ -0,0 +1,79 @@ + + + + + + + + + +

+ This page does not seem to exist… +

+ +
+

+ We apologize for the inconvenience, but the page you were trying to access is not at this address. + You can use the links below to help you find what you are looking for. +

+ +

+ If you are certain you have the correct web address but are encountering an error, please + contact the + site administration. +

+ +

+ Thank you. +

+ +
+
+ +
+ + + +

+ We’re sorry, but there seems to be an error… +

+ +
+
+

+ Here is the full error message: +

+ +
+                
+ + +

+ If you are certain you have the correct web address but are encountering an error, please + contact the + site administration. +

+
+
+ +
+ +
+ + \ No newline at end of file From bc42b46e84c51f5bef6da5b1663d3dfd296cf686 Mon Sep 17 00:00:00 2001 From: Daniele Andreotti Date: Mon, 28 Jul 2025 16:57:12 +0200 Subject: [PATCH 2/3] cleanup --- CHANGES.rst | 2 +- src/redturtle/volto/browser/exceptions.py | 2 +- .../browser/templates/basic_error_message.pt | 38 ------------------- 3 files changed, 2 insertions(+), 40 deletions(-) delete mode 100644 src/redturtle/volto/browser/templates/basic_error_message.pt diff --git a/CHANGES.rst b/CHANGES.rst index 2c6a42c..043e5db 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -10,7 +10,7 @@ Changelog [cekk] - fix file:/// as external link in summary [mamico] -- Updated error message template. Handle redirects for @@download, @@images and @@display-file requests. +- Updated error message template. Handle 404 redirects for @@download, @@images and @@display-file requests. [daniele] 5.9.0 (2025-06-26) diff --git a/src/redturtle/volto/browser/exceptions.py b/src/redturtle/volto/browser/exceptions.py index 1dd8ea0..d08a750 100644 --- a/src/redturtle/volto/browser/exceptions.py +++ b/src/redturtle/volto/browser/exceptions.py @@ -9,4 +9,4 @@ def __call__(self): if any(x in self.request.environ.get("REQUEST_URI") for x in matches): return self.request.response.redirect(self.request.URL) - return super(RTExceptionView, self).__call__() + return super().__call__() diff --git a/src/redturtle/volto/browser/templates/basic_error_message.pt b/src/redturtle/volto/browser/templates/basic_error_message.pt deleted file mode 100644 index 934b5be..0000000 --- a/src/redturtle/volto/browser/templates/basic_error_message.pt +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - Error - ${options/error_type} - - - - -

- We’re sorry, but there seems to be an error… -

- -

${options/error_type}

- -
-
-  
-      

- If you are certain you have the correct web address but are encountering an error, please - contact the site administration. -

-
- - - - -(rer.new) daniele@ \ No newline at end of file From d6c2411f522ac94b2ee48f0eb49d1e394c759ad1 Mon Sep 17 00:00:00 2001 From: Andrea Cecchi Date: Fri, 1 Aug 2025 11:05:41 +0200 Subject: [PATCH 3/3] fix logic --- src/redturtle/volto/browser/exceptions.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/redturtle/volto/browser/exceptions.py b/src/redturtle/volto/browser/exceptions.py index d08a750..89b4feb 100644 --- a/src/redturtle/volto/browser/exceptions.py +++ b/src/redturtle/volto/browser/exceptions.py @@ -5,8 +5,8 @@ class RTExceptionView(ExceptionView): def __call__(self): matches = ["@@download", "@@images", "@@display-file"] - - if any(x in self.request.environ.get("REQUEST_URI") for x in matches): - return self.request.response.redirect(self.request.URL) + if any(x in self.request.ACTUAL_URL for x in matches): + self.request.response.redirect(self.request.URL, status=302, lock=1) + return return super().__call__()