Uso de OOTB Alfresco 5 Community edition ejecutándose en Ubuntu14.04

Pasos: Cree un sitio a través de la interfaz de usuario compartida. Copie la solicitud como curl de las herramientas de desarrollador de Chromium. Solicitud reconstruida en la biblioteca de solicitudes de Python como:

s=requests.post('http://<IP>:8080/share/service/modules/create-site',data=site_data,cookies=THE_cookie

Donde THE_cookie se obtuvo a través de un POST a http: //: 8080 / share / page / dologin, que dio un 200, y site_data tiene diferentes nombres para el sitio creado a través de la UI compartida.

Esa solicitud dio un error 500 indicando que

 u'freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:\n==> success  [in template "org/alfresco/modules/create-site.post.json.ftl" at line 2, column 17]\n\nTip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)??\n\nThe failing instruction:\n==> ${success?string}  [in template "org/alfresco/modules/create-site.post.json.ftl" at line 2, column 15]', ...

Cuando en Chromium, no hay respuesta, pero se crea un sitio con éxito.

Tampoco tengo la solicitud curl de la línea de comando para funcionar: necesita que se elimine el token CSRF, luego da un 200 y no hace nada; No hay registros. Tengo entendido que Alfresco siempre da un 200 en una solicitud exitosa, independientemente de si se trata de GET o POST.

Si alguien tiene alguna idea, sería increíble. Parece que no hay nada que podamos hacer para que Create-Site funcione fuera de la IU compartida, pero lo necesitamos absolutamente para hacerlo.

0
David Boshton 2 sep. 2014 a las 16:03

2 respuestas

La mejor respuesta

Como el script espera JSON, debe configurar el encabezado HTTP "Content-Type: application/json".

1
Kampai 10 dic. 2014 a las 10:25

Eche un vistazo a Solicitudes objetos de sesión, que son diseñado para persistir las cookies de sesión entre solicitudes (como lo hace un navegador). Puedes probar un enfoque similar a este:

s = requests.session()
s.post('http://<IP>:8080/share/page/dologin', data=login_data)
r = s.post('http://<IP>:8080/share/service/modules/create-site', data=site_data)
1
Augusto Destrero 9 oct. 2014 a las 09:05