default_controller.py 4.9KB

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