[Zope] How manage error with zsql

robert rottermann robert at redcor.ch
Sat Dec 6 11:15:57 EST 2008


hi,

I think you should  write in a python script:

try:
  result = context.insert_data.zsql
  msg = 'data inserted'
except ZeroDivisionError:
  msg = 'ZeroDivisionError occured'

return msg

and in your tal you write:

> <div>
>        tal:content="context/MyPythonscript">
>
> </div>
>

allways try to put logic in a python script. it is *far* easier than writing
complicated tal

robert

Miguel Beltran R. schrieb:
> I tried to insert data using an zsql, insert fine How manage error with
> zsql.
> Before
> <dtml-try>
>    <dtml-call insert_data>
>    Data inserted!!!
> <dtml-except>
>    Error type:<dtml-var error_type>
>    Error type:<dtml-var error_value>
> </dtml-try>
> 
> 
> 
> Now (All files are ZPT)
> 
> [index_html]
> ...
> <form action="proyecto_alta.html">
>     <input type="text" name="field1" id="field1" />
>     ...
>     <input type="text" name="field2" id="field2" />
> </form>
> 
> 
> [proyecto_alta.html]
> <div tal:on-error="structure here/error_insertar">
>        tal:condition="context/insert_data.zsql"
>        tal:content="string: Data inserted!!!">
> 
> </div>
> 
> 
> [error_insertar]
> error=_['error']
> if error.type==ZeroDivisionError:
>     return "<p>Can't divide by zero.</p>"
> else:
>     return """<p>An error ocurred.</p>
>               <p>Error type: %s</p>
>               <p>Error value: %s</p>""" % (error.type,
>                                            error.value)
> 
> 
> But say
> 
> Tipo 	Unauthorized
> Valor 	You are not allowed to access 'type' in this context
> TraceBack 	
> 
> Traceback (innermost last):
> 
>     * Module ZPublisher.Publish, line 119, in publish
>     * Module ZPublisher.mapply, line 88, in mapply
>     * Module ZPublisher.Publish, line 42, in call_object
>     * Module Shared.DC.Scripts.Bindings, line 313, in __call__
>     * Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
>     * Module Products.PageTemplates.ZopePageTemplate, line 330, in _exec
>     * Module Products.PageTemplates.ZopePageTemplate, line 427, in pt_render
>     * Module Products.PageTemplates.PageTemplate, line 96, in pt_render
>     * Module zope.pagetemplate.pagetemplate, line 115, in pt_render
>     * Module zope.tal.talinterpreter, line 271, in __call__
>     * Module zope.tal.talinterpreter, line 346, in interpret
>     * Module zope.tal.talinterpreter, line 981, in do_onError_tal
>     * Module zope.tal.talinterpreter, line 346, in interpret
>     * Module zope.tal.talinterpreter, line 745, in do_insertStructure_tal
>     * Module Products.PageTemplates.Expressions, line 199, in
>       evaluateStructure
>     * Module zope.tales.tales, line 696, in evaluate
>       *URL: /ceed/finanza/proyecto/proyecto_alta.html*
>       *Line 1, Column 0*
>       *Expression: <PathExpr standard:u'here/error_insertar'>*
>       *Names:*
> 
>       {'container': <Folder at /ceed/finanza/proyecto>,
>        'context': <Folder at /ceed/finanza/proyecto>,
>        'default': <object object at 0x0075A528>,
>        'here': <Folder at /ceed/finanza/proyecto>,
> 
>        'loop': {},
>        'nothing': None,
>        'options': {'args': ()},
>        'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x02382828>,
>        'request': <HTTPRequest, URL=http://sic/finanza/proyecto/proyecto_alta.html>,
> 
>        'root': <Application at >,
>        'template': <ZopePageTemplate at /ceed/finanza/proyecto/proyecto_alta.html>,
>        'traverse_subpath': [],
>        'user': <User 'admin'>}
> 
>     * Module zope.tales.expressions, line 217, in __call__
>     * Module Products.PageTemplates.Expressions, line 139, in _eval
>     * Module Products.PageTemplates.Expressions, line 91, in render
>     * Module Products.PageTemplates.ZRPythonExpr, line 79, in call_with_ns
>     * Module Shared.DC.Scripts.Bindings, line 327, in
>       __render_with_namespace__
>     * Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
>     * Module Products.PythonScripts.PythonScript, line 327, in _exec
>     * Module None, line 2, in error_insertar
>       *<PythonScript at /ceed/finanza/proyecto/error_insertar>*
>       *Line 2*
> 
> Unauthorized: You are not allowed to access 'type' in this context
> 
> 
> 
> (Example taked from
> http://www.plope.com/Books/2_7Edition/AppendixC.stx#2-28
> <http://www.plope.com/Books/2_7Edition/AppendixC.stx#2-28>)
> 
> 
> -- 
> ________________________________________
> Lo bueno de vivir un dia mas
> es saber que nos queda un dia menos de vida
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Zope maillist  -  Zope at zope.org
> http://mail.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists - 
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope-dev )



More information about the Zope mailing list