diff options
author | NavaL <ayoyo@thoughtworks.com> | 2016-02-11 09:43:40 +0100 |
---|---|---|
committer | NavaL <ayoyo@thoughtworks.com> | 2016-02-11 09:47:27 +0100 |
commit | a1395e944e94964d4da69cd744330a099f0c6dd4 (patch) | |
tree | eb673e17bbd0f6aa0922777273c523da1f1804ce /service/pixelated/resources | |
parent | d8842e7e7ad415045bf230bc52efa90d3e717099 (diff) |
adds argument to supply custom disclaimer/banner on login screen
Issue #598
Diffstat (limited to 'service/pixelated/resources')
-rw-r--r-- | service/pixelated/resources/login_resource.py | 30 | ||||
-rw-r--r-- | service/pixelated/resources/root_resource.py | 4 |
2 files changed, 26 insertions, 8 deletions
diff --git a/service/pixelated/resources/login_resource.py b/service/pixelated/resources/login_resource.py index 1e1beb48..6f25fbcb 100644 --- a/service/pixelated/resources/login_resource.py +++ b/service/pixelated/resources/login_resource.py @@ -49,30 +49,48 @@ def _get_static_folder(): return static_folder +class DisclaimerElement(Element): + loader = XMLFile(FilePath(os.path.join(_get_startup_folder(), '_login_disclaimer_banner.html'))) + + def __init__(self, banner): + super(DisclaimerElement, self).__init__() + self._set_loader(banner) + + def _set_loader(self, banner): + if banner: + current_path = os.path.dirname(os.path.abspath(__file__)) + banner_file_path = os.path.join(current_path, "..", "..", "..", banner) + self.loader = XMLFile(FilePath(banner_file_path)) + + class LoginWebSite(Element): loader = XMLFile(FilePath(os.path.join(_get_startup_folder(), 'login.html'))) - def __init__(self, error_msg=None): + def __init__(self, error_msg=None, disclaimer_banner_file=None): super(LoginWebSite, self).__init__() self._error_msg = error_msg + self.disclaimer_banner_file = disclaimer_banner_file @renderer def error_msg(self, request, tag): if self._error_msg is not None: return tag(self._error_msg) - else: - return tag('') + return tag('') + + @renderer + def disclaimer(self, request, tag): + return DisclaimerElement(self.disclaimer_banner_file).render(request) class LoginResource(BaseResource): BASE_URL = 'login' - def __init__(self, services_factory, portal=None): + def __init__(self, services_factory, portal=None, disclaimer_banner=None): BaseResource.__init__(self, services_factory) self._static_folder = _get_static_folder() self._startup_folder = _get_startup_folder() - self._html_template = open(os.path.join(self._startup_folder, 'login.html')).read() self._portal = portal + self._disclaimer_banner = disclaimer_banner self.putChild('startup-assets', File(self._startup_folder)) def set_portal(self, portal): @@ -92,7 +110,7 @@ class LoginResource(BaseResource): return self._render_template(request) def _render_template(self, request, error_msg=None): - site = LoginWebSite(error_msg=error_msg) + site = LoginWebSite(error_msg=error_msg, disclaimer_banner_file=self._disclaimer_banner) return renderElement(request, site) def render_POST(self, request): diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py index 61df0f39..6e619951 100644 --- a/service/pixelated/resources/root_resource.py +++ b/service/pixelated/resources/root_resource.py @@ -56,7 +56,7 @@ class RootResource(BaseResource): return self return Resource.getChild(self, path, request) - def initialize(self, portal=None): + def initialize(self, portal=None, disclaimer_banner=None): self.putChild('assets', File(self._static_folder)) self.putChild('keys', KeysResource(self._services_factory)) self.putChild(AttachmentsResource.BASE_URL, AttachmentsResource(self._services_factory)) @@ -67,7 +67,7 @@ class RootResource(BaseResource): self.putChild('mail', MailResource(self._services_factory)) self.putChild('feedback', FeedbackResource(self._services_factory)) self.putChild('user-settings', UserSettingsResource(self._services_factory)) - self.putChild(LoginResource.BASE_URL, LoginResource(self._services_factory, portal)) + self.putChild(LoginResource.BASE_URL, LoginResource(self._services_factory, portal, disclaimer_banner=disclaimer_banner)) self.putChild(LogoutResource.BASE_URL, LogoutResource(self._services_factory)) self._mode = MODE_RUNNING |