]> git.llucax.com Git - z.facultad/75.52/sercom.git/commitdiff
Reporar mejor los errores en subcontrollers.validate.
authorLeandro Lucarella <llucax@gmail.com>
Tue, 27 Feb 2007 01:00:53 +0000 (01:00 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Tue, 27 Feb 2007 01:00:53 +0000 (01:00 +0000)
ADVERTENCIA: Este cambio requiere SQLObject 0.8.

sercom/subcontrollers/validate.py

index 345d92ba37f18ef22d3a795247f40919c564d2dc..e527e6ea51b2aa868ce9d368dfe21b608f30efee 100644 (file)
@@ -1,28 +1,44 @@
-# vim: set et sw=4 sts=4 encoding=utf-8 :
+# vim: set et sw=4 sts=4 encoding=utf-8 foldmethod=marker :
 
 __all__ = ('validate_get', 'validate_set', 'validate_new')
 
 from turbogears import redirect, flash
 from cherrypy import NotFound
+from sqlobject.dberrors import DuplicateEntryError
+from sqlobject import SQLObjectNotFound
 
 def validate_get(cls, name, id, url='../list'):
     try:
-        return cls.get(int(id))
-    except (ValueError, LookupError):
+        id = int(id)
+    except ValueError:
+        raise NotFound
+    try:
+        return cls.get(id)
+    except SQLObjectNotFound:
         raise NotFound
 
 def validate_set(cls, name, id, data, url='../edit'):
     r = validate_get(cls, name, id)
     try:
         r.set(**data)
-    except Exception, e:
-        flash(_(u'No se pudo modificar el %s (error: %s).') % (name, e))
+    except DuplicateEntryError, e:
+        flash(_(u'No se pudo modificar el %s porque no es único (error: %s).')
+            % (name, e))
+        raise redirect('%s/%s' % (url, id), **data)
+    except TypeError, e:
+        flash(_(u'No se pudo modificar el %s porque falta un dato o es '
+            u'inválido (error: %s).') % (name, e))
         raise redirect('%s/%s' % (url, id), **data)
 
 def validate_new(cls, name, data, url='new'):
     try:
         return cls(**data)
-    except Exception, e:
-        flash(_(u'No se pudo crear el nuevo %s (error: %s).') % (name, e))
+    except DuplicateEntryError, e:
+        flash(_(u'No se pudo crear el %s porque no es único (error: %s).')
+            % (name, e))
+        raise redirect(url, **data)
+    except TypeError, e:
+        flash(_(u'No se pudo crear el %s porque falta un dato o es '
+            u'inválido (error: %s).') % (name, e))
         raise redirect(url, **data)