paste.request.parse_formvars pour analyse des arguments cgi
[restcoda.git] / rest.wsgi
index 6538a65..09e55de 100644 (file)
--- a/rest.wsgi
+++ b/rest.wsgi
@@ -10,8 +10,8 @@ import rest_config
 # pour savoir quel objet interroger : Routes
 from routes import Mapper
 from routes.middleware import RoutesMiddleware
-# et analyse de query_string (TODO: etudier parse au lieu de cgi)
-from cgi import parse_qs
+# et analyse des paramètres (POST et query_string) pour filtrage
+from paste.request import parse_formvars
 
 # pour chercher les données sur MS-SQL
 from pymssql import connect
@@ -40,6 +40,8 @@ mapper.resource('comare','comare')
 mapper.resource('comarei','comare:(impl)',controller='comare')
 mapper.resource('comsra','comsre')
 mapper.resource('comsrai','comsre:(impl)',controller='comsre')
+mapper.resource('dem','dem')
+mapper.resource('com','com')
 
 class objetsql(object):
     """objet de base : dispose d'un accès à MS-SQL (lire les données) et d'un accès à jinja (rendu des données)"""
@@ -93,6 +95,14 @@ class document(objetsql):
         output = template.render(document)
        return self.outputformat, output
 
+class dem(document):
+    def __init__(self, environ):
+        super(dem, self).__init__(environ, code_document = 'DEM-%')
+
+class com(document):
+    def __init__(self, environ):
+        super(com, self).__init__(environ, code_document = 'COM-%')
+
 class demlog(document):
     def __init__(self, environ):
         super(demlog, self).__init__(environ, code_document = 'DEM-LOG-AUF')
@@ -129,11 +139,8 @@ class comare(document):
         super(comare, self).__init__(environ, code_document = 'COM-ARE-%s' % impl)
 
 def dispatcher(environ, start_response):
-    """sera lancée par mod_wsgi"""
-    if environ.has_key('QUERY_STRING'):
-        environ['org.auf.filters'] = parse_qs(environ['QUERY_STRING'])
-    else:
-        environ['org.auf.filters'] = {}
+    """dispatch vers la bonne methode du bon objet, et retour WSGI"""
+    parse_formvars(environ)
     results = environ['wsgiorg.routing_args'][1]
     try:
         target_class = globals()[results['controller']]
@@ -146,7 +153,9 @@ def dispatcher(environ, start_response):
         start_response("404 NOT FOUND", [('Content-type', 'text/plain')])
         return 'erreur lors du traitement\n%s: %s\n%s' % ( sys.exc_info()[0] , sys.exc_info()[1] , traceback.format_exc())
 
+# application qui sera lancée par mod_wsgi : on route et on dispatche
 application = RoutesMiddleware( dispatcher, mapper)
+# TODO : ajouter un middleware de cache (beaker)
 
 
 #