gestion ObjetSQLInconnuError et debug SQL dispo dans le template
authorThomas NOEL <thomas@new-dev.(none)>
Fri, 4 Jul 2008 16:43:09 +0000 (12:43 -0400)
committerThomas NOEL <thomas.noel@auf.org>
Fri, 4 Jul 2008 16:43:09 +0000 (12:43 -0400)
document.py
rest.py
utilisateur.py

index c49e88d..cf231f3 100644 (file)
@@ -47,7 +47,8 @@ class Document(ObjetSQL):
        # connexion a la base de données
        cursor = self.cursor()
        # extraction des données
-       cursor.execute("select top %d * from auf_v_acces_demcom where (code like '%s') %s order by date_modif desc" % ( self.sqllimit, code, self.sqlwhere ) )
+       request = "select top %d * from auf_v_acces_demcom where (code like '%s') %s order by date_modif desc" % ( self.sqllimit, code, self.sqlwhere )
+       cursor.execute( request )
        items = []
        while 1:
            item = dict_fetchone( cursor )
@@ -58,13 +59,15 @@ class Document(ObjetSQL):
        index['code'] = code
        index['filtres'] = self.filters
        index['documents'] = items
+       index['requete_sql'] = request
        return index
 
     def _get_details(self,code,id):
         """renvoie la liste des détails pour un document"""
         details = []
        cursor = self.cursor()
-        cursor.execute("select * from auf_v_acces_dtls_demcom where (code like '%s') and (numero = %d)" % (code, id))
+       request = "select * from auf_v_acces_dtls_demcom where (code like '%s') and (numero = %d)" % (code, id)
+       cursor.execute( request )
         while 1:
             detail = dict_fetchone(cursor)
             if detail == None: break
@@ -74,12 +77,14 @@ class Document(ObjetSQL):
     def _get_document(self,code,id):
         """renvoie un document"""
        cursor = self.cursor()
-        cursor.execute("select top 1 * from auf_v_acces_demcom where (code like '%s') and (numero = %d) %s" % (code, id, self.sqlwhere))
+       request = "select top 1 * from auf_v_acces_demcom where (code like '%s') and (numero = %d) %s" % (code, id, self.sqlwhere)
+       cursor.execute( request )
         document = dict_fetchone(cursor)
        if document == None:
            raise ObjetSQLInconnuError('document')
        document['code_rest'] = coda2rest( document['code'] )
         document['details'] = self._get_details( code,id )
+       document['requete_sql'] = request
        return document
 
     def index(self):
diff --git a/rest.py b/rest.py
index 2fc3494..11049bf 100644 (file)
--- a/rest.py
+++ b/rest.py
@@ -53,15 +53,18 @@ def dispatcher(environ, start_response):
         target_class = globals()[results['controller']]
         method = getattr(target_class,results['action'])
     except:
-        # Si erreur pendant la recherche, on renvoie un 404
-        start_response("404 Not Found", [('Content-type', 'text/html')])
-       return '<html><body><h2>404 objet ou action invalide</h2><pre>%s: %s\n%s</pre></body></html>' % ( sys.exc_info()[0] , sys.exc_info()[1] , traceback.format_exc())
+        # Si erreur pendant la recherche, on renvoie un 501
+        start_response("501 Not Implemented", [('Content-type', 'text/html')])
+       return '<html><body><h2>501 objet ou action invalide</h2></body></html>' # <pre>%s: %s\n%s</pre></body></html>' % ( sys.exc_info()[0] , sys.exc_info()[1] , traceback.format_exc())
     try:
         # On lance la méthode et on renvoie le résultat
         type, output = method(target_class(environ))
        start_response("200 OK", [('Content-type', formats[type])])
         return output.encode('utf-8') 
     # gestion des problèmes possibles pendant l'exécution
+    except ObjetSQLInconnuError, type:
+        start_response("404 Not Found", [('Content-type', 'text/html')])
+       return '<html><body><h2>404 %s inexistant</h2></body></html>' % type
     except TemplateNotFound, template:
         start_response("415 Unsupported Media Type", [('Content-type', 'text/html')])
        return '<html><body><h2>415 format non supporté (%s inexistant)</h2></body></html>' % template
index 8ad9f50..4f49585 100644 (file)
@@ -38,7 +38,8 @@ class utilisateur(ObjetSQL):
        cursor = self.cursor()
        if self.sqlwhere != '': self.sqlwhere = ' where ' + self.sqlwhere
        # extraction des données
-       cursor.execute("select top %d * from auf_v_acces_users %s order by date_connexion desc" % ( self.sqllimit, self.sqlwhere ) )
+       request = "select top %d * from auf_v_acces_users %s order by date_connexion desc" % ( self.sqllimit, self.sqlwhere )
+       cursor.execute( request )
        items = []
        while 1:
            item = dict_fetchone( cursor )
@@ -47,16 +48,19 @@ class utilisateur(ObjetSQL):
        index = {}
        index['filtres'] = self.filters
        index['utilisateurs'] = items
+       index['requete_sql'] = request
        return index
 
     def _get_utilisateur(self,code):
         """renvoie un utilisateur"""
        cursor = self.cursor()
        if self.sqlwhere != '': self.sqlwhere = ' and ' + self.sqlwhere
-        cursor.execute("select top 1 * from auf_v_acces_users where (code like '%s') %s" % (code, self.sqlwhere))
+       request = "select top 1 * from auf_v_acces_users where (code like '%s') %s" % (code, self.sqlwhere)
+       cursor.execute( request )
         utilisateur = dict_fetchone(cursor)
        if utilisateur == None:
            raise ObjetSQLInconnuError('utilisateur')
+       utilisateur['requete_sql'] = request
         return utilisateur
 
     def index(self):