From fa4a9859c57de6b7894ff4b84b75d242f2b796f5 Mon Sep 17 00:00:00 2001 From: tr4ck3ur Date: Fri, 13 Feb 2015 02:29:37 +0100 Subject: first drop --- jm2l/__init__.py | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 jm2l/__init__.py (limited to 'jm2l/__init__.py') diff --git a/jm2l/__init__.py b/jm2l/__init__.py new file mode 100644 index 0000000..1be4a2b --- /dev/null +++ b/jm2l/__init__.py @@ -0,0 +1,112 @@ +from pyramid.authentication import AuthTktAuthenticationPolicy +from pyramid.authorization import ACLAuthorizationPolicy +from pyramid.config import Configurator +from pyramid.renderers import JSON, JSONP +from pyramid.session import SignedCookieSessionFactory +from sqlalchemy import engine_from_config + +from .models import DBSession, get_user +from .security import EntryFactory, groupfinder +import locale + +def main(global_config, **settings): + """ This function returns a Pyramid WSGI application. + """ + locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8") + engine = engine_from_config(settings, 'sqlalchemy.') + DBSession.configure(bind=engine) + my_session_factory = SignedCookieSessionFactory('itsaseekreet') + authentication_policy = AuthTktAuthenticationPolicy('somesecret', + callback=groupfinder, hashalg='sha512', debug=True) + authorization_policy = ACLAuthorizationPolicy() + config = Configurator(settings=settings, + root_factory='.security.RootFactory', + authentication_policy=authentication_policy, + authorization_policy=authorization_policy + ) + config.add_renderer('json', JSON(indent=4)) + config.add_renderer('jsonp', JSONP(param_name='callback')) + config.set_session_factory(my_session_factory) + config.add_request_method(get_user, 'user', reify=True) + config.add_static_view('static', 'static', cache_max_age=3600) + config.add_static_view('img', 'static/img', cache_max_age=3600) + config.add_static_view('upload', 'upload', cache_max_age=3600) + + config.add_route('tester', '/tester') + + # ICal Routes + config.add_route('progr_iCal', '/{year:\d+}/JM2L.ics') + + # JSON Routes + config.add_route('users_json', '/json-users') + config.add_route('tiers_json', '/json-tiers') + config.add_route('progr_json', '/{year:\d+}/le-prog-json') + config.add_route('timeline_json', '/{year:\d+}/timeline-json') + + # Session setting Routes + config.add_route('year', '/year/{year:\d+}') + + # HTML Routes - Staff + config.add_route('list_task', '/Staff') + config.add_route('handle_task', '/Staff/tasks{sep:/*}{task_id:(\d+)?}') + config.add_route('action_task', '/Staff/{action:(\w+)}/{task_id:(\d+)}') + + # HTML Routes - Public + config.add_route('home', '/') + config.add_route('presse', '/{year:\d+}/dossier-de-presse') + config.add_route('edit_presse', '/{year:\d+}/dossier-de-presse/edit') + config.add_route('programme', '/{year:\d+}/le-programme') + config.add_route('plan', 'nous-rejoindre') + config.add_route('participer', 'participer-l-evenement') + config.add_route('captcha', '/captcha') + + ## Events + config.add_route('event', '/event/{year:\d+}/{event_id:([\w-]+)?}') + config.add_route('link_event', '/MesJM2L/{year:\d+}/{intervention:\w+}/link') + config.add_route('edit_event', '/MesJM2L/{year:\d+}/{intervention:\w+}{sep:/*}{event_id:([\w-]+)?}') + + ## Entities + config.add_route('entities', '/entities') #{sep:/*}{Nature:\w+?}') + config.add_route('add_entity', '/entity') + config.add_route('show_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)?}') + config.add_route('edit_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)}/edit') + + config.add_route('edit_entity_cat', '/categorie/entity') + + ## Users + config.add_route('show_user', '/user/{user_slug:([\w-]+)?}') + + # HTML Routes - Logged + #config.add_route('profil', 'MesJM2L') + config.add_route('jm2l', '/MesJM2L') + config.add_route('modal', '/{year:\d+}/modal/{modtype:\w+}/{id:(\d+)}') + + # Handle exchanges + config.add_route('exchange', '/{year:\d+}/exchange/{modtype:\w+}/{id:(\d+)}/{action:\w+}') + + # Handle authentication + config.add_route('register', '/register') + config.add_route('auth', '/sign/{action}') + config.add_route('bymail', '/sign/jm2l/{hash}') + + # Handle Multimedia and Uploads + config.add_route('media_uploadform', '/test2') + config.add_route('media_view', '/image/{media_table:\w+}/{uid:\d+}/{name:.+}') + config.add_route('media_upload', '/uploader/{media_table:\w+}/{uid:\d+}/proceed{sep:/*}{name:.*}') + + # To Trash routes + config.add_route('test', '/test') + config.add_route('test2', '/toast{sep:/*}{uid:(\d+)?}') + + #config.add_route('link_user_entity', '/entity/{uid:(\d+)}/{year:\d+}/user/{user_id:(\d+)}') + #config.add_route('link_role_entity', '/entity/{uid:(\d+)}/{year:\d+}/role/{role_id:(\d+)}') + + + config.add_route('IntAdd', '/IntAdd/{modtype:\w+}') + config.add_route('IntProp', '/IntProp/{modtype:\w+}') + + config.add_route('blog', '/blog/{id:\d+}/{slug}') + config.add_route('blog_action', '/blog/{action}', + factory='jm2l.security.EntryFactory') + config.scan() + return config.make_wsgi_app() -- cgit v1.2.3-54-g00ecf