fix pep8 errors and remove unused imports (#13294)
This commit is contained in:
parent
28577537ab
commit
bd5e3b3bdc
|
@ -20,21 +20,22 @@ import os
|
|||
from importlib import import_module
|
||||
|
||||
from django.conf import settings
|
||||
from django.conf.urls import patterns, include, url
|
||||
from django.conf.urls import patterns, url
|
||||
from django.http import Http404
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.urlresolvers import resolve
|
||||
|
||||
|
||||
def get_app_settings():
|
||||
module_name,app_settings = tuple(settings.SITE_APP.rsplit('.',1))
|
||||
module_name, app_settings = tuple(settings.SITE_APP.rsplit('.', 1))
|
||||
module = import_module(module_name)
|
||||
return getattr(module, app_settings)
|
||||
|
||||
|
||||
def app_web_services(request, path):
|
||||
app = get_app_settings()
|
||||
if hasattr(app, 'urlpatterns'):
|
||||
view, args, kwargs = resolve(request.path, urlconf= app)
|
||||
view, args, kwargs = resolve(request.path, urlconf=app)
|
||||
return view(request, *args, **kwargs)
|
||||
raise Http404
|
||||
|
||||
|
@ -51,19 +52,20 @@ class AppSettingsMeta(type):
|
|||
|
||||
def __new__(cls, name, bases, dct):
|
||||
if name != 'AppSettings':
|
||||
if AppSettings in bases: # Avoid checking keys for inherited classes
|
||||
if AppSettings in bases: # Avoid checking keys for inherited classes
|
||||
|
||||
missing_key = set(cls.REQUIRED_KEYS).difference(set(dct.keys())) or None
|
||||
if missing_key:
|
||||
raise ImproperlyConfigured('{} is mandatory'.format(missing_key.pop()))
|
||||
|
||||
if not set(('SITE_FORCE_REDIRECT_URL','SITE_FORCE_REDIRECT_LOCATOR'))\
|
||||
.intersection(set(dct.keys())):
|
||||
raise ImproperlyConfigured('one of these settings ({}) must be defined'
|
||||
.format(('SITE_FORCE_REDIRECT_URL','SITE_FORCE_REDIRECT_LOCATOR')))
|
||||
if not set(('SITE_FORCE_REDIRECT_URL', 'SITE_FORCE_REDIRECT_LOCATOR')).intersection(set(dct.keys())):
|
||||
raise ImproperlyConfigured(
|
||||
'one of these settings ({}) must be defined'
|
||||
.format(('SITE_FORCE_REDIRECT_URL', 'SITE_FORCE_REDIRECT_LOCATOR')))
|
||||
|
||||
# Script asserting phantomjs authentication
|
||||
dct['SITE_AUTH_CHECKER'] = os.path.join(settings.STATIC_ROOT,
|
||||
dct['SITE_AUTH_CHECKER'])
|
||||
dct['SITE_AUTH_CHECKER'] = os.path.join(settings.STATIC_ROOT, dct['SITE_AUTH_CHECKER'])
|
||||
|
||||
# Default form submit element
|
||||
if not dct.get('SITE_FORM_SUBMIT_ELEMENT', None):
|
||||
dct['SITE_FORM_SUBMIT_ELEMENT'] = 'input[type=submit], button'
|
||||
|
@ -135,7 +137,7 @@ class Duonet(AppSettings):
|
|||
]
|
||||
SITE_APP_SCRIPTS = [
|
||||
'duonet/js/duonet.js',
|
||||
]
|
||||
]
|
||||
|
||||
SITE_FORCE_REDIRECT_URL = '/Connect.aspx'
|
||||
|
||||
|
@ -180,7 +182,8 @@ class Archimed(AppSettings):
|
|||
'account_details': '/DEFAULT/Ermes/Services/ILSClient.svc/RetrieveAccount',
|
||||
}
|
||||
|
||||
urlpatterns = patterns('',
|
||||
urlpatterns = patterns(
|
||||
'',
|
||||
url(
|
||||
r'account/(?P<username>[\w+]*)/$',
|
||||
'mandayejs.views.archimed_account_details',
|
||||
|
@ -228,7 +231,7 @@ class ArpegeVincennesTest(Arpege):
|
|||
|
||||
|
||||
class Imuse(AppSettings):
|
||||
SITE_LOGIN_PATH = 'extranet/login/gen_index_groupe.php?nav=autre'
|
||||
SITE_LOGIN_PATH = 'extranet/login/gen_index_groupe.php?nav=autre'
|
||||
|
||||
SITE_LOCATORS = [
|
||||
{
|
||||
|
|
|
@ -22,7 +22,6 @@ from django.contrib.auth.models import User
|
|||
from rest_framework import status
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
|
||||
from mandayejs.applications import get_app_settings
|
||||
from mandayejs.mandaye.models import UserCredentials
|
||||
|
@ -38,7 +37,7 @@ class MandayeAPI(APIView):
|
|||
def get(self, request, *args, **kwargs):
|
||||
app_settings = get_app_settings()
|
||||
locators = {
|
||||
locator.get('name') : '' \
|
||||
locator.get('name'): ''
|
||||
for locator in app_settings.SITE_LOCATORS
|
||||
}
|
||||
return Response(locators)
|
||||
|
@ -47,16 +46,16 @@ class MandayeAPI(APIView):
|
|||
data = request.data
|
||||
|
||||
user, created = User.objects.get_or_create(
|
||||
username= data.get('name_id_content'),
|
||||
email= data.get('email'),
|
||||
first_name= data.get('first_name'),
|
||||
last_name= data.get('last_name')
|
||||
username=data.get('name_id_content'),
|
||||
email=data.get('email'),
|
||||
first_name=data.get('first_name'),
|
||||
last_name=data.get('last_name')
|
||||
)
|
||||
|
||||
uuid, created = UserSAMLIdentifier.objects.get_or_create(
|
||||
user_id= user.id,
|
||||
name_id= data.get('name_id_content'),
|
||||
issuer= get_idp()
|
||||
user_id=user.id,
|
||||
name_id=data.get('name_id_content'),
|
||||
issuer=get_idp()
|
||||
)
|
||||
|
||||
cred = UserCredentials(user=user, locators=data.get('locators'))
|
||||
|
@ -68,7 +67,7 @@ class MandayeAPI(APIView):
|
|||
return Response(status=status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
cred.save()
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
|
||||
def delete(self, request, *args, **kwargs):
|
||||
data = request.data
|
||||
|
|
|
@ -16,34 +16,32 @@
|
|||
from __future__ import absolute_import
|
||||
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
|
||||
from mandayejs.applications import get_app_settings
|
||||
from mandayejs.mandaye.models import UserCredentials
|
||||
|
||||
app_settings = get_app_settings()
|
||||
|
||||
|
||||
class FormFactory(forms.Form):
|
||||
def __init__(self, *args, **kwargs):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(FormFactory, self).__init__(*args, **kwargs)
|
||||
fields = getattr(app_settings, 'SITE_LOCATORS', [])
|
||||
if fields :
|
||||
for field in fields :
|
||||
if fields:
|
||||
for field in fields:
|
||||
if field['kind'] == 'string':
|
||||
self.fields[field['name']] = forms.CharField(
|
||||
label=field['label'],
|
||||
max_length=32,
|
||||
help_text=field['help']
|
||||
label=field['label'],
|
||||
max_length=32,
|
||||
help_text=field['help']
|
||||
)
|
||||
elif field['kind'] == 'password':
|
||||
self.fields[field['name']] = forms.CharField(
|
||||
label=field['label'],
|
||||
widget=forms.PasswordInput(),
|
||||
help_text=field['help']
|
||||
label=field['label'],
|
||||
widget=forms.PasswordInput(),
|
||||
help_text=field['help']
|
||||
)
|
||||
else:
|
||||
self.fields[field['name']] = forms.DateField(
|
||||
label=field['label'],
|
||||
help_text=field['help']
|
||||
label=field['label'],
|
||||
help_text=field['help']
|
||||
)
|
||||
|
||||
|
|
|
@ -83,4 +83,4 @@ class UserCredentials(models.Model):
|
|||
def to_login_info(self, decrypt=False):
|
||||
if decrypt:
|
||||
self.decrypt()
|
||||
return {'#'+k : v for k,v in self.locators.items() }
|
||||
return {'#' + k: v for k, v in self.locators.items()}
|
||||
|
|
|
@ -22,10 +22,11 @@ from Cookie import SimpleCookie
|
|||
|
||||
from mandayejs.applications import get_app_settings
|
||||
|
||||
|
||||
def exec_phantom(data, script='do_login.js'):
|
||||
phantom = subprocess.Popen([settings.PHANTOM_JS_BINARY,
|
||||
'--ignore-ssl-errors=yes',
|
||||
'--ssl-protocol=any',
|
||||
phantom = subprocess.Popen([
|
||||
settings.PHANTOM_JS_BINARY,
|
||||
'--ignore-ssl-errors=yes', '--ssl-protocol=any',
|
||||
os.path.join(settings.BASE_DIR, 'mandayejs', script)],
|
||||
close_fds=True,
|
||||
stdin=subprocess.PIPE,
|
||||
|
@ -39,6 +40,7 @@ def exec_phantom(data, script='do_login.js'):
|
|||
phantom.terminate()
|
||||
return result
|
||||
|
||||
|
||||
def cookie_builder(headers):
|
||||
"""Build Cookies from list of headers
|
||||
"""
|
||||
|
@ -48,6 +50,7 @@ def cookie_builder(headers):
|
|||
|
||||
return cookie
|
||||
|
||||
|
||||
def get_logout_info(request):
|
||||
"""Returns phantomjs logout prerequis
|
||||
"""
|
||||
|
@ -65,20 +68,23 @@ def get_logout_info(request):
|
|||
'value': value.value,
|
||||
'domain': domain,
|
||||
'path': '/'
|
||||
} for key, value in cookies.items() ]
|
||||
} for key, value in cookies.items()]
|
||||
|
||||
return data
|
||||
|
||||
|
||||
def get_password_field():
|
||||
"""Return name of the password field
|
||||
"""
|
||||
app_settings = get_app_settings()
|
||||
try:
|
||||
field_name = [ field.get('name') for field in app_settings.SITE_LOCATORS if field.get('kind') == 'password' ]
|
||||
field_name = [field.get('name') for field in app_settings.SITE_LOCATORS
|
||||
if field.get('kind') == 'password']
|
||||
return field_name[0]
|
||||
except (IndexError,):
|
||||
return None
|
||||
|
||||
|
||||
def get_login_info(request, credentials):
|
||||
"""Returns phantomjs login prerequis
|
||||
"""
|
||||
|
@ -87,11 +93,12 @@ def get_login_info(request, credentials):
|
|||
return {
|
||||
'address': request.build_absolute_uri(app_settings.SITE_LOGIN_PATH),
|
||||
'cookies': [],
|
||||
'locators': [ credentials.to_login_info() ],
|
||||
'locators': [credentials.to_login_info()],
|
||||
'auth_checker': app_settings.SITE_AUTH_CHECKER,
|
||||
'form_submit_element': app_settings.SITE_FORM_SUBMIT_ELEMENT
|
||||
}
|
||||
|
||||
|
||||
def get_idp():
|
||||
"""Return idp
|
||||
"""
|
||||
|
|
|
@ -18,37 +18,31 @@ from __future__ import absolute_import
|
|||
|
||||
import logging
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import views as auth_views
|
||||
from django.contrib.auth import logout as auth_logout
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib import messages
|
||||
from django.forms import PasswordInput
|
||||
from django.forms import models as model_forms
|
||||
from django.http import HttpResponseRedirect, HttpResponse
|
||||
from django.shortcuts import get_object_or_404, render, resolve_url
|
||||
from django.shortcuts import render, resolve_url
|
||||
from django.template import RequestContext
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.db import IntegrityError
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.template import RequestContext, Template
|
||||
from django.template import Template
|
||||
|
||||
from .models import UserCredentials
|
||||
from mandayejs.mandaye.forms import FormFactory
|
||||
from mandayejs.mandaye.utils import exec_phantom, cookie_builder,\
|
||||
get_login_info, get_logout_info
|
||||
get_login_info, get_logout_info
|
||||
from mandayejs.applications import get_app_settings
|
||||
|
||||
from mellon.views import logout as mellon_logout
|
||||
|
||||
import requests
|
||||
|
||||
app_settings = get_app_settings()
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def logout(request, *args, **kwargs):
|
||||
logger.debug("running slo")
|
||||
data = get_logout_info(request)
|
||||
|
@ -72,12 +66,9 @@ class Panel(TemplateView):
|
|||
context = super(Panel, self).get_context_data(**kwargs)
|
||||
scripts = getattr(app_settings, 'SITE_APP_SCRIPTS', None)
|
||||
context['site_scripts'] = scripts
|
||||
context['force_redirect_url'] = getattr(app_settings,
|
||||
'SITE_FORCE_REDIRECT_URL', '')
|
||||
context['force_redirect_locator'] = getattr(app_settings,
|
||||
'SITE_FORCE_REDIRECT_LOCATOR', '')
|
||||
context['logout_locator'] = getattr(app_settings,
|
||||
'SITE_LOGOUT_LOCATOR','')
|
||||
context['force_redirect_url'] = getattr(app_settings, 'SITE_FORCE_REDIRECT_URL', '')
|
||||
context['force_redirect_locator'] = getattr(app_settings, 'SITE_FORCE_REDIRECT_LOCATOR', '')
|
||||
context['logout_locator'] = getattr(app_settings, 'SITE_LOGOUT_LOCATOR', '')
|
||||
context['is_linked'] = self.is_account_linked()
|
||||
return context
|
||||
|
||||
|
@ -93,19 +84,20 @@ class Panel(TemplateView):
|
|||
|
||||
panel = Panel.as_view()
|
||||
|
||||
|
||||
@login_required
|
||||
def post_login(request, *args, **kwargs):
|
||||
try:
|
||||
user = User.objects.get(username=request.user.username)
|
||||
logger.debug(user)
|
||||
credentials = UserCredentials.objects.get(
|
||||
user=user)
|
||||
credentials = UserCredentials.objects.get(user=user)
|
||||
logger.debug(credentials)
|
||||
except (UserCredentials.DoesNotExist,):
|
||||
return HttpResponseRedirect(resolve_url('associate'))
|
||||
|
||||
return render(request, 'mandaye/post-login.html', {})
|
||||
|
||||
|
||||
@login_required
|
||||
@csrf_exempt
|
||||
def associate(request, *args, **kwargs):
|
||||
|
@ -119,7 +111,7 @@ def associate(request, *args, **kwargs):
|
|||
credentials.save()
|
||||
|
||||
return HttpResponseRedirect(resolve_url('post-login'))
|
||||
else :
|
||||
else:
|
||||
form = FormFactory()
|
||||
|
||||
response = render(request, 'mandaye/associate.html', {
|
||||
|
@ -131,8 +123,7 @@ def associate(request, *args, **kwargs):
|
|||
@login_required
|
||||
def dissociate(request, *args, **kwargs):
|
||||
try:
|
||||
c_user = UserCredentials.objects.get(
|
||||
user__username=request.user.username)
|
||||
c_user = UserCredentials.objects.get(user__username=request.user.username)
|
||||
c_user.delete()
|
||||
logger.debug("{} dissacioted".format(c_user.user.username))
|
||||
return HttpResponseRedirect(
|
||||
|
@ -142,6 +133,7 @@ def dissociate(request, *args, **kwargs):
|
|||
except (UserCredentials.DoesNotExist,):
|
||||
return HttpResponseRedirect(resolve_url('associate'))
|
||||
|
||||
|
||||
@login_required
|
||||
def post_login_do(request, *args, **kwargs):
|
||||
user = User.objects.get(username=request.user.username)
|
||||
|
@ -153,7 +145,7 @@ def post_login_do(request, *args, **kwargs):
|
|||
login_info = get_login_info(request, credentials)
|
||||
|
||||
logger.debug(login_info)
|
||||
login_info['locators'] = [ credentials.to_login_info(decrypt=True)]
|
||||
login_info['locators'] = [credentials.to_login_info(decrypt=True)]
|
||||
result = exec_phantom(login_info)
|
||||
logger.debug(result)
|
||||
|
||||
|
@ -172,7 +164,7 @@ def post_login_do(request, *args, **kwargs):
|
|||
window.top.location = "{{url}}";</script>')
|
||||
context = RequestContext(request, {'url': url})
|
||||
response = HttpResponse(template.render(context))
|
||||
if result.get('headers',None):
|
||||
if result.get('headers', None):
|
||||
response.cookies = cookie_builder(result.get('headers'))
|
||||
|
||||
return response
|
||||
|
|
|
@ -23,14 +23,13 @@ from requests.cookies import RequestsCookieJar
|
|||
|
||||
from django.contrib.auth.models import User
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
|
||||
from rest_framework import status
|
||||
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, cookie_builder, get_login_info
|
||||
from mandayejs.mandaye.utils import exec_phantom, get_login_info
|
||||
from mandayejs.applications import get_app_settings
|
||||
|
||||
|
||||
|
@ -41,7 +40,7 @@ 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']
|
||||
|
@ -50,7 +49,7 @@ class ArchimedAccountDetails(APIView):
|
|||
|
||||
login_info = get_login_info(request, credentials)
|
||||
logger.debug(login_info)
|
||||
login_info['locators'] = [ credentials.to_login_info(decrypt=True)]
|
||||
login_info['locators'] = [credentials.to_login_info(decrypt=True)]
|
||||
result = exec_phantom(login_info)
|
||||
|
||||
if result.get('result') != 'ok':
|
||||
|
@ -74,11 +73,10 @@ class ArchimedAccountDetails(APIView):
|
|||
}
|
||||
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)
|
||||
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()
|
||||
|
|
Reference in New Issue