@@ -39,20 +39,36 @@ def login_URL(context, request):
3939 came_from = getattr (request , 'came_from' , None )
4040
4141 if came_from :
42+ # Limpiar URLs de vistas de archivos binarios (@@display-file, @@download)
43+ # para que apunten al objeto en lugar del binario directo
44+ for view_pattern in ['@@display-file/' , '@@download/' ]:
45+ if view_pattern in came_from :
46+ came_from = came_from .split (view_pattern )[0 ]
47+ break
48+
4249 if not came_from .endswith ('/view' ):
4350 try :
44- item_path = unir_cadenas ('/' + '/' .join (context .getPhysicalPath ()[1 :3 ]), came_from )
51+ item_path = unir_cadenas (
52+ '/' + '/' .join (context .getPhysicalPath ()[1 : 3 ]),
53+ came_from )
4554 pc = api .portal .get_tool (name = 'portal_catalog' )
4655 item = pc .unrestrictedSearchResults (path = item_path , depth = 0 )
4756 if item :
48- if item [0 ].portal_type in ['Image' , 'File' ]:
57+ if item [0 ].portal_type in [
58+ 'Image' , 'File' ]:
4959 came_from += '/view'
5060 except :
5161 pass
5262
53- return '%s/login?idApp=%s&service=%s' % (plugin .cas_server_url , cas_settings .app_name , secureURL (strip_ticket (parse .urljoin (portal .absolute_url () + '/' , came_from ))))
54- return f"{ plugin .cas_server_url } /login?idApp={ cas_settings .app_name } &service={ secureURL (strip_ticket (parse .urljoin (portal .absolute_url () + '/' , came_from )))} "
55-
63+ return '%s/login?idApp=%s&service=%s' % (
64+ plugin .cas_server_url , cas_settings .app_name ,
65+ secureURL (
66+ strip_ticket (
67+ parse .urljoin (portal .absolute_url () + '/' , came_from ))))
68+ return '%s/login?idApp=%s&service=%s' % (
69+ plugin .cas_server_url , cas_settings .app_name ,
70+ secureURL (
71+ strip_ticket (parse .urljoin (portal .absolute_url () + '/' , came_from ))))
5672
5773 else :
5874 return '%s/login_form' % portal .absolute_url ()
@@ -89,4 +105,5 @@ def unir_cadenas(s1, s2):
89105 max_overlap = i
90106
91107 # Une las cadenas sin repetir la superposición
92- return s1 + s2 [max_overlap :]
108+ return s1 + s2 [max_overlap :]
109+
0 commit comments