Le repo des sources pour le site web des JM2L
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 

113 Zeilen
4.8 KiB

  1. from pyramid.authentication import AuthTktAuthenticationPolicy
  2. from pyramid.authorization import ACLAuthorizationPolicy
  3. from pyramid.config import Configurator
  4. from pyramid.renderers import JSON, JSONP
  5. from pyramid.session import SignedCookieSessionFactory
  6. from sqlalchemy import engine_from_config
  7. from .models import DBSession, get_user
  8. from .security import EntryFactory, groupfinder
  9. import locale
  10. def main(global_config, **settings):
  11. """ This function returns a Pyramid WSGI application.
  12. """
  13. locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
  14. engine = engine_from_config(settings, 'sqlalchemy.')
  15. DBSession.configure(bind=engine)
  16. my_session_factory = SignedCookieSessionFactory('itsaseekreet')
  17. authentication_policy = AuthTktAuthenticationPolicy('somesecret',
  18. callback=groupfinder, hashalg='sha512', debug=True)
  19. authorization_policy = ACLAuthorizationPolicy()
  20. config = Configurator(settings=settings,
  21. root_factory='.security.RootFactory',
  22. authentication_policy=authentication_policy,
  23. authorization_policy=authorization_policy
  24. )
  25. config.add_renderer('json', JSON(indent=4))
  26. config.add_renderer('jsonp', JSONP(param_name='callback'))
  27. config.set_session_factory(my_session_factory)
  28. config.add_request_method(get_user, 'user', reify=True)
  29. config.add_static_view('static', 'static', cache_max_age=3600)
  30. config.add_static_view('img', 'static/img', cache_max_age=3600)
  31. config.add_static_view('upload', 'upload', cache_max_age=3600)
  32. config.add_route('tester', '/tester')
  33. # ICal Routes
  34. config.add_route('progr_iCal', '/{year:\d+}/JM2L.ics')
  35. # JSON Routes
  36. config.add_route('users_json', '/json-users')
  37. config.add_route('tiers_json', '/json-tiers')
  38. config.add_route('progr_json', '/{year:\d+}/le-prog-json')
  39. config.add_route('timeline_json', '/{year:\d+}/timeline-json')
  40. # Session setting Routes
  41. config.add_route('year', '/year/{year:\d+}')
  42. # HTML Routes - Staff
  43. config.add_route('list_task', '/Staff')
  44. config.add_route('handle_task', '/Staff/tasks{sep:/*}{task_id:(\d+)?}')
  45. config.add_route('action_task', '/Staff/{action:(\w+)}/{task_id:(\d+)}')
  46. # HTML Routes - Public
  47. config.add_route('home', '/')
  48. config.add_route('presse', '/{year:\d+}/dossier-de-presse')
  49. config.add_route('edit_presse', '/{year:\d+}/dossier-de-presse/edit')
  50. config.add_route('programme', '/{year:\d+}/le-programme')
  51. config.add_route('plan', 'nous-rejoindre')
  52. config.add_route('participer', 'participer-l-evenement')
  53. config.add_route('captcha', '/captcha')
  54. ## Events
  55. config.add_route('event', '/event/{year:\d+}/{event_id:([\w-]+)?}')
  56. config.add_route('link_event', '/MesJM2L/{year:\d+}/{intervention:\w+}/link')
  57. config.add_route('edit_event', '/MesJM2L/{year:\d+}/{intervention:\w+}{sep:/*}{event_id:([\w-]+)?}')
  58. ## Entities
  59. config.add_route('entities', '/entities') #{sep:/*}{Nature:\w+?}')
  60. config.add_route('add_entity', '/entity')
  61. config.add_route('show_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)?}')
  62. config.add_route('edit_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)}/edit')
  63. config.add_route('edit_entity_cat', '/categorie/entity')
  64. ## Users
  65. config.add_route('show_user', '/user/{user_slug:([\w-]+)?}')
  66. # HTML Routes - Logged
  67. #config.add_route('profil', 'MesJM2L')
  68. config.add_route('jm2l', '/MesJM2L')
  69. config.add_route('modal', '/{year:\d+}/modal/{modtype:\w+}/{id:(\d+)}')
  70. # Handle exchanges
  71. config.add_route('exchange', '/{year:\d+}/exchange/{modtype:\w+}/{id:(\d+)}/{action:\w+}')
  72. # Handle authentication
  73. config.add_route('register', '/register')
  74. config.add_route('auth', '/sign/{action}')
  75. config.add_route('bymail', '/sign/jm2l/{hash}')
  76. # Handle Multimedia and Uploads
  77. config.add_route('media_uploadform', '/test2')
  78. config.add_route('media_view', '/image/{media_table:\w+}/{uid:\d+}/{name:.+}')
  79. config.add_route('media_upload', '/uploader/{media_table:\w+}/{uid:\d+}/proceed{sep:/*}{name:.*}')
  80. # To Trash routes
  81. config.add_route('test', '/test')
  82. config.add_route('test2', '/toast{sep:/*}{uid:(\d+)?}')
  83. #config.add_route('link_user_entity', '/entity/{uid:(\d+)}/{year:\d+}/user/{user_id:(\d+)}')
  84. #config.add_route('link_role_entity', '/entity/{uid:(\d+)}/{year:\d+}/role/{role_id:(\d+)}')
  85. config.add_route('IntAdd', '/IntAdd/{modtype:\w+}')
  86. config.add_route('IntProp', '/IntProp/{modtype:\w+}')
  87. config.add_route('blog', '/blog/{id:\d+}/{slug}')
  88. config.add_route('blog_action', '/blog/{action}',
  89. factory='jm2l.security.EntryFactory')
  90. config.scan()
  91. return config.make_wsgi_app()