123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- # coding=utf-8
- from pyramid.request import Request
-
- from tracim import TracimRequest
- from tracim.models import Group
- from tracim.models.data import UserRoleInWorkspace
- from tracim.views.controllers import Controller
- from pyramid.config import Configurator
- from pyramid.response import Response
- from pyramid.exceptions import NotFound
- from pyramid.httpexceptions import HTTPUnauthorized
- from pyramid.httpexceptions import HTTPForbidden
- from pyramid.security import forget, authenticated_userid
-
- from tracim.lib.utils.authorization import require_workspace_role, \
- require_profile
-
-
- class DefaultController(Controller):
-
- def notfound_view(self, request):
- request.response.status = 404
- return {}
-
- def forbidden_view(self, request):
- if request.authenticated_userid is None:
- response = HTTPUnauthorized()
- response.headers.update(forget(request))
-
- # user is logged in but doesn't have permissions, reject wholesale
- else:
- response = HTTPForbidden()
- return response
-
- def home(self, request: TracimRequest):
- app_config = request.registry.settings['CFG']
- project = app_config.WEBSITE_TITLE
- return {'project': project}
-
- @require_profile(Group.TIM_USER)
- def user(self, request: TracimRequest):
- return self.home(request)
-
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- @require_workspace_role(UserRoleInWorkspace.READER)
- def test_reader(self, request: TracimRequest):
- return self.home(request)
-
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- @require_workspace_role(UserRoleInWorkspace.CONTRIBUTOR)
- def test_contributor(self, request):
- return self.home(request)
-
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- @require_workspace_role(UserRoleInWorkspace.WORKSPACE_MANAGER)
- def test_workspace_manager(self, request):
- return self.home(request)
-
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- @require_workspace_role(UserRoleInWorkspace.CONTENT_MANAGER)
- def test_content_manager(self, request):
- return self.home(request)
-
- def bind(self, configurator: Configurator):
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop static files
- configurator.add_static_view('static', 'static', cache_max_age=3600)
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Do not rely
- # on static file for 404 view
- configurator.add_view(
- self.notfound_view,
- renderer='tracim:templates/404.jinja2',
- context=NotFound,
- )
-
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- configurator.add_route('home', '/')
- configurator.add_view(
- self.home,
- route_name='home',
- renderer='tracim:templates/mytemplate.jinja2',
- )
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- configurator.add_route('user', '/test_user')
- configurator.add_view(
- self.user,
- route_name='user',
- renderer='tracim:templates/mytemplate.jinja2',
- )
-
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- configurator.add_route('test_contributor', '/test_contributor')
- configurator.add_view(
- self.test_contributor,
- route_name='test_contributor',
- renderer='tracim:templates/mytemplate.jinja2',
- )
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- configurator.add_route('test_reader', '/test_reader')
- configurator.add_view(
- self.test_contributor,
- route_name='test_reader',
- renderer='tracim:templates/mytemplate.jinja2',
- )
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- configurator.add_route(
- 'test_workspace_manager',
- '/test_workspace_manager'
- )
- configurator.add_view(
- self.test_workspace_manager,
- route_name='test_workspace_manager',
- renderer='tracim:templates/mytemplate.jinja2',
- )
-
- # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
- configurator.add_route(
- 'test_content_manager',
- '/test_content_manager'
- )
- configurator.add_view(
- self.test_content_manager,
- route_name='test_content_manager',
- renderer='tracim:templates/mytemplate.jinja2',
- )
- configurator.add_forbidden_view(self.forbidden_view)
|