How manage error with zsql
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
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@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 )
robert rottermann wrote at 2008-12-6 17:15 +0100:
I think you should write in a python script:
try: result = context.insert_data.zsql
I expect (at least) two errors here. "context.insert_data()" has a chance to work.
msg = 'data inserted' except ZeroDivisionError: msg = 'ZeroDivisionError occured'
-- Dieter
I trying the next, but not work say " invalid syntax (Script (Python), line 11)" 2008/12/6 robert rottermann <robert@redcor.ch>
hi,
I think you should write in a python script:
try: result = context.insert_data.zsql msg = 'data inserted' except StandardError as e: <-- error here msg = 'Error type %s. <br>Value: %s' % (e.type, e.value)
return msg
If change to try: result=context.proyecto_alta_zsql() msg="Se incertaron los datos correctamente" except StandardError, (e1,e2): msg = "Error valor %s y %s" % (e1,e2) return msg say Tipo: Unauthorized Valor: You are not allowed to access 'a particular str' in this context (same error with type?)
Miguel Beltran R. wrote at 2008-12-8 21:01 -0600:
I trying the next, but not work say " invalid syntax (Script (Python), line 11)"
2008/12/6 robert rottermann <robert@redcor.ch>
hi,
I think you should write in a python script:
try: result = context.insert_data.zsql msg = 'data inserted' except StandardError as e: <-- error here
The "as" should be "," instead. After the removal of this error, you will meet the next two, I have already pointed out in a message sent yesterday.
... If change to
try: result=context.proyecto_alta_zsql() msg="Se incertaron los datos correctamente" except StandardError, (e1,e2): msg = "Error valor %s y %s" % (e1,e2) return msg
say Tipo: Unauthorized Valor: You are not allowed to access 'a particular str' in this context
Already much better :-) In exceptional cases, the "(e1, e2)" might work. However, usually, exceptions are no sequences and an exception cannot be matched with "(e1, e2)". Try "except StandardError, e:" (and, of course, change the following line accordingly). Whenever you get exceptions, you should look at the error description in your "error_log" object (in the Zope "Root Folder" of the ZMI). There, you can see (in the so called traceback) where the exception has been raised. This is invaluable information. Usually, "error_log" ignores "Unauthorized". Therefore, you must temporarily reconfigure the "error_log" in order to get the information. Should you have problems to understand it, come back with the information. -- Dieter
Whenever you get exceptions, you should look at the error description in your "error_log" object (in the Zope "Root Folder" of the ZMI). There, you can see (in the so called traceback) where the exception has been raised. This is invaluable information.
-- Dieter
Thanks, another question is possible have a general except and inside show what type is? in dtml was <dtml-try> ... <dtml-except> type:<dtml-var error_type> value: <dtml-var error_value> </dtml-try> -- ________________________________________ Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Miguel Beltran R. wrote at 2008-12-9 13:42 -0600:
is possible have a general except and inside show what type is? in dtml was <dtml-try> ... <dtml-except> type:<dtml-var error_type> value: <dtml-var error_value> </dtml-try>
According to the documentation (--> embedded online documentation (aka "Help") --> Zope Help --> DTML Reference --> try), this is possible. Note, however, that unqualified "try ... except ..." is dangerous, everywhere, both in Python as well as in DTML. Formerly, exceptions have been strings. Nowadays, exceptions are class instances. I am not sure whether the DTML-try already support non string exceptions. If you observe problems, then this might be the reason. -- Dieter
*<PythonScript at /ceed/finanza/proyecto/error_insertar>* *Line 2*
Unauthorized: You are not allowed to access 'type' in this context
I think this is a know issue and be have a bugreport + patch already for that within the Launchpad bugtracker. However I cant the ticket number right now. Andreas
participants (4)
-
Andreas Jung -
Dieter Maurer -
Miguel Beltran R. -
robert rottermann