Source code for camelot.core.exception

#  ============================================================================
#
#  Copyright (C) 2007-2013 Conceptive Engineering bvba. All rights reserved.
#  www.conceptive.be / info@conceptive.be
#
#  This file is part of the Camelot Library.
#
#  This file may be used under the terms of the GNU General Public
#  License version 2.0 as published by the Free Software Foundation
#  and appearing in the file license.txt included in the packaging of
#  this file.  Please review this information to ensure GNU
#  General Public Licensing requirements will be met.
#
#  If you are unsure which license is appropriate for your use, please
#  visit www.python-camelot.com or contact info@conceptive.be
#
#  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
#  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#  For use of this library in commercial applications, please contact
#  info@conceptive.be
#
#  ============================================================================

"""Camelot specific subclasses of Exception
"""

from camelot.core.utils import ugettext_lazy as _
from camelot import test

[docs]def log_programming_error( logger, message, exc_info = None ): """Log a programming error and set the the global programming error variable to be able to detect them in unit tests. Programming error logs are generated by Camelot when something goes wrong and Camelot catches the exception and tries to continue. The global flag is set to be able to detect these issues with unit tests. :param logger: a `logging.Logger` object :param message: the message to log :param exc_info: an exception that was raised """ test.has_programming_error = True logger.error( u'ProgrammingError : %s'%message, exc_info = exc_info )
[docs]class UserException(Exception): """ Raise this exception to inform the user he did something wrong, without showing a stack trace or other internals. Raising this exception won't log stack traces either, as the occurance of this exception is considered a non-event for the developer:: from camelot.core.exception import UserException from camelot.core.utils import ugettext if not dvd.empty: raise UserException( ugettext('Could not burn movie to non empty DVD'), resolution = ugettext('Insert an empty DVD and retry') ) Will popup a gentle dialog for the user : .. image:: /_static/controls/user_exception.png """ def __init__(self, text, title=_('Could not proceed'), icon=None, resolution=None, detail=None): """ :param title: the title of the dialog box that informs the user :param text: the top text in the dialog :param resolution: what the user should do to solve the issue :param detail: a detailed description of what went wrong """ super(UserException, self).__init__(text) self.title = title self.text = text self.icon = icon self.resolution = resolution self.detail = detail
[docs]class GuiException(Exception): """ This exception is raised by the Action mechanism when the action requested something from the GUI but an unexpected event occured. The action can choose to ignore it or handle it. """ pass
[docs]class CancelRequest(Exception): """ This exception is raised by the GUI when the user wants to cancel an action, this exception is then past to the *model thread* """ pass