Package eggbasket :: Package controllers :: Module errorcatcher :: Class ErrorCatcher
[hide private]

Class ErrorCatcher

source code

                       object --+        
                                |        
turbogears.controllers.Controller --+    
                                    |    
turbogears.controllers.RootController --+
                                        |
                                       ErrorCatcher
Known Subclasses:

Base class for root controllers catching errors and showing error page.

To use enable custom error pages, the root controller must subclass the ``ErrorCatcher`` class and the CherryPy filter hook must be enabled by setting ``error_catcher.on = True`` in the deployment configuration.

When the error catcher is enabled and an HTML error (including an unhandled exception) occurs in the controller, an error page is displayed using a template, whose name is looked up in the ``_error_page_templates`` class attribute by the HTML status code.

Currently, there are default templates for the status codes 401, 403 and 404, called ``401_error``, ``403_error`` and ``404_error`` resp. and ``unhandled_exception`` for all other errors. The templates are searched in the ``templates`` sub-package of the application.

Also, if ``mail.on`` is ``True`` sends an email to the admin, when an error occurs. No email is sent if the HTML status code is contained in the list set by the option ``error_catcher.no_email_on``. The default is not to send emails for 401, 403 and 404 errors.

For email sending to work, at least the configuration options 'error_catcher.sender_email' and 'error_catcher.admin_email' must be set to valid email addresses.

See the docstring for the method 'send_exception_email' for more email related configuration information.

Instance Methods [hide private]
 
__init__(self, *args, **kw)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
source code
 
cp_on_http_error(self, status, message)
Handle HTTP errors by sending an error page and email.
source code
 
_cp_on_http_error(self, status, message)
Handle HTTP errors by sending an error page and email.
source code
 
send_error_page(self, **data)
Render error page using template looked up in self._error_templates.
source code
 
send_exception_email(self, **data)
Send an email with the error info to the admin.
source code
 
_send_email_by_smtp(self, from_addr, to_addr, message)
Send email via SMTP.
source code
 
_get_error_message(self, status, default=None)
Return string error for HTTP status code.
source code
 
_render_error_template(self, template, format='html', content_type='text/html', data={}) source code

Inherited from turbogears.controllers.RootController (private): _cp_log_access, _cp_log_message

Inherited from object: __delattr__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __str__

Class Variables [hide private]
  _error_codes = {None: u'Unknown Error', 400: u'400 - Bad Reque...
  _error_page_templates = {None: '.templates.unhandled_exception...
  _error_mail_templates = {None: 'cheetah:.templates.email_unhan...
  admin_group_name = 'admin'

Inherited from turbogears.controllers.RootController: accesslog, is_app_root, msglog, msglogfunc

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, *args, **kw)
(Constructor)

source code 

x.__init__(...) initializes x; see x.__class__.__doc__ for signature

Overrides: object.__init__
(inherited documentation)

send_exception_email(self, **data)

source code 
Send an email with the error info to the admin.

Uses TurboMail if installed and activated, otherwise tries to send
email with the ``smtplib`` module. The SMTP settings can be configured
with the following settings:

``mail.server``   - Mail server to connect to (default 'localhost').
``mail.username`` - User name for SMTP authentication. If the value
                    is unset or evaluates to False no SMTP login is
                    performed.
``mail.password`` - Password for SMTP authentication. may be an empty
                    string.

See also the class docstring for information on setting the
sender and recipient address.


Class Variable Details [hide private]

_error_codes

Value:
{None: u'Unknown Error',
 400: u'400 - Bad Request',
 401: u'401 - Unauthorized',
 403: u'403 - Forbidden',
 404: u'404 - Not Found',
 500: u'500 - Internal Server Error',
 501: u'501 - Not Implemented',
 502: u'502 - Bad Gateway'}

_error_page_templates

Value:
{None: '.templates.unhandled_exception',
 401: '.templates.401_error',
 403: '.templates.403_error',
 404: '.templates.404_error'}

_error_mail_templates

Value:
{None: 'cheetah:.templates.email_unhandled_exception'}