diff -r 000000000000 -r b97547f5f1fa _exceptions.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/_exceptions.py Wed Nov 05 15:52:50 2008 +0100 @@ -0,0 +1,148 @@ +"""Exceptions shared by different cubicweb packages. + + +:organization: Logilab +:copyright: 2001-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved. +:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr +""" +__docformat__ = "restructuredtext en" + +from yams import ValidationError + +# abstract exceptions ######################################################### + +class CubicWebException(Exception): + """base class for cubicweb server exception""" + msg = "" + def __str__(self): + if self.msg: + if self.args: + return self.msg % tuple(self.args) + return self.msg + return ' '.join(str(arg) for arg in self.args) + + +class ConfigurationError(CubicWebException): + """a misconfiguration error""" + +class InternalError(CubicWebException): + """base class for exceptions which should not occurs""" + +class SecurityError(CubicWebException): + """base class for cubicweb server security exception""" + +class RepositoryError(CubicWebException): + """base class for repository exceptions""" + +class SourceException(CubicWebException): + """base class for source exceptions""" + +class CubicWebRuntimeError(CubicWebException): + """base class for runtime exceptions""" + +# repository exceptions ####################################################### + +class ConnectionError(RepositoryError): + """raised when a bad connection id is given or when an attempt to establish + a connection failed""" + +class AuthenticationError(ConnectionError): + """raised when a bad connection id is given or when an attempt to establish + a connection failed""" + +class BadConnectionId(ConnectionError): + """raised when a bad connection id is given or when an attempt to establish + a connection failed""" + +BadSessionId = BadConnectionId # XXX bw compat for pyro connections + +class UnknownEid(RepositoryError): + """the eid is not defined in the system tables""" + msg = 'No entity with eid %s in the repository' + +class ETypeNotSupportedBySources(RepositoryError, InternalError): + """no source support an entity type""" + msg = 'No source supports %r entity\'s type' + +class RTypeNotSupportedBySources(RepositoryError, InternalError): + """no source support a relation type""" + msg = 'No source supports %r relation\'s type' + + +# security exceptions ######################################################### + +class Unauthorized(SecurityError): + """raised when a user tries to perform an action without sufficient + credentials + """ + msg = 'You are not allowed to perform this operation' + msg1 = 'You are not allowed to perform %s operation on %s' + var = None + #def __init__(self, *args): + # self.args = args + + def __str__(self): + try: + if self.args and len(self.args) == 2: + return self.msg1 % self.args + if self.args: + return ' '.join(self.args) + return self.msg + except Exception, ex: + return str(ex) + +# source exceptions ########################################################### + +class EidNotInSource(SourceException): + """trying to access an object with a particular eid from a particular + source has failed + """ + msg = 'No entity with eid %s in %s' + + +# registry exceptions ######################################################### + +class RegistryException(CubicWebException): + """raised when an unregistered view is called""" + +class RegistryNotFound(RegistryException): + """raised when an unknown registry is requested + + this is usually a programming/typo error... + """ + +class ObjectNotFound(RegistryException): + """raised when an unregistered object is requested + + this may be a programming/typo or a misconfiguration error + """ + +# class ViewNotFound(ObjectNotFound): +# """raised when an unregistered view is called""" + +class NoSelectableObject(RegistryException): + """some views with the given vid have been found but no + one is applyable to the result set + """ + +class UnknownProperty(RegistryException): + """property found in database but unknown in registry""" + +# query exception ############################################################# + +class QueryError(CubicWebRuntimeError): + """a query try to do something it shouldn't""" + +class NotAnEntity(CubicWebRuntimeError): + """raised when get_entity is called for a column which doesn't contain + a non final entity + """ + +# tools exceptions ############################################################ + +class ExecutionError(Exception): + """server execution control error (already started, not running...)""" + +# pylint: disable-msg=W0611 +from logilab.common.clcommands import BadCommandUsage +