default_controller.py 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. # coding=utf-8
  2. from pyramid.request import Request
  3. from tracim import TracimRequest
  4. from tracim.models import Group
  5. from tracim.models.data import UserRoleInWorkspace
  6. from tracim.views.controllers import Controller
  7. from pyramid.config import Configurator
  8. from pyramid.response import Response
  9. from pyramid.exceptions import NotFound
  10. from pyramid.httpexceptions import HTTPUnauthorized
  11. from pyramid.httpexceptions import HTTPForbidden
  12. from pyramid.security import forget, authenticated_userid
  13. from tracim.lib.utils.authorization import require_workspace_role, \
  14. require_profile
  15. class DefaultController(Controller):
  16. def notfound_view(self, request):
  17. request.response.status = 404
  18. return {}
  19. def forbidden_view(self, request):
  20. if request.authenticated_userid is None:
  21. response = HTTPUnauthorized()
  22. response.headers.update(forget(request))
  23. # user is logged in but doesn't have permissions, reject wholesale
  24. else:
  25. response = HTTPForbidden()
  26. return response
  27. def home(self, request: TracimRequest):
  28. app_config = request.registry.settings['CFG']
  29. project = app_config.WEBSITE_TITLE
  30. return {'project': project}
  31. @require_profile(Group.TIM_USER)
  32. def user(self, request: TracimRequest):
  33. return self.home(request)
  34. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  35. @require_workspace_role(UserRoleInWorkspace.READER)
  36. def test_reader(self, request: TracimRequest):
  37. return self.home(request)
  38. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  39. @require_workspace_role(UserRoleInWorkspace.CONTRIBUTOR)
  40. def test_contributor(self, request):
  41. return self.home(request)
  42. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  43. @require_workspace_role(UserRoleInWorkspace.WORKSPACE_MANAGER)
  44. def test_workspace_manager(self, request):
  45. return self.home(request)
  46. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  47. @require_workspace_role(UserRoleInWorkspace.CONTENT_MANAGER)
  48. def test_content_manager(self, request):
  49. return self.home(request)
  50. def bind(self, configurator: Configurator):
  51. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop static files
  52. configurator.add_static_view('static', 'static', cache_max_age=3600)
  53. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Do not rely
  54. # on static file for 404 view
  55. configurator.add_view(
  56. self.notfound_view,
  57. renderer='tracim:templates/404.jinja2',
  58. context=NotFound,
  59. )
  60. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  61. configurator.add_route('home', '/')
  62. configurator.add_view(
  63. self.home,
  64. route_name='home',
  65. renderer='tracim:templates/mytemplate.jinja2',
  66. )
  67. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  68. configurator.add_route('user', '/test_user')
  69. configurator.add_view(
  70. self.user,
  71. route_name='user',
  72. renderer='tracim:templates/mytemplate.jinja2',
  73. )
  74. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  75. configurator.add_route('test_contributor', '/test_contributor')
  76. configurator.add_view(
  77. self.test_contributor,
  78. route_name='test_contributor',
  79. renderer='tracim:templates/mytemplate.jinja2',
  80. )
  81. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  82. configurator.add_route('test_reader', '/test_reader')
  83. configurator.add_view(
  84. self.test_contributor,
  85. route_name='test_reader',
  86. renderer='tracim:templates/mytemplate.jinja2',
  87. )
  88. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  89. configurator.add_route(
  90. 'test_workspace_manager',
  91. '/test_workspace_manager'
  92. )
  93. configurator.add_view(
  94. self.test_workspace_manager,
  95. route_name='test_workspace_manager',
  96. renderer='tracim:templates/mytemplate.jinja2',
  97. )
  98. # TODO - G.M - 10-04-2018 - [cleanup][tempExample] - Drop this method
  99. configurator.add_route(
  100. 'test_content_manager',
  101. '/test_content_manager'
  102. )
  103. configurator.add_view(
  104. self.test_content_manager,
  105. route_name='test_content_manager',
  106. renderer='tracim:templates/mytemplate.jinja2',
  107. )
  108. configurator.add_forbidden_view(self.forbidden_view)