summaryrefslogtreecommitdiff
path: root/service/pixelated/resources/__init__.py
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2017-07-25 11:40:11 -0400
committerKali Kaneko <kali@leap.se>2017-07-25 11:40:29 -0400
commit91e4481c450eb7eb928debc1cb7fa59bdb63dd7b (patch)
tree8fd7e6e77b6df669c33d96b7edad6db3cbe14dfe /service/pixelated/resources/__init__.py
parente4f755309d4cf5cfb6b0bcc62ed73d6070956ab5 (diff)
[pkg] packaging and path changes
- move all the pixelated python package under src/ - move the pixelated_www package under the leap namespace - allow to set globally the static folder - add hours and minutes to the timestamp in package version, to allow for several releases a day.
Diffstat (limited to 'service/pixelated/resources/__init__.py')
-rw-r--r--service/pixelated/resources/__init__.py148
1 files changed, 0 insertions, 148 deletions
diff --git a/service/pixelated/resources/__init__.py b/service/pixelated/resources/__init__.py
deleted file mode 100644
index 9dae4a61..00000000
--- a/service/pixelated/resources/__init__.py
+++ /dev/null
@@ -1,148 +0,0 @@
-#
-# Copyright (c) 2014 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 <http://www.gnu.org/licenses/>.
-
-import json
-import os
-
-from twisted.web.http import UNAUTHORIZED
-from twisted.web.resource import Resource
-from twisted.logger import Logger
-
-from pixelated.resources.session import IPixelatedSession
-
-from twisted.web.http import INTERNAL_SERVER_ERROR, SERVICE_UNAVAILABLE
-
-log = Logger()
-
-
-class SetEncoder(json.JSONEncoder):
- def default(self, obj):
- if isinstance(obj, set):
- return list(obj)
- return super(SetEncoder, self).default(obj)
-
-
-def respond_json(entity, request, status_code=200):
- json_response = json.dumps(entity, cls=SetEncoder)
- request.responseHeaders.setRawHeaders(b"content-type", [b"application/json"])
- request.code = status_code
- return json_response
-
-
-def respond_json_deferred(entity, request, status_code=200):
- json_response = json.dumps(entity, cls=SetEncoder)
- request.responseHeaders.setRawHeaders(b"content-type", [b"application/json"])
- request.code = status_code
- request.write(json_response)
- request.finish()
-
-
-def handle_error_deferred(e, request):
- log.error(e)
- request.setResponseCode(INTERNAL_SERVER_ERROR)
- request.write('Something went wrong!')
- request.finish()
-
-
-def get_protected_static_folder(static_folder=None):
- static = static_folder or _get_static_folder()
- return os.path.join(static, 'protected')
-
-
-def get_public_static_folder(static_folder=None):
- static = static_folder or _get_static_folder()
- return os.path.join(static, 'public')
-
-
-def _get_static_folder():
- static_folder = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "..", "..", "..", "web-ui", "dist"))
- if not os.path.exists(static_folder):
- static_folder = os.path.join('/', 'usr', 'share', 'pixelated-user-agent')
- return static_folder
-
-
-class BaseResource(Resource):
-
- def __init__(self, services_factory):
- Resource.__init__(self)
- self._services_factory = services_factory
-
- def _get_user_id_from_request(self, request):
- if self._services_factory.mode.is_single_user:
- return None # it doesn't matter
- session = self.get_session(request)
- if session.is_logged_in():
- return session.user_uuid
- raise ValueError('Not logged in')
-
- def is_logged_in(self, request):
- session = self.get_session(request)
- return session.is_logged_in() and self._services_factory.has_session(session.user_uuid)
-
- def get_session(self, request):
- return IPixelatedSession(request.getSession())
-
- def is_admin(self, request):
- services = self._services(request)
- return services._leap_session.user_auth.is_admin()
-
- def _services(self, request):
- user_id = self._get_user_id_from_request(request)
- return self._services_factory.services(user_id)
-
- def _service(self, request, attribute):
- return getattr(self._services(request), attribute)
-
- def keymanager(self, request):
- return self._service(request, 'keymanager')
-
- def mail_service(self, request):
- return self._service(request, 'mail_service')
-
- def search_engine(self, request):
- return self._service(request, 'search_engine')
-
- def draft_service(self, request):
- return self._service(request, 'draft_service')
-
- def feedback_service(self, request):
- return self._service(request, 'feedback_service')
-
- def soledad(self, request):
- return self._service(request, '_leap_session').soledad
-
-
-class UnAuthorizedResource(Resource):
-
- def __init__(self):
- Resource.__init__(self)
-
- def render_GET(self, request):
- request.setResponseCode(UNAUTHORIZED)
- return "Unauthorized!"
-
- def render_POST(self, request):
- request.setResponseCode(UNAUTHORIZED)
- return "Unauthorized!"
-
-
-class UnavailableResource(Resource):
- def __init__(self):
- Resource.__init__(self)
-
- def render(self, request):
- request.setResponseCode(SERVICE_UNAVAILABLE)
- return "Service Unavailable"