import pkg_resources from pyramid.response import FileResponse, Response from pyramid.view import view_config from webob.exc import HTTPForbidden, HTTPFound @view_config(route_name='home') @view_config(request_method='GET', route_name='login') def my_view(request): package, resource = 'soter:static/index.html'.split(':', 1) file = pkg_resources.resource_filename(package, resource) return FileResponse(file, request=request) @view_config(context=HTTPForbidden) def forbidden(request): if 'X-Requested-With' in request.headers and request.headers['X-Requested-With'] == 'XMLHttpRequest': response = Response("Forbidden") response.status_int = 401 return response else: return HTTPFound(location=request.route_url('login', _query={'came_from': request.path_qs})) @view_config(route_name='favicon') def favicon(request): package, resource = 'soter:static/favicon.ico'.split(':', 1) icon = pkg_resources.resource_filename(package, resource) return FileResponse(icon, request=request)