fix pep8 errors and remove unused imports (#13294)

This commit is contained in:
Josue Kouka 2016-09-24 01:02:53 +02:00
parent 28577537ab
commit bd5e3b3bdc
7 changed files with 71 additions and 74 deletions

View File

@ -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 = [
{

View File

@ -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

View File

@ -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']
)

View File

@ -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()}

View File

@ -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
"""

View File

@ -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

View File

@ -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()