From 6e3b5755deb07cabbaff5f4094090caab8bd5a34 Mon Sep 17 00:00:00 2001 From: Josue Kouka Date: Tue, 14 Feb 2017 17:14:08 +0100 Subject: [PATCH] don't use PhantomJS when using archimed ws (#14967) --- mandayejs/urls.py | 5 ++--- mandayejs/views.py | 52 ++++++++++++++++++---------------------------------- 2 files changed, 20 insertions(+), 37 deletions(-) diff --git a/mandayejs/urls.py b/mandayejs/urls.py index 46e6c31..2f7a643 100644 --- a/mandayejs/urls.py +++ b/mandayejs/urls.py @@ -28,8 +28,8 @@ urlpatterns = patterns('', url(r'^_mandaye/post-login/$', 'mandayejs.mandaye.views.post_login', name='post-login'), url(r'^_mandaye/post-login-do/$', 'mandayejs.mandaye.views.post_login_do', name='post-login-do'), url(r'^_mandaye/admin/', include(admin.site.urls)), - url(r'^_mandaye/ws/(?P.*)$', app_web_services), - url(r'^_mandaye/api/','mandayejs.mandaye.api.api', name='api') + url(r'^_mandaye/ws/(?P.*)$', app_web_services, name='app-web-services'), + url(r'^_mandaye/api/', 'mandayejs.mandaye.api.api', name='api') ) if 'mellon' in settings.INSTALLED_APPS: @@ -37,4 +37,3 @@ if 'mellon' in settings.INSTALLED_APPS: url(r'^_mandaye/logout/$', 'mandayejs.mandaye.views.logout', name='logout'), url(r'^_mandaye/accounts/mellon/', include('mellon.urls')), ) - diff --git a/mandayejs/views.py b/mandayejs/views.py index 02cf9aa..7a8820d 100644 --- a/mandayejs/views.py +++ b/mandayejs/views.py @@ -18,8 +18,6 @@ from __future__ import absolute_import import logging import requests -from pprint import pprint -from requests.cookies import RequestsCookieJar from django.contrib.auth.models import User from django.shortcuts import get_object_or_404 @@ -29,7 +27,6 @@ from rest_framework.views import APIView from rest_framework.response import Response from mandayejs.mandaye.models import UserCredentials -from mandayejs.mandaye.utils import exec_phantom, get_login_info from mandayejs.applications import get_app_settings @@ -40,43 +37,30 @@ class ArchimedAccountDetails(APIView): def get(self, request, *args, **kwargs): logger = logging.getLogger(__name__) app_settings = get_app_settings() - ws_uri = app_settings.SITE_WS_ENDPOINT['account_details'] username = kwargs['username'] user = get_object_or_404(User, username=username) credentials = get_object_or_404(UserCredentials, user=user) - login_info = get_login_info(request, credentials) - logger.debug(login_info) - login_info['locators'] = [credentials.to_login_info(decrypt=True)] - result = exec_phantom(login_info) - - if result.get('result') != 'ok': - return Response(status=status.HTTP_401_UNAUTHORIZED) - - session = requests.session() - r_cookies = RequestsCookieJar() - - for cookie in result.get('cookies'): - r_cookies.set( - cookie['name'], - cookie['value'], - domain=cookie['domain'], - path=cookie['path'], - secure=cookie['secure'] - ) - session.cookies = r_cookies + login_url = '/DEFAULT/Ermes/Recherche/logon.svc/logon' + login_url = request.build_absolute_uri(login_url) + + with requests.Session() as session: + login_info = credentials.to_login_info(decrypt=True) + login_info = {'username': login_info['#carte'], 'password': login_info['#code']} + response = session.post(login_url, data=login_info) + logger.debug("Archimed login response {}".format(response.json())) + if not response.json()['success']: + return Response('Authentication failed', status=status.HTTP_401_UNAUTHORIZED) + + content = { + 'codeConfig': '', + 'xslPath': 'Services/LectorShortAccount.xslt' + } + response = session.post(ws_uri, json=content) + logger.debug("Archimed ws response {}".format(response.json())) + return Response(response.json()) - headers = { - 'Content-Type': 'application/json', - } - content = '{"codeConfig":"", "xslPath":"Services/LectorShortAccount.xslt"}' - url = request.build_absolute_uri(ws_uri) - logger.debug(url) - request_response = session.post(url, headers=headers, data=content, verify=False) - data = request_response.json() - logger.debug(pprint(data)) - return Response(data) archimed_account_details = ArchimedAccountDetails.as_view() -- 2.11.0