Hi all,

I'm using tg1.1 with sqlalchemy
I'm trying to manage all exceptions using @exception_handler
decorator. It works fine for ValueError, TypeError etc.
But for now I am unable to deal with Database Errors using this same
technique:

here's how the code looks like:

1) Definition of the handler,  in model.py, before the Root
controller:

def general_except_handler(self,tg_exceptions=None,**kw):
    log.error(u'*'+str(datetime.datetime.now())+u'* '+str
(request.path) + u" Exception: " +  unicode(str
(tg_exceptions),'latin'))
    flash(u"exception::Exception: " + unicode(str
(tg_exceptions),'latin'))
    redirect('/')
    return dict()

2) Definition, just below the handler, of the catching expression

catch_excep_expr="isinstance(tg_exceptions, (KeyError,TypeError))"


3) I then use it for the controllers with exception_handler decorator

    @expose(template="resyweb.templates.generic_form_display")
    @exception_handler(general_except_handler,catch_excep_expr)
    @identity.require(identity.in_group("admin"))
    def edit_reviewer(self,**kw):


It works fine but when I try to include something like SQLAlchemyError
(previously imported with

from sqlalchemy.exceptions import SQLAlchemyError ), I cannot start
the application:

...
 in Root
    @identity.require(identity.in_group("admin"))
  File "c:\python25\lib\site-packages\TurboGears-1.1-py2.5.egg
\turbogears\errorh
andling.py", line 133, in register
    dispatch_error_adaptor(handler or func))
  File "C:\Python25\lib\site-packages\decoratortools-1.7-py2.5.egg\peak
\util\dec
orators.py", line 601, in do_decorate
  File "build\bdist.win32\egg\peak\rules\core.py", line 197, in
callback
  File "build\bdist.win32\egg\peak\rules\core.py", line 190, in
register_for_cla
ss
  File "build\bdist.win32\egg\peak\rules\core.py", line 65, in
parse_rule
  File "build\bdist.win32\egg\peak\rules\core.py", line 153, in
__call__
  File "build\bdist.win32\egg\peak\rules\predicates.py", line 517, in
_parse_str
ing
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 424, in
parse_exp
r
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 419, in
build
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 51, in
com_binary

  File "build\bdist.win32\egg\peak\rules\predicates.py", line 189, in
And
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 419, in
build
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 217, in
atom
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 419, in
build
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 51, in
com_binary

  File "build\bdist.win32\egg\peak\rules\predicates.py", line 189, in
And
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 419, in
build
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 217, in
atom
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 419, in
build
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 178, in
power
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 284, in
com_call_
function
  File "build\bdist.win32\egg\peak\rules\predicates.py", line 199, in
CallFunc
  File "build\bdist.win32\egg\peak\rules\predicates.py", line 233, in
apply_meta

  File "build\bdist.win32\egg\peak\rules\predicates.py", line 213, in
parse
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 419, in
build
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 217, in
atom
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 419, in
build
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 356, in
testlist_
gexp
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 51, in
com_binary

  File "build\bdist.win32\egg\peak\rules\codegen.py", line 428, in
method
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 419, in
build
  File "build\bdist.win32\egg\peak\rules\ast_builder.py", line 10, in
<lambda>
  File "build\bdist.win32\egg\peak\rules\codegen.py", line 347, in
Name
NameError: SQLAlchemyError


Would anyone know how to find a solution for this problem, or maybe
another technique for catching application-wide database exceptions?

Thanks

Adrien

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to