This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
mandaye/mandaye/filters/vincennes.py

91 lines
3.1 KiB
Python

import mandaye
import re
from urlparse import parse_qs
from BeautifulSoup import BeautifulSoup
from mandaye.models import Site, ExtUser, LocalUser
from mandaye.server import get_response
from mandaye.response import serve_template
from mandaye.http import HTTPRequest
from mandaye.response import _500, _302, _401
def biblio_html_login_page(env, values, request, response):
""" msg: response message body
env: Mandaye environment
"""
response.msg = re.sub("</center></div>",
"<a href=\"/mandaye/connection\">Connection via mon compte citoyen</a></center></div>",
response.msg)
return response
def biblio_html(env, values, request, response):
""" Global html filter the Vincenne library
This fix the fucking absolute url of the biblio site
"""
response.msg = response.msg.replace(env["target"].hostname, env["HTTP_HOST"])
return response
def biblio_associate_login(env, values, request, response):
""" Use default login page to associate an account on the SSO
"""
pattern = re.compile('<div class="inner">.*</center></div>\s+</div></div>',
re.MULTILINE | re.DOTALL)
form = serve_template(values.get('template'), **values)
form = form.encode('utf-8')
response.msg = re.sub(pattern, form, response.msg)
return response
class EspaceFamille:
def resp_login_page(self, env, values, request, response):
""" Modify the login_page form
"""
if response.msg:
soup = BeautifulSoup(response.msg)
div = soup.find('div', {'class': 'bloc-gris'})
div.append('<a href=\"/mandaye/connection\">Connection via mon compte citoyen</a>')
response.msg = str(soup)
return response
def resp_associate(self, env, values, request, response):
"""docstring for resp_associate_login"""
if response.msg:
soup = BeautifulSoup(response.msg)
div = soup.find('div', {'class': 'bloc-model-1'})
if div:
form = serve_template(values.get('template'), **values)
form.encode('utf-8')
div.replaceWith(form)
response.msg = str(soup)
return response
class Duonet:
def resp_login_page(self, env, values, request, response):
"""docstring for resp_login_page"""
if response.msg:
soup = BeautifulSoup(response.msg)
table = soup.find('table', {'id': 'tbConnect'})
input = table.find('input', type='submit')
input.append('<a href=\"%s\">Connection via mon compte citoyen</a>' % \
values['connection_url'])
response.msg = str(soup)
return response
def resp_associate(self, env, values, request, response):
"""docstring for resp_associate_login"""
if response.msg:
soup = BeautifulSoup(response.msg)
form = soup.find('form', {'name': 'form1'})
if form:
new_form = serve_template(values.get('template'), **values)
new_form.encode('utf-8')
form.replaceWith(new_form)
response.msg = str(soup)
return response