From 3f97f5c444ea4caa01111f3902871975430d9d97 Mon Sep 17 00:00:00 2001 From: Roald de Vries Date: Tue, 29 Nov 2016 17:34:41 +0100 Subject: add inbox resource --- service/pixelated/resources/inbox_resource.py | 64 +++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 service/pixelated/resources/inbox_resource.py (limited to 'service/pixelated/resources/inbox_resource.py') diff --git a/service/pixelated/resources/inbox_resource.py b/service/pixelated/resources/inbox_resource.py new file mode 100644 index 00000000..47a3c072 --- /dev/null +++ b/service/pixelated/resources/inbox_resource.py @@ -0,0 +1,64 @@ +# +# Copyright (c) 2016 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see . +import hashlib +import os +from string import Template + +import pixelated +from pixelated.resources import BaseResource + +from twisted.logger import Logger + +logger = Logger() + + +MODE_STARTUP = 1 +MODE_RUNNING = 2 + + +class InboxResource(BaseResource): + isLeaf = True + + def __init__(self, services_factory): + BaseResource.__init__(self, services_factory) + self._templates_folder = self._get_templates_folder() + self._html_template = open(os.path.join(self._templates_folder, 'index.html')).read() + with open(os.path.join(self._templates_folder, 'Interstitial.html')) as f: + self.interstitial = f.read() + self._mode = MODE_STARTUP + + def initialize(self): + self._mode = MODE_RUNNING + logger.debug('Inbox in RUNNING mode. %s' % self) + + def _get_templates_folder(self): + path = os.path.dirname(os.path.abspath(pixelated.__file__)) + return os.path.join(path, 'assets') + + def _is_starting(self): + return self._mode == MODE_STARTUP + + def render_GET(self, request): + logger.debug('Inbox rendering GET. %s' % self) + self._add_csrf_cookie(request) + if self._is_starting(): + logger.debug('Inbox rendering interstitial. %s' % self) + return self.interstitial + else: + logger.debug('Inbox rendering from template. %s' % self) + account_email = self.mail_service(request).account_email + response = Template(self._html_template).safe_substitute(account_email=account_email) + return str(response) -- cgit v1.2.3 From 770b439c8495c3a0b16550c2f04740f31646d66b Mon Sep 17 00:00:00 2001 From: Roald de Vries Date: Thu, 1 Dec 2016 10:36:29 +0100 Subject: WIP: add csrf token to every request --- service/pixelated/resources/inbox_resource.py | 1 - 1 file changed, 1 deletion(-) (limited to 'service/pixelated/resources/inbox_resource.py') diff --git a/service/pixelated/resources/inbox_resource.py b/service/pixelated/resources/inbox_resource.py index 47a3c072..f759dca9 100644 --- a/service/pixelated/resources/inbox_resource.py +++ b/service/pixelated/resources/inbox_resource.py @@ -53,7 +53,6 @@ class InboxResource(BaseResource): def render_GET(self, request): logger.debug('Inbox rendering GET. %s' % self) - self._add_csrf_cookie(request) if self._is_starting(): logger.debug('Inbox rendering interstitial. %s' % self) return self.interstitial -- cgit v1.2.3 From 165ab49e41faa7ba7d524c58b3b0d383a4c9a2d9 Mon Sep 17 00:00:00 2001 From: Roald de Vries Date: Thu, 1 Dec 2016 17:35:33 +0100 Subject: use the right inbox template --- service/pixelated/resources/inbox_resource.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'service/pixelated/resources/inbox_resource.py') diff --git a/service/pixelated/resources/inbox_resource.py b/service/pixelated/resources/inbox_resource.py index f759dca9..426de5cc 100644 --- a/service/pixelated/resources/inbox_resource.py +++ b/service/pixelated/resources/inbox_resource.py @@ -34,15 +34,19 @@ class InboxResource(BaseResource): def __init__(self, services_factory): BaseResource.__init__(self, services_factory) + self._not_quite_the_templates_folder = self._get_not_quite_the_templates_folder() self._templates_folder = self._get_templates_folder() - self._html_template = open(os.path.join(self._templates_folder, 'index.html')).read() + self._html_template = open(os.path.join(self._not_quite_the_templates_folder, 'index.html')).read() with open(os.path.join(self._templates_folder, 'Interstitial.html')) as f: self.interstitial = f.read() self._mode = MODE_STARTUP def initialize(self): self._mode = MODE_RUNNING - logger.debug('Inbox in RUNNING mode. %s' % self) + + def _get_not_quite_the_templates_folder(self): + path = os.path.dirname(os.path.abspath(pixelated.__file__)) + return os.path.join(path, '..', '..', 'web-ui', 'app') def _get_templates_folder(self): path = os.path.dirname(os.path.abspath(pixelated.__file__)) @@ -52,12 +56,9 @@ class InboxResource(BaseResource): return self._mode == MODE_STARTUP def render_GET(self, request): - logger.debug('Inbox rendering GET. %s' % self) if self._is_starting(): - logger.debug('Inbox rendering interstitial. %s' % self) return self.interstitial else: - logger.debug('Inbox rendering from template. %s' % self) account_email = self.mail_service(request).account_email response = Template(self._html_template).safe_substitute(account_email=account_email) return str(response) -- cgit v1.2.3 From b14833fbb56bcd5bff0750c16fd9214009b955be Mon Sep 17 00:00:00 2001 From: Zara Gebru Date: Fri, 2 Dec 2016 15:25:23 +0100 Subject: [refactor] move app dir into public dir --- service/pixelated/resources/inbox_resource.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'service/pixelated/resources/inbox_resource.py') diff --git a/service/pixelated/resources/inbox_resource.py b/service/pixelated/resources/inbox_resource.py index 426de5cc..d9ba86a5 100644 --- a/service/pixelated/resources/inbox_resource.py +++ b/service/pixelated/resources/inbox_resource.py @@ -46,7 +46,7 @@ class InboxResource(BaseResource): def _get_not_quite_the_templates_folder(self): path = os.path.dirname(os.path.abspath(pixelated.__file__)) - return os.path.join(path, '..', '..', 'web-ui', 'app') + return os.path.join(path, '..', '..', 'web-ui', 'public') def _get_templates_folder(self): path = os.path.dirname(os.path.abspath(pixelated.__file__)) -- cgit v1.2.3 From 391cc55537a97ec8b2b55662db9c63f86ab885ef Mon Sep 17 00:00:00 2001 From: Roald de Vries Date: Mon, 5 Dec 2016 10:32:12 +0100 Subject: get templates from pkg_resources --- service/pixelated/resources/inbox_resource.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'service/pixelated/resources/inbox_resource.py') diff --git a/service/pixelated/resources/inbox_resource.py b/service/pixelated/resources/inbox_resource.py index d9ba86a5..13d1f298 100644 --- a/service/pixelated/resources/inbox_resource.py +++ b/service/pixelated/resources/inbox_resource.py @@ -15,6 +15,7 @@ # along with Pixelated. If not, see . import hashlib import os +import pkg_resources from string import Template import pixelated @@ -35,9 +36,8 @@ class InboxResource(BaseResource): def __init__(self, services_factory): BaseResource.__init__(self, services_factory) self._not_quite_the_templates_folder = self._get_not_quite_the_templates_folder() - self._templates_folder = self._get_templates_folder() self._html_template = open(os.path.join(self._not_quite_the_templates_folder, 'index.html')).read() - with open(os.path.join(self._templates_folder, 'Interstitial.html')) as f: + with open(pkg_resources.resource_filename('templates', 'Interstitial.html')) as f: self.interstitial = f.read() self._mode = MODE_STARTUP @@ -48,10 +48,6 @@ class InboxResource(BaseResource): path = os.path.dirname(os.path.abspath(pixelated.__file__)) return os.path.join(path, '..', '..', 'web-ui', 'public') - def _get_templates_folder(self): - path = os.path.dirname(os.path.abspath(pixelated.__file__)) - return os.path.join(path, 'assets') - def _is_starting(self): return self._mode == MODE_STARTUP -- cgit v1.2.3 From 3303510d3dabc4c1efdf39c52db026229d909490 Mon Sep 17 00:00:00 2001 From: Roald de Vries Date: Mon, 5 Dec 2016 17:13:13 +0100 Subject: no difference between dev and prod static files --- service/pixelated/resources/inbox_resource.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'service/pixelated/resources/inbox_resource.py') diff --git a/service/pixelated/resources/inbox_resource.py b/service/pixelated/resources/inbox_resource.py index 13d1f298..d0096efe 100644 --- a/service/pixelated/resources/inbox_resource.py +++ b/service/pixelated/resources/inbox_resource.py @@ -35,8 +35,8 @@ class InboxResource(BaseResource): def __init__(self, services_factory): BaseResource.__init__(self, services_factory) - self._not_quite_the_templates_folder = self._get_not_quite_the_templates_folder() - self._html_template = open(os.path.join(self._not_quite_the_templates_folder, 'index.html')).read() + with open(pkg_resources.resource_filename('templates', 'index.html')) as f: + self._html_template = f.read() with open(pkg_resources.resource_filename('templates', 'Interstitial.html')) as f: self.interstitial = f.read() self._mode = MODE_STARTUP @@ -44,10 +44,6 @@ class InboxResource(BaseResource): def initialize(self): self._mode = MODE_RUNNING - def _get_not_quite_the_templates_folder(self): - path = os.path.dirname(os.path.abspath(pixelated.__file__)) - return os.path.join(path, '..', '..', 'web-ui', 'public') - def _is_starting(self): return self._mode == MODE_STARTUP -- cgit v1.2.3