Commit 13ab7094 authored by Jim Fulton's avatar Jim Fulton

First crack at updating error handling to work with 1.5

parent f811e9d4
"""Document object""" """Document object"""
__version__='$Revision: 1.66 $'[11:-2] __version__='$Revision: 1.67 $'[11:-2]
from Globals import HTML, HTMLFile, MessageDialog from Globals import HTML, HTMLFile, MessageDialog
from string import join,split,strip,rfind,atoi,lower from string import join,split,strip,rfind,atoi,lower
...@@ -76,34 +76,11 @@ class Document(cDocument, HTML, Explicit, ...@@ -76,34 +76,11 @@ class Document(cDocument, HTML, Explicit,
if RESPONSE is None: return r if RESPONSE is None: return r
return decapitate(r, RESPONSE) return decapitate(r, RESPONSE)
try: try: r=apply(HTML.__call__, (self, client, REQUEST), kw)
try: r=apply(HTML.__call__, (self, client, REQUEST), kw) except:
except: if self.id()=='standard_error_message':
if self.id()=='standard_error_message': raise sys.exc_type, sys.exc_value, sys.exc_traceback
raise sys.exc_type, sys.exc_value, sys.exc_traceback return self.raise_standardErrorMessage(client, REQUEST)
error_type=sys.exc_type
error_value=sys.exc_value
tb=sys.exc_traceback
if lower(error_type) in ('redirect',):
raise error_type, error_value, tb
if (type(error_value) is type('') and
regex.search('[a-zA-Z]>', error_value) > 0):
error_message=error_value
else:
error_message=''
error_tb=pretty_tb(error_type, error_value, tb)
if client is not None: c=client
else: c=self.aq_parent
try:
s=getattr(c, 'standard_error_message')
v=HTML.__call__(s, c, REQUEST, error_type=error_type,
error_value=error_value,
error_tb=error_tb, error_traceback=error_tb,
error_message=error_message)
except:
v='Sorry, an error occured'
raise error_type, v, tb
finally: tb=None
if RESPONSE is None: return r if RESPONSE is None: return r
return decapitate(r, RESPONSE) return decapitate(r, RESPONSE)
......
...@@ -16,13 +16,14 @@ Aqueduct database adapters, etc. ...@@ -16,13 +16,14 @@ Aqueduct database adapters, etc.
This module can also be used as a simple template for implementing new This module can also be used as a simple template for implementing new
item types. item types.
$Id: SimpleItem.py,v 1.22 1998/08/03 13:32:39 jim Exp $''' $Id: SimpleItem.py,v 1.23 1998/11/23 22:57:05 jim Exp $'''
__version__='$Revision: 1.22 $'[11:-2] __version__='$Revision: 1.23 $'[11:-2]
import regex, sys, Globals, App.Management import regex, sys, Globals, App.Management
from DateTime import DateTime from DateTime import DateTime
from CopySupport import CopySource from CopySupport import CopySource
from string import join, lower from string import join, lower
from types import InstanceType, StringType
HTML=Globals.HTML HTML=Globals.HTML
...@@ -82,26 +83,34 @@ class Item(CopySource, App.Management.Tabs): ...@@ -82,26 +83,34 @@ class Item(CopySource, App.Management.Tabs):
def manage_editedDialog(self, REQUEST, **args): def manage_editedDialog(self, REQUEST, **args):
return apply(self._manage_editedDialog,(self, REQUEST), args) return apply(self._manage_editedDialog,(self, REQUEST), args)
def raise_standardErrorMessage(self, client=None, REQUEST={}, def raise_standardErrorMessage(
error_type=None, error_value=None, tb=None, self, client=None, REQUEST={},
error_tb=None, error_message=''): error_type=None, error_value=None, tb=None,
error_tb=None, error_message='',
tagSearch=regex.compile('[a-zA-Z]>').search):
try: try:
if not error_type: error_type=sys.exc_type if error_type is None: error_type =sys.exc_info()[0]
if not error_value: error_value=sys.exc_value if error_value is None: error_value=sys.exc_info()[1]
# allow for a few different traceback options # allow for a few different traceback options
if tb is None and (error_tb is None): if tb is None and error_tb is None:
tb=sys.exc_traceback tb=sys.exc_info()[2]
if type(tb) is not type('') and (error_tb is None): if type(tb) is not type('') and (error_tb is None):
error_tb=pretty_tb(error_type, error_value, tb) error_tb=pretty_tb(error_type, error_value, tb)
elif type(tb) is type('') and not error_tb: elif type(tb) is type('') and not error_tb:
error_tb=tb error_tb=tb
if lower(error_type) in ('redirect',): if lower(str(error_type)) in ('redirect',):
raise error_type, error_value, tb raise error_type, error_value, tb
if (type(error_value) is type('') and not error_message and
regex.search('[a-zA-Z]>', error_value) > 0): if not error_message:
error_message=error_value if type(error_value) is InstanceType:
s=str(error_value)
if tagSearch(s) >= 0:
error_message=error_value
elif (type(error_value) is StringType
and tagSearch(error_value) >= 0):
error_message=error_value
if client is None: client=self if client is None: client=self
if not REQUEST: REQUEST=self.aq_acquire('REQUEST') if not REQUEST: REQUEST=self.aq_acquire('REQUEST')
...@@ -182,6 +191,9 @@ def pretty_tb(t,v,tb): ...@@ -182,6 +191,9 @@ def pretty_tb(t,v,tb):
############################################################################## ##############################################################################
# #
# $Log: SimpleItem.py,v $ # $Log: SimpleItem.py,v $
# Revision 1.23 1998/11/23 22:57:05 jim
# First crack at updating error handling to work with 1.5
#
# Revision 1.22 1998/08/03 13:32:39 jim # Revision 1.22 1998/08/03 13:32:39 jim
# Made manage a redirect rather than an alias. # Made manage a redirect rather than an alias.
# #
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment