diff -r a6d994c60822 -r 550988fcf228 src/pyams_security/views/login.py --- a/src/pyams_security/views/login.py Thu Oct 08 09:28:33 2015 +0200 +++ b/src/pyams_security/views/login.py Thu Oct 08 09:29:17 2015 +0200 @@ -16,9 +16,13 @@ # import standard library # import interfaces +from pyams_form.interfaces.form import IFormHeaderViewletsManager, IFormPrefixViewletsManager, \ + IFormSuffixViewletsManager from pyams_security.interfaces import ILoginView, ISecurityManager, LOGIN_REFERER_KEY from pyams_skin.interfaces import IModalFullPage +from pyams_skin.interfaces.configuration import IBackOfficeConfiguration from pyams_skin.layer import IPyAMSLayer +from pyams_utils.interfaces.site import IConfigurationManager from z3c.form.interfaces import IDataExtractedEvent # import packages @@ -26,7 +30,11 @@ from pyams_form.schema import ResetButton, CloseButton from pyams_pagelet.pagelet import pagelet_config from pyams_security.credential import Credentials +from pyams_template.template import template_config from pyams_utils.registry import query_utility +from pyams_utils.text import text_to_html +from pyams_utils.traversing import get_parent +from pyams_viewlet.viewlet import viewlet_config, Viewlet from pyramid.events import subscriber from pyramid.httpexceptions import HTTPFound from pyramid.response import Response @@ -129,6 +137,50 @@ return status +@viewlet_config(name='header', context=Interface, layer=IPyAMSLayer, view=LoginForm, manager=IFormHeaderViewletsManager) +@template_config(template='templates/login-header.pt', layer=IPyAMSLayer) +class LoginFormHeaderViewlet(Viewlet): + """Login form header viewlet""" + + +@viewlet_config(name='form_prefix', context=Interface, layer=IPyAMSLayer, view=LoginForm, + manager=IFormPrefixViewletsManager) +class LoginFormPrefixViewlet(Viewlet): + """Login form prefix viewlet""" + + def __new__(cls, context, request, view, manager): + manager = get_parent(context, IConfigurationManager) + if manager is not None: + config = IBackOfficeConfiguration(manager) + if not config.login_header: + return None + return Viewlet.__new__(cls) + + def render(self): + manager = get_parent(self.context, IConfigurationManager) + config = IBackOfficeConfiguration(manager) + return text_to_html(config.login_header, renderer='rest') + + +@viewlet_config(name='form_suffix', context=Interface, layer=IPyAMSLayer, view=LoginForm, + manager=IFormSuffixViewletsManager) +class LoginFormSuffixViewlet(Viewlet): + """Login form suffix viewlet""" + + def __new__(cls, context, request, view, manager): + manager = get_parent(context, IConfigurationManager) + if manager is not None: + config = IBackOfficeConfiguration(manager) + if not config.login_footer: + return None + return Viewlet.__new__(cls) + + def render(self): + manager = get_parent(self.context, IConfigurationManager) + config = IBackOfficeConfiguration(manager) + return text_to_html(config.login_footer, renderer='rest') + + @forbidden_view_config(request_type=IPyAMSLayer, renderer='json', xhr=True) def ForbiddenAJAXView(request): """AJAX call forbidden view"""