default_controller.py 4.8KB

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